TCP协议之TIME_WAIT状态
来源:互联网 发布:win10突然软件都打不开 编辑:程序博客网 时间:2024/05/04 17:41
上次面试linux软件开发工程师,以为自己比较了解TCPIP,没想到被问到TCP协议中TIME_WAIT状态的时候,却不能回答,下面总结一下整个过程:
其实面试官问得还是挺细的,TCP三次握手,相信很多人都懂,但是TCP如何关闭链接的,不知道是否有人关注过,传说中的四次握手?算是吧,不过上面问的是在关闭过程中客户端的套接字状态,其实就是客户端在关闭TCP连接中的状态变化,以下是套接字主动和被动关闭的两个过程:
主动关闭的过程:TIME_WAIT1->TIME_WAIT 2->CLOSED
被动关闭的过程:CLOSE_WAIT->CLOSED
不同的应用层协议,关闭过程可能不同,但是大同小异,比如http关闭的过程是服务器先发出关闭申请,而ftp是客户端发出申请,以下是客户端主动发出关闭申请的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,端口号可能跟现在的不一样,服务器就会认为是另外的端口号发来的,从而出现数据混乱。
- TCP协议之TIME_WAIT状态
- TCP协议之TIME_WAIT状态
- TCP协议之TIME_WAIT状态
- tcp 协议TIME_WAIT状态详解
- TCP/IP 协议 TCP TIME_WAIT状态
- TCP IP之TIME_WAIT状态
- TCP之TIME_WAIT状态原理
- TCP协议的TIME_WAIT状态详解
- TCP协议的TIME_WAIT状态详解
- TCP协议的TIME_WAIT状态详解
- TCP协议的TIME_WAIT状态详解
- TCP协议的TIME_WAIT状态详解
- TCP协议--TIME_WAIT状态
- TCP协议--TIME_WAIT状态
- 12-TCP 协议(TIME_WAIT 状态)
- TCP状态 + TIME_WAIT状态
- TCP/IP 协议 TCP TIME_WAIT状态(2MSL)
- 网络:TCP通讯之 time_wait 状态
- QT 提取中英文翻译
- poj 计算几何题全集(转)
- 版本控制器--SSH key 生成(gitorious)
- 软件中bin文件夹
- gedit显示中文乱码解决方案
- TCP协议之TIME_WAIT状态
- 应用于海量存储中高度容错的新编码方案
- POJ数学题目
- 中国佛学66句震撼世界的禅语
- 搜索题目推荐及解题报告(转)
- 下载服务器优化--自动下载,移动,部署。(imvipdlsvr)
- C# 使用SQLite数据库 之 读写数据库
- Matrix的操作
- MFC学习之路(三)CPropertyPage调用UpdateData()的时候崩溃