TCP连接状态图解析
来源:互联网 发布:数据库精品课程 王珊 编辑:程序博客网 时间:2024/04/29 09:15
TCP状态图,展示的是TCP从连接建立到连接关闭的整个生命周期,TCP的状态转换以及处理流程。TCP面向的是端口,Linux里面可以通过netstat -a
命令查看连接状态。笔者遇到Tomcat生成大CLOSE_WAIT状态的连接问题,故想了解一下TCP的连接机制。
TCP状态图纵览
TCP连接本质是点对点的,理论上无所谓服务器,客户端。不过总得有一个进程等待在那里,对外提供连接的服务,就称之为服务器。
下图是来源于Wikipedia的状态图,蓝线表示服务器的运行线路,棕色描述客户端。
总的来说,状态共4个。连接中、已连接、断开连接中、已断开。由于客户端,服务器角色,以及连接和断开的多步过程,使得状态图有点复杂。下面尝试拆开来看看。
TCP建立连接过程
TCP连接,三步握手,大家应该都很熟悉。
- 客户端发出SYN连接请求, Sequence设置为一个随机数A。
- 服务端回应SYN-ACK,ACK内容设置为A+1,Sequence设置为一个随机数B。
- 客户端回应ACK,ACK内容设置为B+1,Sequence设置为A+1。
TCP关闭连接过程
TCP关闭连接,4步握手。
过程很简单,不再详述。值得注意的是主动发起关闭连接的一方,4步完成之
后,会等待一个超时时间再真正的关闭。
Server端典型状态图
文章开始提到的Tomcat服务器产生大量CLOSE_WAIT的问题,是由于Tomcat没有主动发送最后的FIN消息。进一步追踪,发现Client端连接HTTP的Header其中一个为是,Connection: keep-alive,造成服务器未正常关闭连接。
Client端典型状态图
示例
参考资料
- Wikipedia
- 《Computer Networks》
1 0
- TCP连接状态图解析
- TCP连接状态图解析
- TCP连接状态图解析
- 【业务知识】TCP连接状态图解析
- TCP/IP连接状态图
- TCP/IP连接状态图
- TCP/IP连接状态图
- TCP/IP连接状态图
- TCP连接状态图
- TCP 连接状态图
- TCP 连接关闭状态图
- tcp 状态图 解析
- TCP 连接状态图 (TCP Connection State Diagram)
- TCP 连接状态图 (TCP Connection State Diagram)
- TCP 连接状态图 (TCP Connection State Diagram)
- TCP连接分组交换状态图显示
- tcp 状态图
- tcp状态图
- HDOJ 5645-DZY Loves Balls【模拟】
- Mac下新安装的MySQL无法登陆root用户解决方法
- 非递归中序先序遍历
- IT忍者神龟之DWR3常见错误解决方法
- C 风格字符串
- TCP连接状态图解析
- ActiveX、COM、OLE的关系
- hdu1080 带权值的LCS
- oracle数据库用户、表空间创建、删除、授权
- 结构体加typedef与不加typedef的使用区别
- 【转】ORA-12154: TNS: 无法解析指定的连接标识符
- 【WebService开发】其他调用webservice的方法
- Mybatis的优缺点——个人观点(勿喷)
- 推荐系统(1)—推荐系统评测