Debian

/dev/tcp/host/port, /dev/udp/host/port 這是什麼核心模組?

  • October 29, 2019

我在 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.

解決方案/答案:這是可行的,它是外殼的一個功能。去測試:

$ nc -l -p 5555

echo Hello > /dev/tcp/localhost/5555

$ nc -l -p 5555
Hello

很酷。

正如 Jeff 所說,這是由 Bash 實現的功能,而不是由核心實現的。它僅適用於 shell 腳本或 shell 的命令行;其他程序打不開/dev/tcp/...

要將其實現為核心模組,您必須提供一個新的虛擬文件系統。

要查看實際情況,您可以將 Bash 與 netcat 結合使用。跑

nc -l -p 5555

在一個終端中,然後

echo Hello > /dev/tcp/localhost/5555

在另一個; 你會在終端執行中看到“Hello” nc

引用自:https://unix.stackexchange.com/questions/548925