Skip to main content

Tcpdump: Exempel, alternativ och mer

tcpdump - Traffic Capture & Analysis (Juni 2025)

tcpdump - Traffic Capture & Analysis (Juni 2025)
Anonim

Tcpdump är ett kommando som används på olika Linux operativsystem (OS) som samlar TCP / IP-paket som passerar via en nätverksadapter. Såsom ett paket snifferverktyg kan tcpdump inte bara analysera nätverkstrafiken utan också spara den till en fil.

Till skillnad från vissa kommandon som tillhandahålls av operativsystemet som standard kan det hända att du inte kan använda tcpdump eftersom den inte är installerad. För att installera tcpdump, kör apt-get install tcpdump eller Du installerar tcpdump, beroende på ditt operativsystem.

Hur Tcpdump fungerar

Tcpdump skriver ut rubrikerna för paket på ett nätverksgränssnitt som matchar den booleska uttryck . Det kan också köras med-w flaggan, vilket gör det möjligt att spara paketdata till en fil för senare analys och / eller med-r flaggan, vilket gör det möjligt att läsa från en sparad paketfil istället för att läsa paket från ett nätverksgränssnitt. I alla fall är endast paket som matchar uttryck kommer att behandlas av tcpdump .

tcpdump kommer, om inte springa med-c flagga, fortsätt att fånga paket tills det avbryts av en SIGINT-signal (genererad till exempel genom att skriva ditt avbrytande tecken, typiskt Ctrl + C) eller en SIGTERM-signal (generellt genererad meddöda(1) kommando); om springa med-c flagga, kommer det att fånga paket tills det är avbrutet av en SIGINT- eller SIGTERM-signal eller det angivna antalet paket har bearbetats.

Omkopplarna som nämns ovan förklaras i detalj senare i denna artikel.

När tcpdump avslutar fånga paket, kommer det att rapportera räkningar av:

  • Paket "mottaget av filter."
    • Betydelsen av detta beror på OS där du kör tcpdump , och möjligen på vilket sätt OS var konfigurerat. Om ett filter specificerades på kommandoraden, räknas vissa paket på vissa operativsystem, oavsett om de matchades av filteruttrycket och hos andra räknas endast paket som matchades av filteruttrycket och bearbetades av tcpdump.
  • Paket "tappade av kärnan".
    • Detta är antalet paket som tappades, på grund av brist på buffertutrymme, av paketinspelningsmekanismen i operativsystemet där tcpdump körs, om operativsystemet rapporterar den informationen till program. Om inte, kommer det att rapporteras som 0.

På plattformar som stöder SIGINFO-signalen, som de flesta BSD-er (Berkeley Software Distributions), kommer den att rapportera de räkningar när den tar emot en SIGINFO-signal (genererad till exempel genom att skriva ditt "status" -tecken, vanligtvis Ctrl + T) och fortsätter att fånga paket.

Tcpdump Kompatibilitet

Att läsa paket från ett nätverksgränssnitt med kommandot tcpdump kan kräva att du har särskilda behörigheter ( läsning en sparad paketfil kräver inte sådana privilegier):

  • SunOS 3.x eller 4.x med NIT eller BPF: Du måste ha läsåtkomst till / Dev / nit eller dev / bpf * .
  • Solaris med DLPI: Du måste ha läs- / skrivåtkomst till nätverkspseudo-enheten, som / Dev / le . På åtminstone vissa versioner av Solaris är det dock inte tillräckligt att tillåta tcpdump att fånga i promiskuösa lägen; På de versionerna av Solaris måste du vara rot, eller tcpdump måste installeras setuid till root, för att fånga i promiscuous läge. Observera att på många (kanske alla) gränssnitt, om du inte fotograferar i promiskuöst läge, så kommer du inte se några utgående paket, så det kan inte vara mycket användbart att fånga det som inte gjorts i promiskuöst läge.
  • HP-UX med DLPI: Du måste vara rot eller tcpdump måste installeras setuid till root.
  • IRIX med snoop: Du måste vara rot eller tcpdump måste installeras setuid till root.
  • Linux: Du måste vara rot eller tcpdump måste installeras setuid till root.
  • Ultrix och Digital UNIX / Tru64 UNIX: En användare kan fånga nätverkstrafik med tcpdump . Ingen användare (inte ens superanvändaren) kan emellertid fånga sig i ett promiskuöst läge på ett gränssnitt, om inte superanvändaren har aktiverat funktionen för blankt läge på det gränssnittet med hjälp av pfconfig (8), och ingen användare (inte ens superanvändaren) kan fånga unicast-trafik mottagen av eller skickad av maskinen i ett gränssnitt, om inte superanvändaren har aktiverat driften av kopieringsläget på det gränssnittet med hjälp av pfconfig , så användbar Paketfångst på ett gränssnitt förutsätter förmodligen att antingen operativ drift eller kopiering i alla lägen eller båda driftsätten ska vara aktiverad på det gränssnittet.
  • BSD: Du måste ha läsåtkomst till / Dev / bpf * .

Tcpdump Command Syntax

Liksom alla datorkommandon fungerar kommandot tcpdump korrekt endast om syntaxen är korrekt:

tcpdump -adeflnNOpqRStuvxX -c räkna

-C filstorlek -F fil

-jag gränssnitt -m modul -r fil

-s snaplen -T typ -U användare -w fil

-E algo: hemligt uttryck

Tcpdump Command Options

