TCP三次握手/四次挥手的作用
2013-07-22 22:40
369 查看
1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。
2.为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态? 这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。
2.为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态? 这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。
相关文章推荐
- TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用
- TCP详解(三次握手/四次挥手详解)
- 20170906_我是如何讲清楚TCP的三次握手和四次挥手的
- socket的TCP的三次握手&&四次挥手
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- TCP协议中的三次握手和四次挥手(图解)
- tcp 三次握手和四次挥手
- TCP协议中的三次握手和四次挥手(图解)
- TCP协议中的三次握手和四次挥手(图解)
- TCP的三次握手和四次挥手
- 理解TCP/IP三次握手与四次挥手的正确姿势
- TCP的三次握手与四次挥手
- TCP的基本概念三次握手,四次挥手
- TCP协议的三次握手和四次挥手过程
- TCP协议中的三次握手和四次挥手图解
- TCP协议的"三次握手"和"四次挥手"
- TCP三次握手/四次挥手
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- TCP的三次握手和四次挥手
- TCP 三次握手和四次挥手(使用Wireshark进行抓包查看)