ローカルアドレス/ポート列の意味は何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ヘッダーを提供する必要があります。
比較のために生のソケットを使用すると、*:icmp
ICMPプロトコルを使用して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
ソケットがパケットを送信するために使用されていないことを発見しました。