/dev/tcp/host/port, /dev/udp/host/port 这是什么内核模块?

/dev/tcp/host/port, /dev/udp/host/port 这是什么内核模块?

我在 bash(1) 手册页中注意到了这一点。是否有操作系统或某些内核模块提供此接口?在我的 Debian 安装上尝试过,这些设备不存在。

谢谢

      /dev/tcp/host/port
             If host is a valid hostname or Internet address, and port is an integer  port  number  or  service
             name, bash attempts to open the corresponding TCP socket.
      /dev/udp/host/port
             If  host  is  a  valid hostname or Internet address, and port is an integer port number or service
             name, bash attempts to open the corresponding UDP socket.

解决方案/答案:这是可行的,并且它是 shell 的一个功能。去测试:

$ nc -l -p 5555

echo Hello > /dev/tcp/localhost/5555

$ nc -l -p 5555
Hello

很酷。

答案1

正如杰夫所说,这是一个功能由 Bash 实现,而不是由内核。它仅适用于 shell 脚本或 shell 命令行;其他程序打不开/dev/tcp/...

要将其实现为内核模块,您必须提供一个新的虚拟文件系统。

要查看实际效果,您可以将 Bash 与 netcat 结合起来。跑步

nc -l -p 5555

在一个终端中,然后

echo Hello > /dev/tcp/localhost/5555

在另一个;你会在运行的终端中看到“Hello” nc

相关内容