TCP协议time_wait

因为TCP连接是双向的所以只有两个放行的连接都关闭了这个连接才算终止,首先A主机发送控制信息FIN包给B主机关闭A主机到B主机放行的连接,然后B主机回复ACK包这时A主机到B主机放行的连接关闭,A主机不能向B主机发送数据,但B主机可以向A发送数据,因为B主机到A主机方向的连接没有关闭。接下来B主机向A主机发送FIN包请求关闭B主机到A主机方向的连接,当A主机回复ACK后完成TCP四次挥手,这时还有一个time wait时间,因为TCP是可靠的协议,要保证B主机能收到ACK包则A主机会起一个2MSL定时器时间是2分钟,这就是TCP协议的time_wait,time_wait一般出现在主动发起断开连接的一段,可能因为线路或者阻塞的原因B主机没有收到A主机的ACK包,这时B主机还要发送FIN包给A主机,time wait就是为了防止B主机没有收到A主机的ACK包而设计,一般是首先发起方tiem wait,也就是time wait时间内套接字不会被释放会占用端口,这也是我们关闭一个套接字又马上去绑定而报端口被占用的原因。

TCP四次挥手

猜你喜欢

转载自blog.csdn.net/City_of_skey/article/details/85037740