对于网络工作者,wireshark有着瑞士军刀的美誉。在前期的使用过程中,使用最多的情景:看数据有没有丢失。这里记录Wireshark的深入学习
tcp三握手wireshark数据:
Tcp数据中的Seq(数据包序列号),Ack(确认号),Len(数据包长度)关系:
当前包Seq = 上一包Seq + 上一包Len
ACK中的确认号,是发送这一个ACK的一端所期待的另一端数据包序列号Seq。
数据包从117.136.81.219 发送到 115.28.150.86
包序号:37137 seq = 1, len = 1460
包序号:37138的seq = 37137 的 seq + 37137 的 len = 1461
同理可以知道包序号 37142,37143都是正确的
数据包从115.28.150.86 发送到117.136.81.219
包序号:37139 seq = 1, len = 0
包序号:37144的seq = 37139 的 seq + 37139 的 len = 0
同理可以知道包序号 37195,37200都是正确的以包序号37139的 ack=2921,它表示希望下一包从117.136.81.219发送给115.28.150.85的数据的序列号seq=2921
而包序号37142的序列号正好是2921
tcp 四挥手
下面列举连个异常关闭的例子:
这里可以发现只发现了tcp层的挥手数据,这就意味着只有117.136.81.177端调用了close,而115.25.150.86却无挥手数据,有可能是它没有调用close接口函数。
这里可以看到115.28.150.86存在挥手数据,而117.136.81.177没有挥手数据,却发现多了一条RST(复位数据),这里可能是117.136.81.177在使用close时,其socket的接收缓存存在数据未接收完,导致发送了RST报文,详细可参考Tcp RST指令。