Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用scapy发送TCP握手,但wireshark中的序号是错误的?_Python_Networking_Tcp_Wireshark_Scapy - Fatal编程技术网

Python 使用scapy发送TCP握手,但wireshark中的序号是错误的?

Python 使用scapy发送TCP握手,但wireshark中的序号是错误的?,python,networking,tcp,wireshark,scapy,Python,Networking,Tcp,Wireshark,Scapy,例如,有两台主机A和B,其IP地址分别为192.168.10.132和192.168.10.138。主机A发送一个seq=1的TCP数据包,主机B回复一个ack=1和seq=2的数据包,依此类推 代码如下: send(IP(dst='192.168.10.138', src='192.168.10.132')/TCP(sport=54321, dport=32145, seq=1, flags='S')) # Host A send(IP(dst='192.168.10.132', src='

例如,有两台主机A和B,其IP地址分别为192.168.10.132和192.168.10.138。主机A发送一个seq=1的TCP数据包,主机B回复一个ack=1和seq=2的数据包,依此类推

代码如下:

send(IP(dst='192.168.10.138', src='192.168.10.132')/TCP(sport=54321, dport=32145, seq=1, flags='S')) # Host A

send(IP(dst='192.168.10.132', src='192.168.10.138')/TCP(sport=32145, dport=54321, seq=2, ack=1, flags='SA')) # Host B
但在wireshark中,捕获的第一个数据包显示seq=0


为什么会出现这种情况?或者我的代码有什么问题?

这实际上是一项功能,如中所述:

默认情况下,Wireshark和TShark将跟踪所有TCP会话,并将所有序列号(序号)和确认号(确认号)转换为相对号。这意味着Wireshark不会在显示器中显示实际/绝对序列号和确认号,而是显示与该对话的第一个可见段相关的序列号和确认号

这意味着对于每个对话中看到的第一个数据包,所有SEQ和ACK编号始终从0开始

这使得数字比实数小得多,更容易读取和比较,实数通常在SYN阶段初始化为范围
0-(2^32)-1
内随机选择的数字

如果您对某个数据包的SEQ number字段的实际值感兴趣,可以在数据包详细信息窗格中突出显示该字段,并在数据包字节窗格中查看其值

或者,wiki建议如何完全禁用该功能:

使用相对序列号是一种可用性增强,使数字更易于阅读和比较。为了将解剖与来自不太先进的分析器(不能处理相对序列号)的数据进行比较,可能需要在Wireshark中暂时禁用此功能

对于Wireshark 1.5之前的版本:当启用相对序列号首选项时,Wireshark还将启用“窗口缩放”

对于Wireshark 1.5及更新版本,“窗口缩放”是一个单独的TCP首选项,默认情况下启用

如果启用“窗口缩放”,Wireshark将尝试监控在SYN阶段协商的TCP窗口缩放选项,如果检测到此类TCP窗口缩放,Wireshark还将缩放窗口字段并将其转换为有效窗口大小。这可能会影响已解析和报告的窗口,并可能使Wireshark以不同的方式解码数据包,但比其他工具更准确

要禁用相对序列号并将其显示为实际绝对数,请转到TCP首选项并取消选中相对序列号框


谢谢您的回答。这成功地解决了我的问题!