从输入URL到页面展示到底发生了什么?–02 握手的故事:三次握手详解

合集 – 浏览器(2)

1.从输入URL到页面展示到底发生了什么?–02 握手的故事:三次握手详解07-212.为什么必须使用三次握手?07-21

收起

在这个数字化时代,网络通讯就像人类之间的交流,需要一种方式来确保彼此能够顺利对话。在计算机网络中,TCP三次握手就是这样一种确保双方通信顺畅的机制。今天,我们将通过一个生动有趣的故事来讲解这个重要的过程。

引子:约会前的准备

想象一下,你要和朋友约个饭,但由于时间久了彼此不太确定对方的电话号码是否还在用。因此,你们需要确认彼此能联系上。这就像TCP三次握手的前奏。

第一握:SYN(Synchronize)

某天,小明想约小红吃饭。小明拿起电话,拨通了小红的号码,这是第一次尝试联系。对于TCP协议来说,这个过程就是客户端发送一个SYN包。

sequenceDiagram
    participant Client as 小明 (Client)
    participant Server as 小红 (Server)
    Client->>Server: 发送SYN包 (小明拨号)

在技术层面上,小明发送的这个SYN包包含了一个序列号,用来标记接下来的通信序列。

第二握:SYN-ACK(Synchronize-Acknowledge)

小红接到了电话,她想确认对方是小明,并且同意和他见面。于是,她给小明回了个电话,这个电话里说:“嘿,小明,是你吗?我这边是小红,可以通话。” 这相当于服务器接收到SYN包后,发送一个SYN-ACK包。

sequenceDiagram
    Server-->>Client: 发送SYN-ACK包 (小红回拨电话)

 

在技术上,小红的SYN-ACK包不仅确认了小明的请求,还附带了自己的序列号,表示她也准备好了通信。

第三握:ACK(Acknowledge)

小明接到了小红的回拨电话,现在他确认了对方是小红。于是,他对小红说:“好的,那我们见面吧!” 这就是客户端发送的ACK包,确认了整个通信过程。

sequenceDiagram
    Client->>Server: 发送ACK包 (小明确认)

 

在技术上,这个ACK包告诉小红,小明已经收到了她的回应,一切就绪,正式通信可以开始了。

握手后的正式通信

现在,小明和小红已经确认了彼此的身份,并且都准备好进行对话。他们可以畅所欲言,分享彼此的生活趣事,畅聊一顿愉快的午餐。

sequenceDiagram
    Client->>Server: 正式通信开始 (小明和小红聊天)
    Server-->>Client: 正式通信开始 (小明和小红聊天)

 

 

三次握手的技术细节

回到技术角度,TCP三次握手确保了数据传输的可靠性和顺序性:

第一次握手(SYN):客户端向服务器发送一个SYN包,请求建立连接,并带有一个初始序列号。
第二次握手(SYN-ACK):服务器接收到SYN包后,回应一个SYN-ACK包,确认收到请求并发送自己的初始序列号。
第三次握手(ACK):客户端接收到SYN-ACK包后,发送一个ACK包,确认连接建立。

为什么需要三次握手?

三次握手的主要目的是防止重复的连接初始化。如果没有三次握手,那么可能会出现服务器误以为客户端要重新建立连接的情况,从而导致资源浪费和错误的数据传输。

 

握手资源不要浪费

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...