Tcpdump ma opcję -B
ustawienia rozmiaru bufora przechwytywania. Wartość jest następnie przekazywana do libpcap (biblioteka używana przez tcpdump do faktycznego przechwytywania pakietów) poprzezpcap_set_buffer_size()
funkcji. Strona podręcznika Tcpdump nie określa, w których jednostkach rozmiar bufora jest określony przez -B, ale ze źródła wydaje się, że jest to KiB.
strona podręcznika użytkownika pcap_set_buffer_size()
nie określa domyślnego rozmiaru bufora (który jest używany, jeśli ta funkcja nie jest wywoływana), ale ponownie, ze źródła libpcap , wydaje się, że jest to 2 MiB, przynajmniej na Linuksie (ale najprawdopodobniej zależy od systemu).
Jeśli chodzi o buforowanie i upuszczanie pakietów, należy również zwrócić uwagę na odpowiednie ustawienie -s
parametru snaplen ( ).man tcpdump
:
-s Snarf snaplen bytes of data from each packet rather than the
default of 65535 bytes. Packets truncated because of a limited snapshot
are indicated in the output with ``[|proto]'', where proto is the name of
the protocol level at which the truncation has occurred. Note that taking
larger snapshots both increases the amount of time it takes to
process packets and, effectively, decreases the amount of packet buffering.
This may cause packets to be lost. You should limit snaplen to the
smallest number that will capture the protocol information you're
interested in. Setting snaplen to 0 sets it to the default of 65535, for
back-wards compatibility with recent older versions of tcpdump.
Oznacza to, że przy ustalonym rozmiarze bufora można zwiększyć liczbę pakietów, które pasują do bufora (a tym samym nie są upuszczane), zmniejszając rozmiar migawki.