Det här är alla alternativ du kan använda med kommandot tcpdump:

  • -en: Försök att konvertera nätverks- och sändningsadresser till namn.
  • -c: Avsluta efter mottagning räkna paket.
  • -C: Innan du skriver en rå paket till en savefile, kontrollera om filen är större än filstorlek och i så fall stänga nuvarande spara fil och öppna en ny.Savefiles efter den första spara filen kommer att ha det namn som anges med-w flagga, med ett nummer efter det, börjar vid 2 och fortsätter uppåt. Enheterna i filstorlek är miljontals byte (1 000 000 byte, inte 1 048 576 byte).
  • -d: Dumpa den sammanställda paket-matchande koden i en läsbar form som standard för standardutgång och stopp.
  • -DD: Dump paket-matchande kod som enC programfragment.
  • -ddd: Dump paket-matchande kod som decimaltal (föregås med en räkning).
  • -e: Skriv ut länkarnivån på varje dumpningslinje.
  • -E: Använda sig av algo: hemligt för dekryptering av IPsec ESP-paket. Algoritmer kan varades-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, elleringen. Standard ärdes-cbc. Möjligheten att dekryptera paket är endast närvarande om tcpdump kompilerades med kryptografi aktiverad. hemlighet Ascii-texten för ESP-hemlig nyckel. Vi kan inte ta godtyckligt binärt värde just nu. Alternativet antar RFC2406 ESP, inte RFC1827 ESP. Alternativet är endast för felsökningsändamål, och användningen av det här alternativet med verkligen "hemlig" nyckel är avskräckt. Genom att presentera IPsec hemlig nyckel på kommandoraden gör du den synlig för andra via ps (1) och andra tillfällen.
  • -f: Skriv ut "utländska" internetadresser numeriskt istället för symboliskt (det här alternativet är avsett att kringgå allvarliga hjärnskador i Suns yp-server - vanligtvis hänger det för evigt översättning av icke-lokala internetnummer).
  • -F: Använda sig av fil som ingång för filteruttrycket. Ett extra uttryck som ges på kommandoraden ignoreras.
  • -jag: Lyssna på gränssnitt . Om ospecificerad, tcpdump söker i systemgränssnittslistan för det lägsta numrerade konfigurerade gränssnittet (exklusive loopback). Slipsar är trasiga genom att välja den tidigaste matchen. På Linux-system med 2.2 eller senare kärnor, an gränssnitt argumentet för "någon" kan användas för att fånga paket från alla gränssnitt. Observera att fångster på "någon" -enheten inte kommer att utföras i promiskuöst läge.
  • -l: Gör stdout line buffrad. Användbar om du vill se data medan du tar det. Till exempel "tcpdump -l | tee dat" eller "tcpdump -l> dat & tail -f dat".
  • -m: Ladda SMI MIB-moduldefinitioner från fil modul . Det här alternativet kan användas flera gånger för att ladda flera MIB-moduler i tcpdump .
  • -n: Omvandla inte värdadresser till namn. Detta kan användas för att undvika DNS-sökning.
  • -nn: Konvertera inte protokoll- och portnummer etc. till namn heller.
  • -N: Skriv inte ut domännamnskvalificering av värdnamn. Till exempel, om du ger denna flagga, då tcpdump kommer att skriva ut "nic" istället för "nic.ddn.mil".
  • -O: Kör inte paketoptimeringskodoptimeraren. Detta är endast användbart om du misstänker att det finns en bugg i optimeringsenheten.
  • -p: inte sätt gränssnittet i promiskuöst läge. Observera att gränssnittet kan vara i promiskuöst läge av någon annan anledning; Därför kan '-p' inte användas som en förkortning för 'eter värd {local-hw-addr} eller eter-sändning'.
  • -q: Snabb (tyst) utgång. Skriv ut mindre protokollinformation så att utmatningsraderna är kortare.
  • -R: Antag att ESP / AH-paket ska baseras på gammal specifikation: RFC1825 till RFC1829. Om det anges, tcpdump kommer inte skriva ut replay prevention field. Eftersom det inte finns något protokollversionsfält i ESP / AH-specifikationen, tcpdump kan inte härleda versionen av ESP / AH-protokollet.
  • -r: Läs paket från fil (som skapades med -w-alternativet). Standardinmatning används om fil är "-''.
  • -S: Skriv ut absoluta, snarare än relativa, TCP-sekvensnummer.
  • -s: Snarf snaplen byte av data från varje paket i stället för standardinställningen av 68; med SunOS NIT, är läget faktiskt 96. Sju åtta bitar är lämpliga för IP, ICMP, TCP och UDP, men kan avkorta protokollinformation från namnservern och NFS-paket (se nedan). Paketen avkortade på grund av en begränsad ögonblicksbild anges i utmatningen med "| proto '', var proto är namnet på protokollnivån vid vilken trunkeringen har inträffat. Observera att om du tar större ögonblicksbilder ökar både den tid det tar att bearbeta paket och effektivt minskar mängden paketbuffert. Detta kan orsaka att paket förloras. Du borde begränsa snaplen till det minsta antalet som kommer att fånga protokollinformationen du är intresserad av. Inställning snaplen till 0 betyder använd längd för att fånga hela paketet.
  • -T: Kraftpaket valda med " uttryck "tolkas den angivna typ . För närvarande kända typer ärcnfp (Cisco NetFlow-protokoll),rpc (Remote Procedure Call),rtp (Protokoll i realtidsprogram),RTCP (Kontrollprotokoll i realtidsprogram),snmp (Simple Network Management Protocol),moms (Visual Audio Tool) ochwb (distribuerad White Board).
  • -t: inte skriv ut en tidstämpel på varje dumpningslinje.
  • -TT: Skriv ut en oformaterad tidstämpel på varje dumpningslinje.
  • -U: Droppar root privilegier och ändrar användar-ID till användare och grupp ID till den primära gruppen av användare .
  • Notera: Red Hat Linux släpper automatiskt privilegierna till användaren "PCAP" om inget annat anges.
  • -ttt: Skriv ut ett delta (i mikrosekunder) mellan aktuell och föregående rad på varje dumplinje.
  • -tttt: Skriv ut en tidstämpel i standardformat, fortsatt med datum på varje dumpningslinje.
  • -u: Skriv ut odekodade NFS-handtag.
  • -v: (Lite mer) verboseffekt. Till exempel skrivs tiden att bo, identifiering, total längd och alternativ i ett IP-paket. Gör också det möjligt att kontrollera ytterligare paketintegritet som att verifiera IP- och ICMP-huvudkontrollsumman.
  • -vv: Ännu mer verbos utgång. Till exempel skrivs ytterligare fält från NFS-svarspaket och SMB-paket är helt avkodade.
  • -vvv: Ännu mer verbos utgång. Till exempel telnetSBSE alternativen skrivs ut i sin helhet. Med -X Telnet alternativ skrivs ut i hex också.
  • -w: Skriv de rika paketen till fil snarare än att analysera och skriva ut dem. De kan senare skrivas ut med -r-alternativet. Standardutgång används om fil är "-''.
  • -x: Skriv ut varje paket (minus kopplingsnivåhuvudet) i hex. Det minsta av hela paketet eller snaplen bytes kommer att skrivas ut. Observera att det här är hela länkskiktspaketet, så för länklagret som kuddar (t.ex. Ethernet), kommer krossningsbyte också att skrivas ut när det högre lagerpaketet är kortare än vad som krävs.
  • -X: När du skriver ut hex, skriv ut ascii också. Således om-x är också inställd, paketet är tryckt i hex / ascii. Detta är mycket användbart för att analysera nya protokoll. Även om-x är inte också inställd, vissa delar av vissa paket kan skrivas ut i hex / ascii.
  • uttryck : Väljer vilka paket som ska dumpas. Om inte uttryck ges, alla paket på nätet kommer att dumpas. Annars endast paket för vilka uttryck är "sant" kommer att dumpas. De uttryck består av en eller flera primitiver. Primitiver består vanligtvis av en id (namn eller nummer) föregås av en eller flera kvalifikationer. Det finns tre olika typer av kvalifikationer:
  • typ : Kvalificatorer säger vilken typ av sak id namn eller nummer avser. Möjliga typer ärvärd, netto, ochhamn-Till exempel "värdfoo", "net 128,3", "port 20". Om det inte finns någon typkvalificering,värd är antaget.
  • dir : Kvalificatorer anger en viss överföringsriktning till och / eller från id . Möjliga anvisningar ärsrc, dst, src eller dst ochsrc och dst (t ex 'src foo', 'dst net 128,3', 'src eller dst port ftp-data'). Om det inte finns någon dir-kvalifierare,src eller dst är antaget. För "noll" -länklager (dvs punkt-till-punkt-protokoll som glidning) inkommande och utgående kvalifikationer kan användas för att ange önskad riktning.
  • proto : Kvalificatorer begränsar matchningen till ett visst protokoll. Möjliga protos är: eter, FDDI, tr, ip, IP6, arp, rARP, DECnet, tcp, ochudp- till exempel "ether src foo", "arp net 128.3", "tcp port 21". Om det inte finns någon proto-kvalifierare antas alla protokoll som överensstämmer med typen. Till exempel betyder "src-foo" (ip eller arp eller rarp) src foo "(förutom att den senare inte är en juridisk syntax), betyder" netfält "(ip eller arp eller rarp) betyder "(tcp eller utp) port 53 '.
    • 'fddi' är faktiskt ett alias för 'eter'; parsern behandlar dem identiskt som "den datalänknivå som används på det angivna nätverksgränssnittet." FDDI-rubriker innehåller Ethernet-liknande käll- och destinationsadresser och innehåller ofta Ethernet-liknande pakettyper, så att du kan filtrera på dessa FDDI-fält bara som med de analoga Ethernet-fälten. FDDI-rubriker innehåller också andra fält, men du kan inte namnge dem explicit i ett filteruttryck.
    • På samma sätt är 'tr' ett alias för 'eter'; Föregående stycks uttalanden om FDDI-rubriker gäller även Token Ring-rubriker.

