码迷,mamicode.com
首页 > 其他好文 > 详细

TCP的三次握手和四次挥手精简易懂版

时间:2020-01-02 18:35:22      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:div   并且   fun   load   连接错误   container   生成   三次握手   seq   

先上个TCP三次握手和四次分手的图

网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解。

技术图片
技术图片

 

详解如下,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思

SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个:

SYN:代表请求创建连接,所以在三次握手中前两次要SYN=1,表示这两次用于建立连接,至于第三次什么用,在疑问三里解答。

FIN:表示请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为TCP的连接是双向的,所以一次FIN只能关闭一个方向。

ACK:代表确认接受,从上面可以发现,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后的发送数据时,都需加上ACK=1,来表示数据接收成功。

seq:序列号,什么意思呢?当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接受方才能对数据包进行再次拼接。

初始序列号是随机生成的,这样不一样的数据拆包解包就不会连接错了。(例如:两个数据都被拆成1,2,3和一个数据是1,2,3一个是101,102,103,很明显后者不会连接错误)

ack:这个代表下一个数据包的编号,这也就是为什么第二请求时,ack是seq+1,

(这里要吐槽一下,当初不懂的时候查资料,发现好多地方把ACK和ack都搞混了,害的我被坑了好久...)

如果你仔细看了上面对每个字符的解释,那么相信我画的三次握手和四次分手的图你也就明白了。

TCP的三次握手和四次挥手精简易懂版

标签:div   并且   fun   load   连接错误   container   生成   三次握手   seq   

原文地址:https://www.cnblogs.com/dg-123/p/12134153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!