欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是网络协议方面的经验知识教程:TCP协议之TIME,下面是详细的分享!
TCP协议之TIME
上次面试linux软件开发工程师,以为自己比较了解TCPIP,没想到被问到TCP协议中TIME_WAIT状态的时候,却不能回答,下面总结一下整个过程:
其实面试官问得还是挺细的,TCP三次握手,相信很多人都懂,但是TCP如何关闭链接的,不知道是否有人关注过,传说中的四次握手?算是吧,不过上面问的是在关闭过程中客户端的套接字状态,其实就是客户端在关闭TCP连接中的状态变化,以下是套接字主动和被动关闭的两个过程:
主动关闭的过程:TIME_WAIT1->TIME_WAIT 2->CLOSED
被动关闭的过程:CLOSE_WAIT->CLOSED
不同的应用层协议,关闭过程可能不同,但是大同小异,比如http关闭的过程是服务器先发出关闭申请,而ftp是客户端发出申请。

1、客户端是调用函数close(),这时,客户端会发送一个FIN给服务器。
2、服务器收到FIN,关闭套接字读通道,并将自己状态设置为CLOSE_WAIT(表示被动关闭),并返回一个ACK给客户端。
3、客户端收到ACK,关闭套接字写通道
这是两次握手,接下来,服务器会调用close()
1、服务器close(),发送一个FIN到客户端。
2、客户端收到FIN,关闭读通道,并将自己状态设置成TIME_WAIT,发送一个ACK给服务器。
3、服务器收到ACK,关闭写通道,并将自己状态设置为CLOSE。
4、客户端等待两个最大数据传输时间,然后将自己状态设置成CLOSED。
TIME_WAIT状态的作用:
1、保证全双工通信可靠关闭:如果不设置TIME_WAIT状态,直接设置成CLOSED状态,那么服务器得不到回复,会一直发送FIN给客户端。
2、保证这次连接的重复数据段从网络中消失。如果不设置,那么最后一个回复的时候,需要建立一个socket,端口号可能跟现在的不一样,服务器就会认为是另外的端口号发来的,从而出现数据混乱。
摘自 z_shaowu的专栏
以上就是关于TCP协议之TIME的网络协议知识分享,更多电脑教程请移步到>>电脑教程。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