Förutom ovanstående finns det några speciella "primitiva" nyckelord som inte följer mönstret:inkörsport, utsända, mindre, större, och aritmetisk uttryck. Alla dessa beskrivs nedan.

Mer komplexa filteruttryck byggs upp genom att använda ordenoch, eller, ochinte att kombinera primitiva-till exempel "värd foo och inte port ftp och inte port ftp-data". För att spara typing kan identiska kvalifieringslistor utelämnas (t ex "tcp dst port ftp eller ftp-data eller domän" är exakt samma som "tcp dst port ftp eller tcp dst port ftp-data eller tcp dst port domain".)

Dessa är de primitiva som tillåts med kommandot tcpdump:

  • dst värd värd
    • Sant om IPv4 / v6-destinationsfältet i paketet är värd , som kan vara antingen en adress eller ett namn.
  • src-värd värd
    • Sant om IPv4 / v6-källfältet i paketet är värd .
  • värd värd
    • Sant om antingen IPv4 / v6-källan eller destinationen för paketet är värd . Någon av ovanstående värduttryck kan läggas upp med nyckelorden,ip, arp, rARP, ellerIP6, som i IP-värd värd (vilket motsvarar eterproto ip och värd värd).
    • Om värd är ett namn med flera IP-adresser, kommer varje adress att kontrolleras för en matchning.
  • eter dst ehost
    • Sant om Ethernet-destinationsadressen är ehost . Ehost kan antingen vara ett namn från / etc / ethers eller ett nummer (se etrar (3N) för numeriskt format).
  • eter src ehost
    • Sant om Ethernet-källadressen är ehost .
  • eter värd ehost
    • Det är sant om antingen Ethernet-källan eller destinationsadressen är ehost .
  • inkörsport värd
    • Sant om paketet används värd som en gateway (dvs Ethernet-källan eller destinationsadressen var värd men varken IP-källan eller IP-destinationen var värd ).
    • Värd måste vara ett namn och måste hittas både av maskinens värdnamn-till-IP-adress upplösningsmekanismer (värdnamn fil, DNS, NIS, etc.) och av maskinens värdnamn-till-Ethernet-adress upplösningsmekanism (/ etc / etrar, etc.).
    • Ett ekvivalent uttryck är eter värd ehost och nu värd värd , som kan användas med antingen namn eller nummer för värd / ehost .) Den här syntaxen fungerar inte i IPv6-aktiverad konfiguration just nu.
  • dst net netto
    • Det är sant om IPv4 / v6-destinationsadressen för paketet har ett nätverksnummer på netto . Netto kan antingen vara ett namn från / etc / networks eller ett nätverksnummer (se nät (4) för detaljer).
  • src net netto
    • Sant om IPv4 / v6-källadressen till paketet har ett nätverksnummer på netto .
  • netto netto
    • Det är sant om antingen IPv4 / v6-källan eller destinationsadressen till paketet har ett nätverksnummer på netto .
  • netto netto mask nätmask
    • Sant om IP-adressen matchar netto med det specifika nätmask . Kan vara kvalificerad medsrc ellerdst. Observera att denna syntax inte är giltig för IPv6 netto .
  • netto netto / len
    • Sant om IPv4 / v6-adressen matchar netto med en nätmask len bitar breda. Kan vara kvalificerad medsrc ellerdst.
  • dst porten hamn
    • True om paketet är ip / tcp, ip / udp, ip6 / tcp eller ip6 / udp och har ett destinationsportvärde av hamn . De hamn kan vara ett nummer eller ett namn som används i / etc / services (se tcp (4P) och udp (4P)). Om ett namn används, kontrolleras både portnummer och protokoll. Om ett nummer eller tvetydigt namn används, kontrolleras endast portnummeret (t.ex.dst port 513 kommer att skriva ut både tcp / login trafik och udp / vem trafik, ochportdomänen kommer att skriva ut både tcp / domän och UDP / domäntrafik).
  • src-porten hamn
    • Sant om paketet har ett källportvärde på hamn .
  • hamn hamn
    • Det är sant om antingen källan eller destinationsporten för paketet är hamn . Vilket som helst av ovanstående portuttryck kan läggas upp med nyckelorden,tcp ellerudp, som i tcp src-porten hamn , som matchar endast tcp-paket vars källport är hamn .
  • mindre längd
    • Sant om paketet har en längd mindre än eller lika med längd . Detta motsvarar len <= Längd .
  • större längd
    • Sant om paketet har en längd som är större än eller lika med längd . Detta motsvarar len> = Längd .
  • ip proto protokoll
    • Sant om paketet är ett IP-paket (se ip (4P)) av protokolltyp protokoll . Protokoll kan vara ett nummer eller ett av namnen ICMP , icmp6 , IGMP , iGRP , UM , ah , esp , VRRP , udp , eller tcp . Observera att identifierarna tcp , udp , och ICMP är också nyckelord och måste släppas via backslash (), vilket är i C-skalet. Observera att denna primitiva inte jagar protokollhuvudkedjan.
  • ip6 proto protokoll
    • Sant om paketet är ett IPv6-paket med protokolltyp protokoll . Observera att denna primitiva inte jagar protokollhuvudkedjan.
  • ip6 protochain protokoll
    • Sant om paketet är IPv6-paket och innehåller protokollhuvud med typ protokoll i dess protokollhuvudkedja. Till exempel, ipv6 protochain 6 matchar alla IPv6-paket med TCP-protokollhuvud i protokollhuvudkedjan. Paketet kan innehålla, till exempel, autentiseringsrubrik, rutningsrubrik eller hop-by-hop-alternativhuvud, mellan IPv6-huvud och TCP-huvud. BPF-koden som emitteras av denna primitiva är komplex och kan inte optimeras av BPF-optimeringskoden i tcpdump , så det här kan vara lite långsamt.
  • ip protochain protokoll
    • Ekvivalent medip6 protochain protokoll , men det här gäller IPv4.
  • eter sändning
    • Sant om paketet är ett Ethernet-sändningspaket. De eter sökord är valfritt.
  • ip-sändning
    • Sant om paketet är ett IP-sändningspaket. Den kontrollerar både all-zeroes och all-one-sändningskonventionerna, och tittar upp den lokala subnätmasken.
  • eter multicast
    • Sant om paketet är ett Ethernet multicast-paket. De eter sökord är valfritt. Detta är stenografi för "eter 0 & 1! = 0'.
  • ip multicast
    • Sant om paketet är ett IP multicast-paket.
  • ip6 multicast
    • Sant om paketet är ett IPv6 multicast-paket.
  • eterproto protokoll
    • Sant om paketet är av etertyp protokoll . Protokoll kan vara ett nummer eller ett av namnen ip , IP6 , arp , rARP , ett samtal , aarp , DECnet , sca , lat , mopdl , moprc , iso , stp , ipx , eller NetBEUI . Observera att dessa identifierare också är nyckelord och måste släppas via backslash ().
    • I fallet med FDDI (t ex 'fddi protokoll arp') och Token Ring (t ex'tr protokoll arp'), för de flesta av dessa protokoll kommer protokollidentifikationen från 802.2 Logical Link Control (LLC) header, som vanligtvis är lagrad ovanpå FDDI eller Token Ring header.
    • När du filtrerar för de flesta protokollidentifierare på FDDI eller Token Ring, tcpdump kontrollerar endast protokollets ID-fält i en LLC-rubrik i så kallat SNAP-format med en organisationsenhetsidentifierare (OUI) på 0x000000, för inkapslad Ethernet; Det kontrollerar inte om paketet är i SNAP-format med en OUI på 0x000000.
    • Undantagen är iso , för vilken den kontrollerar DSAP (Destination Service Access Point) och SSAP (Source Service Access Point) fält i LLC-rubriken, stp och NetBEUI , där den kontrollerar DSAP av LLC-rubriken, och ett samtal , där den kontrollerar ett paket med SNAP-format med ett OUI på 0x080007 och Appletalk etype.
    • När det gäller Ethernet, tcpdump kontrollerar Ethernet-typfältet för de flesta av dessa protokoll; undantagen är iso , sav , och NetBEUI , för vilken den kontrollerar en 802.3-ram och sedan kontrollerar LLC-rubriken som den gör för FDDI och Token Ring; ett samtal , där det kontrollerar både för Appletalk etype i en Ethernet-ram och för ett SNAP-format paket som det gör för FDDI och Token Ring; aarp , där den kontrollerar Appletalk ARP etype i antingen en Ethernet-ram eller en 802.2 SNAP-ram med en OUI på 0x000000; och ipx , där den kontrollerar IPX-etiken i en Ethernet-ram, IPX DSAP i LLC-rubriken, 802.3 utan LLC-inkapsling av IPX och IPX-etiken i en SNAP-ram.
  • decnet src värd
    • Sant om DECNET-källadressen är värd , som kan vara en adress till formuläret "10.123" eller ett DECNET-värdnamn. DECNET-värdnamnsupport är endast tillgängligt på Ultrix-system som är konfigurerade att köra DECNET.
  • decnet dst värd
    • Sant om DECNET-destinationsadressen är värd .
  • decnet värd värd
    • Sant om antingen DECNET-källan eller destinationsadressen är värd .
  • ip, IP6, arp, rARP, ett samtal, aarp, DECnet, iso, stp, ipx, NetBEUI
    • Förkortningar för eterproto p var p är ett av ovanstående protokoll.
  • lat, moprc, mopdl
    • Förkortningar för eterproto p var p är ett av ovanstående protokoll. Anteckna det tcpdump vet för närvarande inte hur man analyserar dessa protokoll.
  • vlan Vlan_id
    • Sant om paketet är ett IEEE 802.1Q VLAN-paket. Om Vlan_id anges, bara sant om paketet har det angivna vlan_id . Observera att den förstavlan sökord som stöter på uttryck ändrar avkodningsförskjutningarna för resten av uttryck med antagandet att paketet är ett VLAN-paket.
  • tcp, udp, ICMP
    • Förkortningar för ip proto p eller ip6 proto p var p är ett av ovanstående protokoll.
  • iso proto protokoll
    • Sant om paketet är ett OSI-paket av protokolltyp protokoll . Protokoll kan vara ett nummer eller ett av namnen CLNP , ESIS , eller isis .
  • CLNP, ESIS, isis
    • Förkortningar för iso proto p var p är ett av ovanstående protokoll. Anteckna det tcpdump gör ett ofullständigt jobb för att analysera dessa protokoll.
  • expr relop expr
    • Sant om förhållandet håller, var relop är en av>, <,> =, <=, =,! =, och expr är ett aritmetiskt uttryck som består av heltalskonstanter (uttryckt i standard C-syntaxen), de normala binära operatörerna +, -, *, /, &, |, en längdoperatör och speciella paketdatatillträdare. För att komma åt data i paketet, använd följande syntax: proto expr: storlek .

