Linux

ss 顯示一個原始套接字。它正在監聽“*:ipproto-255”是什麼意思?

  • November 13, 2018

本地地址/埠列中的 ,是什麼ss意思?*:ipproto-255

$ sudo ss -ap | grep -vE "^(nl |u_)"
Netid  State     Recv-Q Send-Q  Local Address:Port  Peer Address:Port
p_raw  UNCONN    0      0        *:eth0               *                 users:(("lldpd",pid=742,fd=11))
raw    UNCONN    0      0        *:icmp              *:*                users:(("ping",pid=9077,fd=3))
raw    UNCONN    0      0        *:ipproto-255       *:*                users:(("atop",pid=7353,fd=4))
raw    UNCONN    0      0       :::ipv6-icmp        :::*                users:(("ping",pid=9077,fd=4))
udp    UNCONN    0      0        *:syslog            *:*                users:(("rsyslogd",pid=495,fd=5))
...

如果您想知道它在 中的樣子netstat,它會顯示為0.0.0.0:255

$ sudo netstat -l --raw -ep
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
raw        0      0 0.0.0.0:255             0.0.0.0:*               7           root       2427667    7353/atop

255 是 的值IPPROTO_RAW。這意味著此套接字允許發送所有類型的 IPv4 數據包。(它不能接收數據包)。該程序必須提供完整的 IPv4 標頭。

作為比較,原始套接字*:icmp允許發送和接收使用 ICMP 協議的 IPv4 數據包。

這些細節是特定於 Linux 的。原始套接字的確切行為因不同的 Unix 變體和版本而異。

http://man7.org/linux/man-pages/man7/raw.7.html

IPv4 協議欄位有 255 個可能的值。

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers


也就是說,我發現這個特定IPPRPROTO_RAW的套接字沒有被用來發送數據包:

為什麼在頂部打開一個原始套接字?

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