TCP三次握手四次挥手
2022-04-06 15:13:51 1 举报
tcp
作者其他创作
大纲/内容
4位首部长度
客户端
第三次握手ACK=1ack=20001
16位紧急指针
服务器
seq是序列号ack是确认序列号ACK是确认标志位SYH是请求建立连接标志位FIN是请求断开连接标志位
16位源端口号
ACK
2.为什么TIME_WAIT状态需要等待2MSL才能返回到CLOSE状态虽然讲道理在四次挥手结束之后就可以立刻断开连接,进入CLOSE状态,但是我们必须假设网络是不可靠的,有可能最后一个ACK会丢失,所以TIME_WAIT就是用来准备重发可能丢失的ACK报文,在客户端发出最后的ACK回复之后,但是这个ACK可能会丢失,服务器端如果没有收到ACK,将不断重复发送FIN片段,所以客户端不能立即关闭,他必须在按确认服务器收到这个ACK之后才能关闭,所以客户端会设置计时器,等到2MSL时间,如果这个时间段收到FIN,那么客户端就会重发ACK再次等待2MSL。如果直到2MSL客户端都没有收到新的FIN,那么客户端就默认服务器已经接受ACK,则结束TCPMSL是指一个片段在网络中的最大存活时间,2MSL就是一个发送和回复所需要的最大时间。
16位窗口大小(用于流量控制,窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端期望的字节数)
第二次挥手ACK=1ack=10001
第四次挥手ACK=1ack=20001
16位检验和(检验数据的正确性)
保留(6位)
1.为什么是挥手是四次,但是握手确实三次 可以发现在挥手时候,FIN位和ACK是分开发的,因为服务器收到FIN报文后,不会立即关闭socket,所以先回复ACK报文,告诉客户端收到请求关闭的消息了,只有等到服务器把所有报文发送完后,才会发送FIN位的报文,所以需要四次。在握手时,服务器端收到SYN请求后,可以直接回复ACK和SYN报文,其中ACK报文是用来应答的,SYN是用来同步的。
URG
16位目的端口号
PSH
数据
选项
32位确认序号(接收者回复的ACK序号,是发送者下一个数据段的序号,代表的意思是收到该序号之前的数据段)
第三次挥手FIN=1seq=20000
第二次握手SYN=1seq=20000ACK=1ack=10001
32位序号(对每个数据段进行标记,标记这个数据段在某个数据中的位置)
FIN
SYN
第一次挥手FYN=1seq=10000
RST
第一次握手SYN=1seq=10000
0 条评论
回复 删除
下一页