主页 > 人工智能  > 

浅谈TCP三次握手


文章目录 三次握手

三次握手

首先我们需要明确,三次握手的目的是什么? 是为了通信双方之间建立连接,然后传输数据。

那么建立连接的条件是什么呢? 需要确保通信的双方都确认彼此的接收和发送能力正常,满足这个条件,就可以建立连接了。

那么怎么保证“通信的双方都确认彼此的接收和发送能力正常”? 我们将 TCP 中的这个问题,带入到现实生活中。

假设 A 和 B 打电话,正式谈业务前,一定会先互相确认对方能不能听到自己说话,和自己能不能听到对方说的话。 看如下场景:

① A:喂喂,能听到我说话吗 【此时 B 知道自己的接收能力ok,也知道 A 的发送能力ok】 ② B:我能听到,你能听到我说话吗 【此时 A 知道自己的 接收/发送 能力ok,也知道 B 的 接收/发送 能力ok】 ③ A:我能听到你说话 【此时 B 知道了自己的 接收/发送 能力ok,A 的 接收/发送 能力也ok】

以上的三次对话,就确定了双方的通信(接收/发送)能力是正常的,可以建立连接了。

有人会问,第 ② 步,A 已经知道了 " A 的 接收/发送 能力ok,也知道 B 的 接收/发送 能力ok",是不是可以建立连接传输数据了? 其实还不行,因为在第 ② 步的时候,B 还不知道自己的发送能力是否ok,所以还需要第三次询问。

把以上生活中谈业务的场景,再带入到 TCP 三次握手,也是一样的逻辑,只不过 三次握手 多了一些标志位( ACK / SYN )和状态切换。

如下图: SYN:专门用于建立连接的标志位,n 表示 client 请求中携带的数据包的编号(随机值),数据包大小是 0。 ACK:确认标志位,表示收到了请求。 ACK n + 1 表示 server 端收到了 client 发送的第 n 个数据包,+1 表示也收到了 client 发送的 SYN 标志位。 ACK m + 1 表示 client 端收到了 server 发送的第 m 个数据包,+1 表示也收到了 server 发送的 SYN 标志位。

以上就是 三次握手 的核心思想,始终记住,握手的目的是为了**互相确认双方的 接收/发送 能力是否正常**,为建立连接做准备。

标签:

浅谈TCP三次握手由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“浅谈TCP三次握手