Warum versteht ss (8) das Abhören von UDP-Ports anders als netstat (8)?

8

Wenn ich ausführe, ss -luum alle empfangenden UDP-Sockets anzuzeigen, wird keiner der Sockets angezeigt. Wenn ich etwas ausführe ss -au, das alle (sowohl hörenden als auch nicht hörenden) UDP-Sockets auflistet, werden "hörende" Sockets als UNCONN angezeigt:

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:~ # 

Was ist die Logik dahinter? Wenn Sie beispielsweise atftpd ausführen und auf Verbindungen warten, sollte der Status LISTEN nicht UNCONN sein, oder?

Martin
quelle
Vielleicht nur eine Formulierung? Eine
Hörbuchse
1
@HaukeLaging Ganz zu schweigen davon, dass beide in Anbetracht von UDP schlecht klingen :)
TNW
Ich habe festgestellt, dass das Verhalten von -ulzwischen RHEL5 und RHEL6 variiert. Für RHEL5 ist es bedeutungslos, aber RHEL6 macht das, was Sie erwarten. (Der Zustand ist immer noch wie UNCONNin der Ausgabe aufgeführt, zeigt aber nur die Hörer)
Andrew B

Antworten:

4

UDP ist ein verbindungsloses Protokoll. SS zeigt wahrscheinlich keinen im Status LISTEN an, nur in UCONN oder ESTAB.

Wenn ich das mache,

$ nc -u -l 2333

Dann zeigt ss (in einer 2. Shell):

$ ss -au|grep 2333
UNCONN     0      0                       *:2333                     *:*       

Wenn ich mich dann damit verbinde (3. Shell)

$ nc -u localhost 2333

dann zeigt SS:

$ ss -au|grep 2333
ESTAB      0      0               127.0.0.1:2333             127.0.0.1:58434   
ESTAB      0      0               127.0.0.1:58434            127.0.0.1:2333    
Mitchell Perilstein
quelle