proto är en aveter, FDDI, tr, ppp, glida, länk, ip, arp, rARP, tcp, udp, ICMP, eller IP6, och anger protokollskiktet för indexoperationen (eter, FDDI, tr, ppp, glida, ochlänk alla hänvisar till länkskiktet). Anteckna det tcp, udp , och andra protokolltyper i övre lager gäller bara för IPv4, inte IPv6 (det här kommer att fixas i framtiden). Byteforskyvningen, i förhållande till det angivna protokollskiktet, ges av expr . Storlek är valfritt och anger antalet byte inom intresseområdet; det kan vara antingen en, två eller fyra, och som standard till en. Längdoperatören, angiven av sökordetlen, ger paketets längd.

Till exempel, 'eter 0 & 1! = 0"fångar all multicast trafik. Uttrycket 'ip 0 & 0xf! = 5"fångar alla IP-paket med alternativ. Uttrycket 'ip 6: 2 & 0x1fff = 0"fångar bara okragmenterade datagram och frag noll av fragmenterade datagram. Denna kontroll tillämpas implicit påtcp ochudp indexoperationer. Till exempel, tcp 0 betyder alltid den första byte av TCP rubrik , och betyder aldrig den första byten av ett mellanliggande fragment.

Vissa förskjutningar och fältvärden kan uttryckas som namn snarare än som numeriska värden. Följande protokollrubrikfältförskjutningar är tillgängliga: icmptype (ICMP typ fält),icmpcode (ICMP-kodfält) ochtcpflags (TCP flaggfält).

