众所周知,在传输层有两个常用的协议 TCP 和 UDP,本文介绍在 Linux 命令行下,如何使用 nc 命令发送或接收 UDP 数据包,这些命令的用法对调试 UDP 通信程序将有所帮助,本文适合初学者阅读。
1. 问题的提出
编写了一个使用 raw socket 在数据链路层接收原始 UDP 数据包的程序,调试的时候,需要使用局域网中的另一台机器发送 UDP 数据包,突然发现居然一下子想不出如何在命令行上发送数据包;首先想到的是用 curl,但又一想不对,curl 只能使用应用层协议透过 TCP 协议发送数据包,所以可以发 HTTP 请求包,FTP 请求包等,是不能发送 UDP 数据包的。
终于想起了不怎么使用的 nc 命令,可以很方便地发送 UDP 数据包
2. 文章要点
- 理解 Linux 下的 nc 命令;
- 使用 nc 命令在网络上发送或接收 UDP 报文;
- 抓取 nc 命令发送的 UDP 报文;
- 介绍其它可以发送 UDP 报文的命令。
3. netcat 命令
- nc 是 netcat 的简写,大多数的 Linux 发行版中默认是安装 netcat 的,打开一个终端窗口(ctrl+alt_t),用下面命令检查一下是否已经安装了 netcat:
- 在 ubuntu 20.04 下的输出:
1
2
3
4
|
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source]
|