"吃了么?" | 一条消息的悲惨经历

网络 通信技术
下班之后,你一阵空虚,想起远方的她,倍感思念。这日子看似有尽头,但实际经历起来,却好像没有终点。

[[405615]]

下班之后,你一阵空虚,想起远方的她,倍感思念。这日子看似有尽头,但实际经历起来,却好像没有终点。在别人欢乐的时候,你却有自己的忧伤;在你高兴的时候,有人却在经历生死的考验。

人与人之间的悲喜并不同步,但此时,你就想找个人聊天。心中有千言万语,到最后却无力吐露,深思熟虑之后,你掏出了自己的手机。

“吃了么?”

三个方块大字,带着既好奇又关心又忐忑的标点符号,冲破无尽的阻碍,冲了出去。

[[405616]]

感情不需要言语,这个时候,忠实的互联网传播了你的忧伤和眷恋。你并不是麻花家族员工,但你隐约的猜到了数据的传播过程。在远方的她回复之前,你脑子里虚构了整个的过程。

合情合理,但为什么又感到一丝丝上头的悲伤。

看不懂的密文

你用的是华为手机,并没有使用苹果手机,因为你觉得只有她才配;你也没有升级鸿蒙系统,因为你认为那是瞎折腾的智商税。在各种红粉绿粉沸腾的时候,你只关心你的消息能不能到达。

即使是这么普通的三个字,你也不希望它像裸体一样被其他人观看。事实上,你的信息是通过加密通道传输的。由于你使用了你的账户密码进行了登录,所以这条连接,就已经存在了。

你长舒一口气,终于不TM再想一次那老掉牙的四次变三次的握手了。

这条连接应该是HTTPS的,每一个连接,生成了唯一的加密密钥。别人看到了也不知道你再说啥,发言自然放心。虽然后台有私钥的程序员能看到,但大家都忙着赚钱,谁关心你这点屁事呢?

[[405617]]

 

此时,“吃了么?”会被加密成一串看不懂的报文,发送出去。这是一串TLS协议格式的数据,工作在应用层。

接下来,数据将在传输层进行传输,也就是TCP,你手机上的ip+端口号,加上服务器端的ip+端口号,构成了你们幽会的秘密通道。

奔跑吧,数据包

由于你连接的是自己的Wifi,所以你的IP地址还进行了一层PNAT转换,路由器最终把绑定在公网的IP,加上某个端口,映射到你的192网段IP,躲在路由器背后的你,竟感觉到莫名的安全感。

但是下层的网络层(IP协议),可没有什么端口号之称,你的网络包,都会被你的路由器直接发送出去。此时的端口号,已经变成了IP协议的报文内容。即使是光速,等传递到服务器的时候,端口号存在不存在,也是个未知数。其实,连这条连接的存在与否,都是个未知数。

你以为的连接,是一条直线,A和B之间稳固的一塌糊涂,但其实它只是两个点。一个点,永远无法在同一时间知晓另外一个点此时是否存活。有时候,如果没有心跳,一个点会永远的傻傻的等在那里。

海上生明月,天涯共此时?你摇了摇头,这种哲学问题,还是交给龙泉寺的方丈去想吧。IP协议通过我尽力的方式去发送信息,根据路径节点上的路由表横冲直撞,接力赛跑。说不定哪个不靠谱的节点,就把你可爱的数据包给搞丢了;或者RIP达到了15,你的数据包就被那样无情的丢掉了。

还好传输层的TCP有重传机制,ACK确保了数据包,也确保了你的爱。

然后终于到了不讲道理的连接层,因为此时,连IP地址都变成了报文,因为在这里的传输,根本不讲道理,就是赤裸裸的Frame(以太网帧)。你的数据包就是以这种原始的数据,发送了出去。

接下来的事情我们就都知道了,物理层网卡用高电压表示1,低电压表示0,最终生出了万物。

[[405618]]

但是等等,事情并没有这么简单,没有这么顺畅。

原因就在于传输层的TCP,并不是直接把数据写到网卡,它还有一个缓冲区,比如SO_SNDBUF就表示设置套接字发送方的缓冲区大小。在对端返回ACK之前,这个缓冲区会一直存在,它不像UDP一样那么无情。

所以缓冲区这玩意儿,硬生生的在TCP之前插了个队,属于乱入的电灯泡。

嗯,是时候发送缓冲区了。由于缓冲区是在内存里,这里就是把内存的数据发往网卡的过程。TLS包在用户态生成TCP报文,发送缓冲区的时候要切换成内核态。

通过一系列的封装和网卡驱动的转换,将sk_buff搞到网卡上去。

谁去发送呢?CPU不屑于干这种活,那就通过中断交给DMA吧,CPU可以有时间去干更有意义的事情。

解包

经过99八十一难,服务器的网卡接收到相关的数据包。

它发现,目标机器,竟然是一台LVS负载均衡。

通过路由查找,它发现,后面是一台Nginx服务器。

不好意思,Nginx后面竟然是一个二层的微服务网关。

微服务网关后面,赫然有多台机器在那里伺服者,等君入瓮。

通过负载均衡策略,终于定位到了某台机器。

拿到你的用户ID,系统打算查询另外一个微服务模块组装你的个人信息,比如头像。

终于,它要处理“吃了么?“几个字了,非常的激动人心。

这条消息,会有什么效果呢?她会回复你么?还是会落入无尽的虚空?

终于,有回复了。

竟然是那伤人的一串字:”XX开启了好友验证,你还不是她的好友....“。

也好,就让整个链路上的机器们,少几次交互,多休息一下吧。

你狠狠的踢了一下脚下的猫,心想。

 

 

责任编辑:赵宁宁 来源: 小姐姐味道
相关推荐

2023-10-16 18:39:22

2022-04-13 18:24:22

Nacos客户端存储

2022-07-31 22:07:03

宕机业务场景

2010-04-13 16:57:01

2023-10-06 15:29:07

MySQL数据库更新

2011-03-21 17:19:12

LAMPUbuntu

2019-03-28 10:09:49

内存CPU硬盘

2023-06-18 23:13:27

MySQL服务器客户端

2009-08-05 10:43:19

CISSPBCPDRP

2022-10-12 07:38:24

SQL语句异常

2022-04-02 15:55:21

中国互联网互联网公司发展史

2021-08-30 05:47:12

MySQL SQL 语句数据库

2011-06-24 09:20:04

编程语言

2021-04-16 07:04:53

SQLOracle故障

2011-12-29 20:58:46

Windows Pho

2011-05-12 14:43:57

MYSQL

2012-05-17 09:33:19

虚拟化BYOD桌面虚拟化

2016-06-14 10:01:12

2013-12-09 13:18:36

大数据营销

2023-09-01 14:07:00

ChatGPTGPT数据分析
点赞
收藏

51CTO技术栈公众号