跳到主要内容

网络通信

通过前面的内容可以看到,bash shell 中可以通过文件描述符打开类似 /dev/tcp 的特殊文件进行网络通信,但显然这并不直观。很遗憾的是 bash 中并没有提供原生的网络通信的内置命令,不过 linux 中已经有非常好用的外部命令可以用于各类网络请求,充当客户端 or 服务端。下面看看常见的网络协议以及相关的命令:

tcp

通常我们很少直接使用 tcp 协议进行通信,因为在 tcp 之上已经有非常多实用的应用层协议可供选择,但是如果非要在 bash 中使用 tcp 也不是没有办法,我们可以借助例如 nc 等命令来实现:

示例 1,通过 nc 传输文本信息

这里我们需要同时打开两个终端进行客户端与服务端的模拟,首先在服务端通过 nc 命令监听端口:

nc -k -l 6666

接着在客户端与本机 6666 端口通信:

nc -N localhost 6666

udp

http

icmp