GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il kernel dovrebbe eliminare i pacchetti?

Ho interrotto tcpdump con Ctrl +C e ho ottenuto questo riepilogo totale:

579204 packets captured
579346 packets received by filter
142 packets dropped by kernel

Cosa sono i "pacchetti rilasciati dal kernel"? Perché succede?

Risposta accettata:

Dal manuale di tcpdump:

pacchetti "rilasciati dal kernel" (questo è il numero di pacchetti che sono stati eliminati, a causa della mancanza di spazio nel buffer, dal meccanismo di acquisizione dei pacchetti nel sistema operativo su cui è in esecuzione tcpdump, se il sistema operativo segnala tali informazioni alle applicazioni; in caso contrario , verrà segnalato come 0).

Una piccola spiegazione:

Il tcpdump acquisisce i pacchetti grezzi che passano attraverso un'interfaccia di rete.
I pacchetti devono essere analizzati e filtrati in base alle regole specificate dall'utente nella riga di comando e ciò richiede del tempo, quindi i pacchetti in arrivo devono essere inseriti nel buffer (in coda) per l'elaborazione .
A volte ci sono troppi pacchetti, vengono salvati in un buffer, ma vengono salvati più velocemente di quanto non vengano elaborati, quindi alla fine il buffer esaurisce lo spazio, quindi il kernel elimina tutti gli altri pacchetti finché non c'è spazio libero in il buffer.

Puoi aumentare la dimensione del buffer con il -B (--buffer-size ) opzione come questa:

tcpdump -B 4096 ....

Nota che la dimensione è specificata in kilobyte, quindi la riga sopra imposta la dimensione del buffer su 4 MB.


Linux
  1. Analizza il kernel Linux con ftrace

  2. Perché il server ha bloccato il mio IP?

  3. Linux:cosa accadrebbe se un disco rigido si guastasse mentre il kernel Linux era in esecuzione?

  4. Linux:perché il kernel non può eseguire Init?

  5. Perché Apt non aggiorna più il kernel?

Il ciclo di vita dei test del kernel Linux

Come controllare la versione del kernel in Linux

Linux:perché non è presente alcun file system Rootfs sul sistema?

Linux – Partecipare alla mailing list del kernel?

Perché la funzione di chiusura si chiama release in `struct file_operations` nel kernel di Linux?

Perché il kernel è mappato allo stesso spazio di indirizzi dei processi?