Если я выполню ss -lu
для просмотра всех сокетов прослушивания UDP, то ни один из сокетов не отображается. Если я выполню ss -au
, в котором перечислены все (как прослушивающие, так и не прослушивающие) сокеты UDP, то «прослушивающие» сокеты отображаются как UNCONN:
T60:~ # lsof -n | sed -n '1p;/UDP/p'
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 963 avahi 11u IPv4 9088 0t0 UDP *:mdns
avahi-dae 963 avahi 12u IPv4 9089 0t0 UDP *:44639
cupsd 1238 root 10u IPv4 8160 0t0 UDP *:ipp
dhcpcd 2072 root 7u IPv4 532052 0t0 UDP *:bootpc
dhclient6 13131 root 5u IPv6 38031 0t0 UDP *:dhcpv6-client
dhclient6 13131 root 20u IPv4 37954 0t0 UDP *:20152
dhclient6 13131 root 21u IPv6 37955 0t0 UDP *:36745
atftpd 20639 tftp 0u IPv4 344977 0t0 UDP *:tftp
T60:~ # netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:bootpc *:*
udp 0 0 *:tftp *:*
udp 0 0 *:44639 *:*
udp 0 0 *:ipp *:*
udp 0 0 *:20152 *:*
udp 0 0 *:mdns *:*
udp 0 0 *:36745 *:*
udp 0 0 *:dhcpv6-client *:*
T60:~ # ss -lu
Recv-Q Send-Q Local Address:Port Peer Address:Port
T60:~ # ss -ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:bootpc *:*
UNCONN 0 0 *:tftp *:*
UNCONN 0 0 *:44639 *:*
UNCONN 0 0 *:ipp *:*
UNCONN 0 0 *:20152 *:*
UNCONN 0 0 *:mdns *:*
UNCONN 0 0 :::36745 :::*
UNCONN 0 0 :::dhcpv6-client :::*
T60:~ # ss -v
ss utility, iproute2-ss110629
T60:~ #
Какая логика стоит за этим? Например, если atftpd прослушивает соединения, должно быть состояние LISTEN, а не UNCONN, не так ли?
-ul
варьируется между RHEL5 и RHEL6. Для RHEL5 это бессмысленно, но RHEL6 делает то, что вы ожидаете. (состояние все еще указано какUNCONN
в выходных данных, но оно показывает только слушателей)Ответы:
UDP - это протокол без установления соединения. SS, вероятно, не будет показывать один в состоянии LISTEN, только в UCONN или ESTAB.
Если я сделаю это,
Тогда ss покажет (во 2-й оболочке):
Если я тогда подключусь к нему (3-я оболочка)
тогда SS показывает:
источник