ss は生のソケットを表示します。 「*:ipproto-255」を受信して​​いるということはどういう意味ですか?

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

答え1

255は値ですIPPROTO_RAW。これは、ソケットがあらゆるタイプのIPv4パケット転送を許可することを意味します。 (パケットを受信できません。)プログラムは完全なIPv4ヘッダーを提供する必要があります。

比較のために生のソケットを使用すると、*:icmpICMPプロトコルを使用してIPv4パケットを送受信できます。

これらの詳細はLinux固有です。 raw ソケットの正確な動作は 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ソケットがパケットを送信するために使用されていないことを発見しました。

上から生のソケットを開くのはなぜですか?

関連情報