2013-04-09 20 views
5

Sto cercando di elencare tutti i socket multicast aperti su un sistema Linux? netstat -g elenca i gruppi aggiunti però. C'è qualche altra utilità che posso usare per questo bene?zoccoli multicast

Grazie mille per l'aiuto.

risposta

1

Non penso che ci sia uno strumento che possa darti queste informazioni.

Il motivo è che un socket multicast non è associato a un indirizzo, ma partecipa solo a un gruppo multicast (IP_ADD_MEMBERSHIP). Un socket può unire più gruppi diversi sulla stessa interfaccia, o lo stesso gruppo su interfacce diverse, quindi non avrebbe molto senso mantenere questi cross refences. L'unica informazione esposta dal kernel è in/proc/net, e in questo caso/proc/net/igmp (< - netstat -g).

6

Oltre a netstat -g è possibile utilizzare questo per vedere tutte le prese che sono legati a un indirizzo multicast:

netstat -anu|sort -nk4 

Questa è una lista di tutti i socket UDP (se multicast o meno). Cerca tutti gli indirizzi nell'intervallo da 224.0.0.0 a 239.255.255.255. Questi socket sono associati a indirizzi multicast, indipendentemente dal fatto che siano entrati o meno nel gruppo multicast. Questi riceveranno il traffico solo per questo gruppo multicast.

Ma:

In pratica socket UDP che vengono utilizzati per ricevere il traffico multicast di solito sono tenuti ad affrontare 0.0.0.0. Questi possono ricevere pacchetti UDP per tutti gli indirizzi unicast e multicast e il server di solito esegue alcuni filtri aggiuntivi in ​​base all'indirizzo IP di origine.

Quindi in questa lista in alto si potrebbe voler guardare anche socket UDP vincolati a 0.0.0.0, ad esempio 0.0.0.0:5353 che è molto probabilmente il server mDNS (avahi, zeroconf).