TCP协议中的3次握手和4次挥手

TCP协议中的3次握手和4次挥手

报文

在这里插入图片描述

序号Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序列,计算机发送数据时对此进行标记。
确认号Ack(Acknowledge Number)确认号占32位,客户端和服务端都可以发送,Ack=Seq+1。
标志位:每个标志位占用1Bit,共有6个,分别为URG,ACK,PSH,RST,SYN,FIN。
SYN:建立一个连接
FIN:断开一个连接

3次握手

在这里插入图片描述

为什么要有第三次的握手
防止已失效的连接请求报文突然又传到了服务端而产生错误

4次挥手

在这里插入图片描述

为什么要有第三次挥手,不能第二次和第三次合在一起吗?
当服务端接收到客户端的关闭连接请求时,可能不能立即连接(数据没有发送完毕),只能先回复一个ACK报文,表示你的请求我接收到了。只有当服务端所有的报文都发送完毕了,才会向客户端发送FIN报文。

为什么第四次挥手要等待2MSL时间?
第一,为了保证服务端能接收到最后一个ACK报文。如果服务端没有收到最后的ACK报文,就会向客户端重新发送FIN片段,客户端会在2MSL时间内接收到这个报文,接着给出回应报文并会重启2MSL时间。
第二,为了防止失效的连接请求传到服务端而产生的错误,就和第三次握手一样。

在TIME_WAITE状态时,两端的端口不能使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。
在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值