Följande fältvärden för ICMP-typ finns tillgängliga:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP-omdirigering, ICMP-eko, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-IREQ, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.

Följande fältvärden för TCP-flaggor finns tillgängliga:tcp-fin, tcp-syn, tcp-rst, tcp knapptryckning, tcp knapptryckning, tcp-ack, tcp-urg.

Primitiva kan kombineras med något av följande:

  • En parentesgrupp av primitiva och operatörer (parenteser är speciella för Shell och måste släppas)
  • Negation ('!'eller `inte')
  • Sammanslagning ('&&"eller"och')
  • Alternering ('||"eller"eller')

Negation har högsta prioritet. Alternering och sammankoppling har samma företräde och associerar från vänster till höger. Observera att det är explicitoch tokens, inte juxtaposition, krävs för sammanbindning.

Om en identifierare ges utan ett sökord antas det senaste sökordet. Till exempel, inte värd vs och ess är förkortad inte värd vs och värd ess. Detta bör dock inte förväxlas med inte (värd vs eller ess).

Uttryckningsargument kan överföras till tcpdump som antingen ett enda argument eller som flera argument, vilket är mer bekvämt. I allmänhet, om uttrycket innehåller Shell-metakartecken, är det lättare att skicka det som ett enda citat. Multipla argument sammanfogas med mellanslag innan de analyseras.

Tcpdump-exempel

tcpdump värd söndag

Ovanstående tcpdump-kommando används för att skriva ut alla paket som anländer till eller avgår från solnedgång.

tcpdump värd helios och (hot eller ace )

Detta tcpdump-exempel skriver ut trafik mellan helios och antingen varm eller ess.

tcpdump ip host ess och inte helios

Du kan använda det här tcpdump-kommandot för att skriva ut alla IP-paket mellan ess och någon värd utom helios.

tcpdump netto ucb-eter

I ovanstående exempel skriver tcpdump all trafik mellan lokala värdar och värdar på Berkeley.

tcpdump 'gateway snup och (port ftp eller ftp-data)'

Det här kommande exemplet tcpdump används för att skriva ut all FTP-trafik via internetgateway snup . Observera att uttrycket är citerat för att förhindra att skalet misstolkar parenteserna.

tcpdump ip och inte net localnet

I ovanstående tcpdump-exempel skriver kommandot trafik som varken kommer från eller är avsedd för lokala värdar.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 och inte src och dst net localnet '

För ovanstående exempel på tcpdump används kommandot för att skriva ut start- och slutpaket (SYN- och FIN-paketen) för varje TCP-konversation som involverar en icke-lokal värd.

tcpdump 'gateway snup och ip 2: 2> 576'

Ovanstående kommando kommer att skriva ut IP-paket längre än 576 byte sända via gateway snup.

tcpdump 'eter 0 & 1 = 0 och ip 16> = 224'

Kommandot tcpdump som visas ovan skriver ut IP-sändningar eller multicast-paket som var inte skickas via Ethernet-sändning eller multicast.

tcpdump 'icmp icmptype! = icmp-echo och icmp icmptype! = icmp-echoreply'

I det här sista exemplet av tcpdump skriver kommandot alla ICMP-paket som inte är echo-förfrågningar eller svar (det vill säga inte pingpaket).

Tcpdump Output Format

Utsignalen från tcpdump är protokollberoende. Nedan följer en kort beskrivning och exempel på de flesta format.

Länknivåhuvud. Om alternativet '-e' ges, skrivs länknivåhuvudet ut. På Ethernet-nätverk skrivs källadressen och destinationsadresserna, protokollet och paketlängden.

På FDDI-nätverk orsakar alternativet '-e' tcpdump att skriva ut fältet "Frame Control", käll- och destinationsadresserna och paketlängden. (Fältet "ramkontroll" styr tolkningen av resten av paketet. Normala paket (som de som innehåller IP-datagram) är "async" -paket med ett prioritetsvärde mellan 0 och 7: till exempel `async4'. Sådana paket antas innehålla ett 802.2 Logical Link Control (LLC) -paket; LLC-rubriken skrivs ut om den är inte ett ISO-datagram eller ett så kallat SNAP-paket.

På Token Ring-nätverk orsakar alternativet '-e' tcpdump att skriva ut fälten "access control" och "frame control", käll- och destinationsadresserna och paketlängden. Som på FDDI-nätverk antas paket att innehålla ett LLC-paket. Oavsett om alternativet '-e' är angivet eller inte, skrivs källdirigeringsinformationen för källdirigerade paket.

(N .: Den följande beskrivningen förutsätter förtrogenhet med SLIP-komprimeringsalgoritmen som beskrivs i RFC-1144.)

På SLIP-länkar skrivs en riktningsindikator ("I" för inkommande, "O" för utgående), pakettyp och komprimeringsinformation ut. Paketstypen skrivs ut först. De tre typerna är ip , utcp , och ctcp . Ingen ytterligare länkinformation skrivs ut för ip paket. För TCP-paket skrivs anslutningsidentifieraren ut efter typen. Om paketet komprimeras skrivs dess kodade rubrik ut. De speciella fallen skrivs ut som* S + n och* SA + n , var n är den mängd som sekvensnumret (eller sekvensnummer och ack) har ändrats. Om det inte är ett speciellt fall skrivs noll eller flera ändringar ut. En ändring indikeras av U (brådskande pekare), W (fönster), A (ack), S (sekvensnummer) och I (paket-ID) följt av ett delta (+ n eller -n) eller ett nytt värde (= n). Slutligen skrivs mängden data i paketet och komprimerad headerlängd.

Till exempel visar följande rad ett utgående komprimerat TCP-paket, med en implicit anslutningsidentifierare; acken har ändrats med 6, sekvensnumret med 49 och paketets ID med 6; det finns 3 byte data och 6 byte komprimerad rubrik:

O ctcp * A + 6 S + 49 I + 6 3 (6)

Arp / rarp-paket. Arp / rarp-utgången visar typen av förfrågan och dess argument. Formatet är avsett att vara självförklarande. Här är ett kort prov taget från början av en rlogin från värd rtsg att vara värd CSAM :

arp som-har csam berätta rtsgarp svar csam är-vid CSAM

Den första raden säger att rtsg skickade en arp-paket som frågar efter Ethernet-adressen till internet värd csam. Csam svarar med sin Ethernet-adress (i det här exemplet finns Ethernet-adresser i keps och Internetadresser i små bokstäver).

Detta skulle se mindre överflödigt om vi hade gjort tcpdump -n :

arp som-har 128.3.254.6 berätta 128.3.254.68arp svar 128.3.254.6 är-vid 02: 07: 01: 00: 01: c4

Om vi ​​hade gjort tcpdump -e , det faktum att det första paketet sänds och det andra är punkt-till-punkt skulle vara synligt:

RTSG Broadcast 0806 64: arp som-har csam berätta rtsgCSAM RTSG 0806 64: arp svar csam är-vid CSAM

För det första paketet står det att Ethernet-källadressen är RTSG, destinationen är Ethernet-sändningsadressen, typfältet innehöll hex 0806 (typ ETHER_ARP) och den totala längden var 64 byte.

TCP-paket (N.:De följande beskrivningen förutsätter förtrogenhet med TCP-protokollet som beskrivs i RFC-793. Om du inte är bekant med protokollet kommer varken denna beskrivning eller tcpdump att vara till stor nytta för dig) . Det allmänna formatet för en tcp-protokolllinje är:

src> dst: flaggor data-seqno ack fönster brådskande alternativ

src och dst är källa och destination IP-adresser och portar. flaggor är en kombination av S (SYN), F (FIN), P (PUSH) eller R (RST) eller en enda '.' (inga flaggor). Data seqno beskriver den del av sekvensutrymmet som omfattas av data i detta paket (se exempel nedan). Ack sekvensnummer för nästa data förväntas den andra riktningen på denna anslutning. Fönster är antalet byte av mottagarbuffertutrymme tillgängligt den andra riktningen på denna anslutning. Urg indikerar att det finns "brådskande" data i paketet. alternativ är tcp-alternativen inneslutna i vinkelbeslag (t ex ).

Src, dst, och flaggor är alltid närvarande. De andra fälten beror på innehållet i paketets tcp-protokollhuvud och utmatas endast om det är lämpligt.

Här är öppningsdelen av en rlogin från värd rtsg att vara värd CSAM .

rtsg.1023> csam.login: S 768512: 768512 (0) win 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 vinner 4096 rtsg.1023> csam.login:. ack 1 vinn 4096rtsg.1023> csam.login: P 1: 2 (1) ack 1 vinn 4096csam.login> rtsg.1023:. ack 2 vinna 4096rtsg.1023> csam.login: P 2:21 (19) ack 1 vinn 4096csam.login> rtsg.1023: P 1: 2 (1) ack 21 vinner 4077csam.login> rtsg.1023: P 2: 3 (1) ack 21 vinna 4077 press 1csam.login> rtsg.1023: P 3: 4 (1) ack 21 vinna 4077 press 1

Den första raden säger att tcp port 1023 på rtsg skickade ett paket till porten logga in på csam. DeS indikerar att SYN flaggan var inställd. Paketsekvensnumret var 768512 och det innehöll ingen data. (Notationen är "första: sista (nbytes)", vilket betyder "sekvensnummer först upp till men inte inklusive sista vilket är Nbytes byte av användardata ".) Det fanns ingen piggy-backed ack, det tillgängliga mottagningsfönstret var 4096 byte, och det fanns en max-segment-storlek alternativ som begär en mss på 1024 byte.

Csam svarar med ett liknande paket, förutom att det innehåller en piggybacked ack för rtsgs SYN. Rtsg acks sedan csam SYN. '.' betyder att inga flaggor ställdes in. Paketet innehöll inga data så det finns inget datasekvensnummer. Observera att ack-sekvensnumret är ett litet heltal (1). Första gången tcpdump ser en tcp "konversation", den skriver ut sekvensnumret från paketet. På efterföljande paket av konversationen skrivs skillnaden mellan det aktuella paketets sekvensnummer och detta initiala sekvensnummer. Detta betyder att sekvensnummer efter det första kan tolkas som relativa bytepositioner i konversationsdataströmmen (med den första databyten varje riktning är '1'). '-S' kommer att åsidosätta denna funktion, vilket medför att de ursprungliga sekvensnumren ska matas ut.

På den sjätte raden skickar rtsg csam 19 bytes data (byte 2 till 20 i rtsg -> csam sidan av konversationen). PUSH-flaggan sätts i paketet. På den sjunde raden säger csam att det har tagits emot data som skickats av rtsg upp till men inte med byte 21. De flesta av dessa data ligger tydligen i sockelbufferten, eftersom csams mottagningsfönster har fått 19 byte mindre. Csam skickar också en byte av data till rtsg i detta paket. På den åttonde och nionde raden skickar csam två byte av brådskande, tryckta data till rtsg.

Om ögonblicksbilden var liten nog så tcpdump Fångade inte hela TCP-huvudet, det tolkar så mycket av rubriken som det kan och då rapporterar "| tcp '' för att indikera att återstoden inte kunde tolkas. Om rubriken innehåller ett falskt alternativ (ett med en längd som är antingen för liten eller bortom slutet av rubriken) tcpdump rapporterar det som " dålig opt "och tolkar inte några ytterligare alternativ (eftersom det är omöjligt att berätta var de börjar). Om rubriklängden indikerar alternativ finns närvarande men IP-datagramlängden är inte tillräckligt lång för att alternativen faktiskt ska vara där, tcpdump rapporterar det som " dålig hdr längd ''.

Fånga paket med speciella flaggkombinationer. Det finns åtta bitar i kontrollbitarna i TCP-huvudet:

CWR | ECE | URG | ACK | PSH | RST | SYN | FENA

Låt oss anta att vi vill titta på paket som används för att upprätta en TCP-anslutning. Minns att TCP använder ett trevägs handskakningsprotokoll när det initierar en ny anslutning; anslutningssekvensen med avseende på TCP-styrbitarna är:

  1. Uppringaren skickar SYN.
  2. Mottagaren svarar med SYN, ACK.
  3. Uppringaren skickar ACK.

Nu är vi intresserade av att fånga paket som bara har SYN-bituppsättningen (steg 1). Observera att vi inte vill ha paket från steg 2 (SYN-ACK), bara en vanlig initial SYN. Vad vi behöver är ett korrekt filteruttryck för tcpdump .

Minns strukturen i en TCP-huvud utan alternativ:

0 15 31-----------------------------------------------------------------| källporten | destinationshamn |-----------------------------------------------------------------| sekvensnummer |-----------------------------------------------------------------| kvittningsnummer |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | fönsterstorlek |-----------------------------------------------------------------| TCP checksum | brådskande pekare |-----------------------------------------------------------------

En TCP-huvud innehåller vanligtvis 20 oktetter av data, om inte alternativ finns. Den första raden i diagrammet innehåller oktetter 0-3, den andra raden visar oktetter 4-7 etc.

Börjar att räkna med 0 finns de relevanta TCP-kontrollbitarna i oktett 13:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | fönsterstorlek |----------------|---------------|---------------|----------------| | 13: e oktet | | |

Låt oss titta närmare på octet nr. 13:

| | |---------------| | C | E | U | A | P | R | S | F | |---------------| |7 5 3 0|

Det här är de TCP-kontrollbitar som vi är intresserade av. Vi har numrerat bitarna i denna oktett från 0 till 7, höger mot vänster, så PSH-biten är bitnummer 3, medan URG-biten är nummer 5.

Minns att vi vill fånga paket med endast SYN-uppsättning. Låt oss se vad som händer med oktet 13 om ett TCP-datagram anländer med SYN-biten i sitt huvud:

| C | E | U | A | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

När vi tittar på avsnittet kontrollbitar ser vi att endast bitnummer 1 (SYN) är inställt.

Om man antar att oktettnummer 13 är ett 8-bitars osignerat heltal i nätverksbytesorder, är detta oktets binära värde:

00000010

Dess decimalrepresentation är:

7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2

Vi är nästan färdiga, för nu vet vi att om bara SYN är inställd, måste värdet för den 13: e okteten i TCP-huvudet tolkas som ett 8-bitars osignerat heltal i nätverksbytesorder, vara exakt 2.

Detta förhållande kan uttryckas som

tcp 13 == 2

Vi kan använda detta uttryck som filter för tcpdump för att titta på paket som endast har SYN-inställt:

tcpdump -i xl0 tcp 13 == 2

Uttrycket säger "låt den 13: e oktetten av ett TCP datagram ha decimalvärdet 2", vilket är exakt det vi vill ha.

Nu antar vi att vi behöver fånga SYN-paket, men vi bryr oss inte om ACK eller någon annan TCP-kontrollbit är inställd på samma gång. Titta på vad som händer med oktet 13 när ett TCP datagram med SYN-ACK uppsättning anländer:

| C | E | U | A | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

Bitar 1 och 4 är nu inställda i 13: e okteten. Det binära värdet av oktet 13 är:

00010010

som översätts till decimal:

7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18

Vi kan inte bara använda 'tcp 13 == 18' i tcpdump filteruttryck, eftersom det bara skulle välja de paket som har SYN-ACK-inställningar, men inte de som har enbart SYN-uppsättning. Kom ihåg att vi inte bryr oss om ACK eller någon annan kontrollbit är inställd så länge SYN är inställd.

För att uppnå vårt mål behöver vi logiskt OCH det binära värdet av oktet 13 med något annat värde för att bevara SYN-biten. Vi vet att vi vill att SYN ska ställas in så faller vi logiskt OCH värdet i 13: e oktet med binärt värde för en SYN:

00010010 SYN-ACK 00000010 SYN OCH 00000010 (vi vill SYN) OCH 00000010 (vi vill SYN) -------- -------- = 00000010 = 00000010

Vi ser att denna OCH-operationen ger samma resultat oavsett om ACK eller en annan TCP-kontrollbit är inställd. Decimaltillståndet för AND-värdet samt resultatet av denna operation är 2 (binärt 00000010), så vi vet att för paket med SYN-set måste följande förhållande vara sant:

((värdet av oktett 13) OCH (2)) == (2)

Detta pekar oss till tcpdump filteruttryck

tcpdump -i xl0 'tcp 13 & 2 == 2'

Observera att du ska använda enkla citat eller en backslash i uttrycket för att dölja AND ('&') specialtecken från skalet.

UDP-paket. UDP-format illustreras av detta rwho-paket:

actinide.who> broadcast.who: udp 84

Detta säger att hamnen vem på värd aktinid skickade ett utp datagram till porten vem på värd utsända , Internet-sändningsadressen. Paketet innehöll 84 byte användardata.

Vissa UDP-tjänster är igenkända (från käll- eller destinationsportnummer) och protokollinformationen på högre nivå som skrivs ut, i synnerhet domännamnsserviceförfrågningar (RFC-1034/1035) och Sun RPC-samtal (RFC-1050) till NFS.

UDP-namnserverförfrågningar (N.:De följande beskrivningen förutsätter kännedom om Domain Service-protokollet som beskrivs i RFC-1035. Om du inte är bekant med protokollet kommer den följande beskrivningen att ge lite mening.)

Namnserverförfrågningar är formaterade som:

src> dst: id op? flaggor qtype qclass namn (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

Värd h2opolo frågade domänservern på helios för en adressrekord (qtype = A) som är associerad med namnet ucbvax.berkeley.edu. Fråga-id var "3". '+' Indikerar önskad rekursion flaggan var inställd. Fråglängden var 37 byte, inte inklusive UDP- och IP-protokollhuvud. Frågeoperationen var den normala, Fråga , så fältet utelämnades. Om op hade varit något annat, skulle det ha skrivits mellan "3" och "+". På samma sätt var qclass den normala, C_IN , och utelämnas. Annan qclass skulle ha skrivits omedelbart efter "A".

Några anomalier kontrolleras och kan resultera i extra fält som är inneslutna i kvadratkonsoler: Om en fråga innehåller ett svar, en auktoritetsregistrering eller ett extra register, ancount , nscount , eller arcount skrivs ut som " n a ',' n inte heller ' n au 'var n är lämplig räkning. Om någon av svarsbitarna är inställda (AA, RA eller Rcode) eller någon av "måste vara noll" sätts bitarna i två och tre, `b2 & 3 = x "skrivs ut, var x är hexvärdet för headerbytes två och tre.

UDP-namnserversvar. Namnserversvar är formaterade som:

src> dst: id op rcode flaggor a / n / au typ klassdata (len) helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

I det första exemplet, helios svarar på fråga id 3 från h2opolo med tre svar records, tre namn server poster och sju ytterligare poster. Den första svarplattan är typ A (adress), och dess data är internetadress 128.32.137.3. Den totala storleken på svaret var 273 byte, exklusive UDP och IP-rubriker. Op (Query) och Response Code (NoError) utelämnades, liksom klassen (C_IN) i A-posten.

I det andra exemplet, helios svarar på fråga 2 med en svarskod för obefintlig domän (NXDomain) utan några svar, en namnserver och inga myndighetsregister. '*' Indikerar att auktoritativt svar bit satt. Eftersom det inte fanns några svar skrivdes ingen typ, klass eller data ut.

Andra flaggtecken som kan visas är '-' (rekursion tillgänglig, RA, inte set) och '|' (avkortat meddelande, TC, inställt). Om avsnittet "Fråga" inte innehåller exakt en post, " n q 'skrivs ut.

Observera att önskemål och svar på namnservern tenderar att vara stora och standard snaplen av 68 byte får inte fånga tillräckligt med det paket som ska skrivas ut. Använd-s flagga för att öka snaplen om du behöver undersöka serverns trafiken på allvar. '-s 128"har fungerat bra för mig.

SMB / CIFS-avkodning. tcpdump innehåller ganska omfattande SMB / CIFS / NBT-avkodning för data på UDP / 137, UDP / 138 och TCP / 139. Vissa primitiva avkodningar av IPX- och NetBEUI SMB-data görs också.

Som standard görs en ganska minimal avkodning, med en mycket mer detaljerad avkodning om -v används. Varnas att med -v ett enda SMB-paket kan ta upp en sida eller mer, så använd bara -v om du verkligen vill ha alla gory detaljerna.

Om du avkodar SMB-sessioner som innehåller unicode-strängar, kanske du vill ställa in miljövariabeln USE_UNICODE till 1. En patch för att automatiskt identifiera unicode-strängar är välkommen.

För information om SMB-paketformat och vad alla fält betyder, se www.cifs.org eller puben / samba / specs / katalogen på din favorit samba.org-spegelsida. SMB-patcherna skrevs av Andrew Tridgell ([email protected]).

NFS-förfrågningar och svar. Sun NFS (Network File System) -förfrågningar och svar skrivs ut som:

src.xid> dst.nfs: len op args src.nfs> dst.xid: svara på resultat sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165wrl.nfs> sushi.6709: svara ok 40 readlink "../var"sushi.201b> wrl.nfs: 144 uppslag fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: svara ok 128 uppslag fh 9,74 / 4134.3150

I första raden, värd sushi skickar en transaktion med id 6709 till WRL (Observera att numret som följer src-värden är ett transaktions-ID, inte källporten). Begäran var 112 byte, exklusive UDP och IP-rubrikerna. Operationen var a readlink (läs symbolisk länk) på filhandtag ( fh ) 21,24 / 10,731657119. (Om man har tur kan filhanteraren tolkas som ett större, mindre enhetens nummerpar, följt av inodenummer och generationsnummer.) WRL svarar "ok" med innehållet i länken.

I den tredje raden, sushi frågar WRL att leta upp namnet " xcolors "i katalogfilen 9,74 / 4096,6878. Observera att de data som skrivs ut beror på driftstypen. Formatet är avsett att vara självklarande om det läses i samband med en NFS-protokollspecifikation.

Om flaggan -v (verbose) anges, skrivs ytterligare information. Till exempel:

sushi.1372a> wrl.nfs: 148 läser fh 21,11 / 12,195 8192 byte @ 24576wrl.nfs> sushi.1372a: svara ok 1472 läs REG 100664 ids 417/0 sz 29388

(-v skriver också IP-rubriken TTL, ID, längd och fragmenteringsfält som har utelämnats från det här exemplet.) I första raden, sushi frågar WRL att läsa 8192 byte från fil 21,11 / 12,195, vid byte offset 24576. WRL svar "ok"; Paketet som visas på den andra raden är det första fragmentet av svaret och är följaktligen endast 1472 byte långt (de andra bitarna kommer att följa i efterföljande fragment, men dessa fragment har inte NFS eller till och med UDP-huvuden och kan därför inte skrivas ut, beroende på vilket filteruttryck som används). Eftersom -