¿por qué ss (8) entiende los puertos UDP de escucha de manera diferente que netstat (8)?

8

Si ejecuto ss -lupara ver todos los sockets UDP de escucha, entonces ninguno de los sockets se muestra. Si ejecuto ss -au, que enumera todos los sockets UDP (tanto de escucha como de no escucha), los sockets de "escucha" se muestran como 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:~ # 

¿Cuál es la lógica detrás de esto? Por ejemplo, ejecutando atftpd escuchando conexiones, debería tener el estado ESCUCHAR no DESCONECTAR, ¿no?

Martín
fuente
¿Quizás solo palabras? Un enchufe de escucha obviamente no está conectado ... ;-)
Hauke ​​Laging
1
@HaukeLaging Sin mencionar que ambos suenan mal teniendo en cuenta UDP :)
TNW
He notado que el comportamiento de -ulvaría entre RHEL5 y RHEL6. No tiene sentido para RHEL5, pero RHEL6 hace lo que esperarías. (el estado todavía aparece como UNCONNen la salida, pero solo muestra a los oyentes)
Andrew B

Respuestas:

4

UDP es un protocolo sin conexión. SS probablemente no mostrará uno en estado ESCUCHAR, solo en UCONN o ESTAB.

Si hago esto

$ nc -u -l 2333

Entonces ss mostrará (en un segundo shell):

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

Si luego me conecto a él (3er shell)

$ nc -u localhost 2333

entonces SS muestra:

$ 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
fuente