tcpdump移植

本文介绍如何将网络编程工具tcpdump移植到嵌入式系统中,并提供详细的交叉编译步骤及常见错误解决方案。此外,还展示了如何在目标设备上运行tcpdump进行网络数据包捕获。

本文介绍嵌入式网络编程常用工具tcpdump的移植和使用方法:

 

下载源码:

http://www.tcpdump.org/

 

交叉编译:

1. 先编译libpcap-1.7.4:

./configure --prefix=/home/liaojunjun/test/libpcap-1.7.4/install --host=arm-linux --target=arm-linux CC=/home/liaojunjun/ambalink_sdk_3_10_20160503/output.oem/a9s_ambalink/host/usr/bin/arm-linux-gnueabihf-gcc

 

错误:configure: error: pcap type not determined when cross-compiling; use --with-pcap=...

解决:注释以下代码

#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# as_fn_error $? "pcap type not determined when cross-compiling; use --with-pcap=..." "$LINENO" 5
#fi

 

mkdir install

make

make install

 

2. 再编译tcpdump-4.7.4

./configure --prefix=/home/liaojunjun/test/tcpdump-4.7.4/install --host=arm-linux --target=arm-linux CC=/home/liaojunjun/ambalink_sdk_3_10_20160503/output.oem/a9s_ambalink/host/usr/bin/arm-linux-gnueabihf-gcc

make

make install

 

3. 把生成的tcpdump文件在设备上执行(install/sbin/

./tcpdump port 8553 -w port8553.cap

抓包生成文件port8553.cap

 

 

### 3. Linux 下如何监控网络通信数据 在 Linux 系统中,监控网络通信数据是网络调试、性能优化和安全审计的重要手段。可以通过命令行工具、系统内核接口以及第三方抓包软件实现对网络通信的全面监控。 #### 3.1 使用 `ss` 命令查看连接状态 `ss`(Socket Statistics)命令用于显示网络连接、路由表、接口统计信息等。它可以替代 `netstat` 并提供更快的性能和更简洁的输出。例如: - 查看所有建立的 TCP 连接(不包括监听端口): ```bash ss -tna ``` - 查看主机监听的 TCP 端口信息: ```bash ss -tnl ``` 这些命令可用于快速识别当前活跃的连接和监听端口,适用于日常网络状态检查 [^1]。 #### 3.2 使用 `nc` 和 `nmap` 扫描开放端口 `nc`(Netcat)和 `nmap` 是用于端口扫描和网络调试的常用工具。`nc` 可用于测试目标主机的端口是否开放: ```bash nc -zv 192.168.1.1 22 ``` 而 `nmap` 可用于更全面的端口扫描和网络发现: ```bash nmap -sT 192.168.1.1 ``` 这些工具可用于检测本地或远程主机上开放的网络服务 。 #### 3.3 使用 `ping` 监控网络连通性 `ping` 命令可用于测试主机之间的网络连通性和延迟情况。其常用选项包括: - 指定发送包的次数: ```bash ping -c 4 google.com ``` - 设置包的大小: ```bash ping -s 1000 google.com ``` 通过 `ping` 的输出可以判断网络是否稳定,是否存在丢包或延迟过高的情况 [^2]。 #### 3.4 使用 `tcpdump` 抓包分析 `tcpdump` 是 Linux 系统中常用的命令行抓包工具,能够捕获和分析网络接口上的数据包。例如: - 抓取指定接口上的所有通信数据: ```bash sudo tcpdump -i eth0 ``` - 将抓包数据保存为 pcap 文件供后续分析: ```bash sudo tcpdump -i eth0 -w capture.pcap ``` 该工具适用于网络故障排查、协议分析和安全审计等场景。 #### 3.5 使用 Wireshark 实现远程抓包 Wireshark 支持通过 `rpcapd` 协议实现远程抓包。在 Linux 系统上安装并运行 `rpcapd` 服务后,可以在本地运行 Wireshark 捕获远程主机的网络通信数据: ```bash sudo rpcapd -n ``` 然后在本地 Wireshark 中选择远程接口进行抓包。这种方式适用于跨网络环境的调试和监控 [^3]。 #### 3.6 使用 `sar` 监控网络性能 `sar` 是 `sysstat` 工具集的一部分,可用于收集和报告系统活动,包括网络接口的统计信息: ```bash sar -n DEV 1 5 ``` 该命令每秒输出一次网络接口的收发数据速率,适用于长期监控网络 IO 性能 [^2]。 #### 3.7 字节序转换在网络通信中的作用 在网络通信中,不同主机可能使用不同的字节序(大端或小端)。TCP/IP 协议栈规定使用大端字节序传输数据,因此在处理网络数据时,应用程序需使用 `htonl`、`htons`、`ntohl`、`ntohs` 等函数进行字节序转换,以确保数据正确解析 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值