TCP状态解读
握手+挥手过程状态变化
同时握手
双发同时发起syn请求,状态变化过程如下:
图片来源:http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-4.htm
同时挥手
4次挥手,可以理解为2次;TCP是全双工协议,双方各进行了两次处理,均需要Fin和Ack。
下面是双方同时发起关闭是的状态变化过程。
图片来源:http://www.tcpipguide.com/free/t_TCPConnectionTermination-4.htm
状态机
对比了《TCP/IP详解*卷一》、TCP RFC、The TCP/IP Guide这三份资料里面的状态变化图,
个人觉得TCP RFC、The TCP/IP Guide里面的相对好理解一些。
TCP/IP Guide:
图片来源:http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm
TCP RFC:
抓包分析
握手
参见《TCP报文格式解读》中的TCP握手过程抓包分析
挥手
参见《TCP报文分析》中的挥手抓包分析
案例分析
分享几个自己工作中碰到的具体问题
SYN被拒绝
问题现象,web访问内部的文档库(同网段),笔记本用无线可以正常访问,台式机用有线网页显示异常,笔记本切有线也正常,没有头绪,抓包分析;
台式机抓包,发送syn后收到了服务端的RST包,在服务端抓包,没有看到台式机发起的请求;
查看服务器的mac,发现和连接目标mac地址不一致。基于这个信息再排查,有两台设备配置了这个ip。
连接异常断开
问题现象,使用定向4G流量卡上网,和服务器交互时连接一直无法建立,本地抓包发现请求被服务端重置;而使用普通的流量卡上网正常;
基于这个现象大概率是定向流量卡有问题;
服务端、本地同时抓包分析同一次请求过程,上面部分是server、下面部分是本地;果不其然,服务端也收到了RST的包,符合预期。
参考资料
- The TCP/IP Guide
- tcp rfc
- TCP的那些事(上)