软件无线电实例:UDP 数据报生成与分析
本节以一个简单例子展示如何使用自定义的 sock 程序生成 UDP 数据报,并利用 tcpdump 工具观察数据报内容。
步骤一:生成 UDP 数据报
在 bsdi 系统上,我们使用以下命令生成 UDP 数据报:
# 第一次执行
sock -v -u -i -n 4 svr4 discard connected on 140.252.13.35.1108 to 140.252.13.34.9
# 第二次执行
sock -v -u -i -n 4 -w 0 svr4 discard connected on 140.252.13.35.1110 to 140.252.13.34.9
参数解释:
-v
: 启用 verbose 模式,显示详细信息,例如 ephemeral 端口号。-u
: 指定使用 UDP 协议,而非默认的 TCP 协议。-i
: 指定程序以源模式发送数据,而非读写标准输入输出。-n 4
: 指定发送 4 个数据报(默认值为 1024)。svr4 discard
: 指定目标主机为 svr4,并使用 discard 服务(详见 1.12 节)。-w 0
: 指定写入长度为 0 的数据报(仅在第二次执行时使用)。
第一次执行命令时,程序会使用默认长度(1024 字节)发送 4 个数据报。第二次执行时,程序会发送 4 个长度为 0 的数据报。
步骤二:使用 tcpdump 观察数据报
使用 tcpdump 工具可以捕获并分析网络流量,包括我们刚刚生成的 UDP 数据报。图 11-6 展示了 tcpdump 的输出结果。
(图 11-6 向一个方向发送 UDP 数据报时的 tcpdump 输出)
结果分析:
- tcpdump 输出显示,程序成功发送了 4 个 1024 字节的数据报和 4 个长度为 0 的数据报。
- 每个数据报之间间隔几毫秒,发送数据前没有建立连接,接收方也没有返回确认信息,体现了 UDP 协议无连接和不可靠的特点。
- 每次运行程序时,源端的 UDP 端口号都不同(第一次为 1108,第二次为 1110),这是因为客户端程序使用的是 1024 到 5000 之间的 ephemeral 端口号(详见 1.9 节)。
结论:
通过这个简单例子,我们演示了如何使用 sock 程序生成 UDP 数据报,并使用 tcpdump 工具观察数据报内容。
暂无评论