Domanda

Quando si usa pcap_open_live Per annusare da un'interfaccia, ho visto molti esempi usando vari numeri come SNAPLEN valore, che va da BUFSIZ (<stdio.h>) ai "numeri magici".

Non avrebbe più senso impostare come Snaplen l'MTU dell'interfaccia da cui stiamo catturando? In questo modo, potremmo inserire più pacchetti contemporaneamente nel buffer PCAP. È sicuro supporre che la MRU sia uguale all'MTU?

Altrimenti, esiste un modo non esotico per impostare il valore Snaplen?

Grazie

È stato utile?

Soluzione

L'MTU è il più grande carico utile dimensioni che potrebbero essere consegnate al livello di collegamento; Non include alcuna intestazione a livello di collegamento, quindi, ad esempio, su Ethernet sarebbe 1500, non 1514 o 1518, e non sarebbe abbastanza grande da catturare un pacchetto Ethernet a grandezza naturale.

Inoltre, non include alcuna intestazione di metadati come l'intestazione radiotap per le informazioni radio 802.11.

E se l'adattatore sta facendo qualsiasi forma di frammentazione/segmentazione/rimontare lo scarico, i pacchetti consegnati all'adattatore o ricevuti dall'adattatore potrebbero non essere ancora frammentati o segmentati o potrebbero essere stati riassemblati e, come tale, potrebbero esserlo tanto più grande dell'MTU.

Per quanto riguarda l'adattamento di più pacchetti nel buffer PCAP, ciò si applica solo ai meccanismi di acquisizione TPACKET_V1 e TPACKET_V2 mappati in memoria in Linux, che hanno slot di pacchetti di dimensioni fisse; Altri meccanismi di cattura non si riservano uno slot di dimensioni massime per ogni pacchetto, quindi una lunghezza dell'istantanea più corta non avrà importanza. Per TPACKET_V1 e TPACKET_V2, una lunghezza di istantanea inferiore potrebbe fare la differenza, sebbene, almeno per Ethernet, i tentativi di LibpCap 1.2.1, nel miglior modo possibile, di scegliere una dimensione dello slot del buffer appropriata per Ethernet. (TPACKET_V3 non sembra avere gli slot per pacchetti di dimensioni fisse, nel qual caso non avrebbe questo problema, ma di recente è apparso di recente in kernels ufficialmente rilasciati e non esiste ancora alcun supporto in libpcap.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top