Come funziona WireShark su OS X? Con quali processi interagisce?

Sto cercando una ricerca approfondita e dettagliata su come funziona lo stack TCP di MacOS. Vale a dire quali sono i file / biblioteche dinamiche che offrono questo servizio?

Quali sono le biblioteche con cui interagisce WireShark?

Il mio objective è tracciare una catena logica di driver, processi e configurazioni che consentono una connessione TCP al lavoro.

Verrò la versione dei file, le corrispondenti impostazioni predefinite e qualsiasi altra cosa che possa influenzare il loro comportmento.

Il mio objective è quello di diagnosticare il problema descritto in questa domanda.

Wireshark usa i dispositivi / dev / bpf *.

Dal Wireshark installare readme.txt (che descrive le modifiche del sistema):

/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist. Un demone di avvio che regola le autorizzazioni sui dispositivi di cattura di pacchetti del sistema (/ dev / bpf *) al momento dell'avvio del sistema.

I dispositivi bpfx sono meccanismi progettati per ispezionare il traffico di networking (esattamente il caso di utilizzo per WireShark).

O come dice l' uomo bpf :

Il filter pacchetti Berkeley fornisce un'interface raw per i layer di dati in un modo indipendente dal protocollo. Tutti i pacchetti sulla networking, anche quelli destinati ad altri host, sono accessibili tramite questo meccanismo.

Il filter dei pacchetti appare come un dispositivo speciale di carattere, / dev / bpf. Dopo aver aperto il dispositivo, il descrittore di file deve essere associato ad una specifica interface di networking con il BIOCSETIF ioctl. Una determinata interface può essere condivisa da più ascoltatori e il filter sottostante a ciascun descrittore vedrà un stream di pacchetti identici.