Linux
ss 顯示一個原始套接字。它正在監聽“*:ipproto-255”是什麼意思?
本地地址/埠列中的 ,是什麼
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
的套接字沒有被用來發送數據包: