如果你想要使用tcpdump
抓取指定端口的流量,你可以在命令行中使用port
关键词。例如,如果你想要抓取所有到达或离开端口80的流量,你可以使用以下命令:
tcpdump-i eth0 src 172,31.12.41 and dstport 9988
sudo tcpdump -i any 'port 80'
这个命令会显示所有经过任何网络接口(-i any
)并且目标或源端口为80的数据包。
一个典型的tcpdump
输出可能如下所示:
12:34:56.789012 IP 192.168.1.2.34567 > 93.184.216.34.80: Flags [S], seq 1234567890, win 29200, options [mss 1460,sackOK,TS val 1234567890 ecr 0,nop,wscale 7], length 0
这个输出的各个字段的含义如下:
12:34:56.789012
:数据包的时间戳。IP
:数据包的协议(在这个例子中是IP协议)。192.168.1.2.34567
:源IP地址和端口号(在这个例子中,源IP地址是192.168.1.2,源端口号是34567)。>
:指示流量的方向(在这个例子中,流量从192.168.1.2发送到93.184.216.34)。93.184.216.34.80
:目标IP地址和端口号(在这个例子中,目标IP地址是93.184.216.34,目标端口号是80)。Flags [S]
:TCP标志(在这个例子中,S表示SYN标志,表示这是一个新的连接请求)。seq 1234567890
:TCP序列号。win 29200
:TCP窗口大小。options [mss 1460,sackOK,TS val 1234567890 ecr 0,nop,wscale 7]
:TCP选项。length 0
:数据包的长度。请注意,tcpdump
的输出格式可能会根据你的具体需求和tcpdump
的版本有所不同。你可以查阅tcpdump
的手册页(通过运行man tcpdump
命令)以获取更多信息。
options [mss 1460,sackOK,TS val 1234567890 ecr 0,nop,wscale 7]
表示TCP数据包中包含的一些选项。这些选项用于协商和优化TCP连接。以下是各个选项的含义:
mss 1460
:MSS(Maximum Segment Size)是TCP连接中每个数据段的最大数据量(不包括TCP头部)。在这个例子中,MSS值为1460字节。
sackOK
:SACK(Selective Acknowledgment)是一种TCP选项,允许接收方确认收到不连续的数据段,从而提高TCP连接的性能。sackOK
表示此连接支持SACK选项。
TS val 1234567890 ecr 0
:TS(Timestamp)是TCP连接中的时间戳选项,用于测量网络延迟以及避免旧数据包的错误接收。val
表示时间戳值,ecr
表示回显应答。在这个例子中,时间戳值为1234567890,回显应答为0。
nop
:NOP(No Operation)是一个填充选项,用于对齐其他TCP选项。它没有实际功能。
wscale 7
:WScale(Window Scaling)是一种TCP选项,允许双方协商更大的窗口大小,从而提高TCP连接的性能。wscale
后面的数字表示窗口扩大因子。在这个例子中,窗口扩大因子为7,表示实际窗口大小是报文中win
字段值的2^7倍。
这些TCP选项在建立TCP连接时进行协商,以确保连接双方都支持这些选项。在实际通信过程中,这些选项有助于提高TCP连接的性能和可靠性。