Linux 网络抓包

本文通过实际例子演示如何使用Linux下的tcpdump工具进行网络程序调试,以检查C++程序监听本地端口8889与newlisp程序的TCP通信情况。通过参数-i3指定监听网络接口lo,-tcpport8889设置监听端口,-v以16进制和ASCII文本显示网络包数据。实例展示了如何解析网络传输数据,包括时间戳、传输方向、应用层字节等信息。
摘要由CSDN通过智能技术生成

调试网络程序时,通常需要抓包分析。Linux下的tcpdump就很好。

Ubuntu下默认已经安装。下面先举个实际的例子.

比如我有一个C++程序监听本地端口8889, 另一个newlisp程序通过TCP和其通信。

首先可以检查一下有几个网络接口。

root@dean-GA-MA790XT-UD4P:~# tcpdump -D
1.eth0
2.any (Pseudo-device that captures on all interfaces)
3.lo

由于是本机运行,都是通过lo接口,因此后面参数用-i 3.

-i 3 代表监控的是网络接口lo。 现在启动tcpdump

tcpdump -i 3 tcp port 8889 -v -XX


-XX表示用16进制和ASCII文本显示网络包的数据。

21:19:40.151304 IP (tos 0x0, ttl 64, id 37956, offset 0, flags [DF], proto TCP (6), length 56)
    localhost.8889 > localhost.55131: Flags [P.], cksum 0xfe2c (incorrect -> 0x8dc0), seq 41:45, ack 117, win 342, options [nop,nop,TS val 728981 ecr 723761], length 4
	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
	0x0010:  0038 9444 4000 4006 a879 7f00 0001 7f00  .8.D@.@..y......
	0x0020:  0001 22b9 d75b 5a53 9f4c d8c4 bded 8018  .."..[ZS.L......
	0x0030:  0156 fe2c 0000 0101 080a 000b 1f95 000b  .V.,............
	0x0040:  0b31 0100 3355  

首先显示了时间,然后可以看到数据传输方向,从C++->newlisp程序。还可以看到应用层传输的字节数目是4.

最后可以看到0100 3355 就是发出来的4个字节。

其他很多字节应该是TCP协议自身需要的数据。不做深究。


最后给一个文章,演示了很多好的用法。可能需要翻墙。

http://www.thegeekstuff.com/2010/08/tcpdump-command-examples/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值