Tcpdump - Perintah Linux - Perintah Unix

NAMA

tcpdump - membuang lalu lintas di jaringan

RINGKASAN

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C file_size ] [ -F file ]

[ -i antarmuka ] [ -modus ] [ -r file ]

[ -s snaplen ] [ Tipe -T ] [ -U pengguna ] [ -w file ]

[ -E Algo: secret ] [ ekspresi ]

DESKRIPSI

Tcpdump mencetak header paket pada antarmuka jaringan yang cocok dengan ekspresi boolean. Ini juga dapat dijalankan dengan -w bendera, yang menyebabkannya untuk menyimpan data paket ke file untuk analisis nanti, dan / atau dengan -r bendera, yang menyebabkannya untuk membaca dari file paket yang disimpan daripada membaca paket dari antarmuka jaringan. Dalam semua kasus, hanya paket yang cocok dengan ekspresi yang akan diproses oleh tcpdump .

Tcpdump akan, jika tidak dijalankan dengan flag -c , terus menangkap paket sampai terganggu oleh sinyal SIGINT (dihasilkan, misalnya, dengan mengetikkan karakter interupsi Anda, biasanya kontrol-C) atau sinyal SIGTERM (biasanya dihasilkan dengan kill (1) perintah); jika dijalankan dengan flag -c , ia akan menangkap paket-paket sampai terganggu oleh sinyal SIGINT atau SIGTERM atau jumlah paket yang ditentukan telah diproses.

Ketika tcpdump selesai menangkap paket, ia akan melaporkan jumlah:

paket `` diterima oleh filter '' (artinya ini tergantung pada OS di mana Anda menjalankan tcpdump , dan mungkin pada cara OS dikonfigurasi - jika filter ditentukan pada baris perintah, pada beberapa OS itu dianggap paket-paket terlepas apakah mereka dicocokkan oleh ekspresi filter, dan pada OS lain hanya menghitung paket yang dicocokkan dengan ekspresi filter dan diproses oleh tcpdump );

paket `` dijatuhkan oleh kernel '' (ini adalah jumlah paket yang dijatuhkan, karena kurangnya ruang penyangga, oleh mekanisme pengambilan paket di OS tempat tcpdump berjalan, jika OS melaporkan informasi itu ke aplikasi; jika tidak, akan dilaporkan sebagai 0).

Pada platform yang mendukung sinyal SIGINFO, seperti kebanyakan BSD, ini akan melaporkan jumlah tersebut ketika menerima sinyal SIGINFO (dibuat, misalnya, dengan mengetikkan karakter `` status 'Anda, biasanya kontrol-T) dan akan terus menangkap paket-paket .

Membaca paket dari antarmuka jaringan mungkin mengharuskan Anda memiliki hak istimewa:

Di bawah SunOS 3.x atau 4.x dengan NIT atau BPF:

Anda harus sudah membaca akses ke / dev / nit atau / dev / bpf * .

Di bawah Solaris dengan DLPI:

Anda harus memiliki akses baca / tulis ke perangkat semu jaringan, misalnya / dev / le . Setidaknya pada beberapa versi Solaris, bagaimanapun, ini tidak cukup untuk memungkinkan tcpdump untuk menangkap dalam mode promiscuous; pada versi Solaris itu, Anda harus menjadi root, atau tcpdump harus diinstal setuid ke root, untuk menangkap dalam mode promiscuous. Perhatikan bahwa, pada banyak (mungkin semua) antarmuka, jika Anda tidak menangkap dalam mode promiscuous, Anda tidak akan melihat paket yang keluar, sehingga pengambilan tidak dilakukan dalam mode promiscuous mungkin tidak sangat berguna.

Di bawah HP-UX dengan DLPI:

Anda harus root atau tcpdump harus diinstal setuid ke root.

Di bawah IRIX dengan snoop:

Anda harus root atau tcpdump harus diinstal setuid ke root.

Di Linux:

Anda harus root atau tcpdump harus diinstal setuid ke root.

Di bawah Ultrix dan Digital UNIX / Tru64 UNIX:

Setiap pengguna dapat menangkap lalu lintas jaringan dengan tcpdump . Namun, tidak ada pengguna (bahkan pengguna super) yang dapat menangkap dalam mode promiscuous pada antarmuka kecuali super-user telah mengaktifkan operasi mode promiscuous pada antarmuka menggunakan pfconfig (8), dan tidak ada pengguna (bahkan bukan pengguna super ) dapat menangkap lalu lintas unicast yang diterima oleh atau dikirim oleh mesin pada suatu antarmuka kecuali super-user telah mengaktifkan operasi copy-all-mode pada antarmuka tersebut menggunakan pfconfig , sehingga tangkapan paket yang berguna pada suatu antarmuka mungkin mengharuskan baik mode promiscuous atau menyalin operasi -all-mode, atau kedua mode operasi, diaktifkan pada antarmuka itu.

Di bawah BSD:

Anda harus sudah membaca akses ke / dev / bpf * .

Membaca file paket yang disimpan tidak memerlukan hak khusus.

PILIHAN

-Sebuah

Mencoba untuk mengubah jaringan dan menyiarkan alamat ke nama.

-c

Keluar setelah menerima paket hitungan .

-C

Sebelum menulis paket raw ke savefile, periksa apakah file saat ini lebih besar dari file_size dan, jika demikian, tutup savefile saat ini dan buka yang baru. Savefiles setelah savefile pertama akan memiliki nama yang ditentukan dengan flag -w , dengan angka setelahnya, mulai dari 2 dan berlanjut ke atas. Unit file_size adalah jutaan byte (1.000.000 byte, bukan 1.048.576 byte).

-d

Buang kode paket-pencocokan dikompilasi dalam bentuk yang dapat dibaca manusia untuk output standar dan berhenti.

-DD

Masukkan kode pencocokan-paket sebagai fragmen program C.

-ddd

Buat kode pencocokan-paket sebagai angka desimal (didahului dengan hitungan).

-e

Cetak tajuk tingkat tautan pada setiap baris pembuangan.

-E

Gunakan algo: rahasia untuk mendekripsi paket IPsec ESP. Algoritme mungkin des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc , atau tidak ada . Standarnya adalah des-cbc . Kemampuan untuk mendekripsi paket hanya ada jika tcpdump dikompilasi dengan kriptografi diaktifkan. rahasiakan teks ascii untuk kunci rahasia ESP. Kami tidak dapat mengambil nilai biner acak pada saat ini. Pilihannya mengasumsikan RFC2406 ESP, bukan RFC1827 ESP. Pilihan ini hanya untuk keperluan debugging, dan penggunaan opsi ini dengan kunci `rahasia 'yang sebenarnya tidak disarankan. Dengan menghadirkan kunci rahasia IPsec ke baris perintah Anda membuatnya terlihat oleh orang lain, melalui ps (1) dan kesempatan lainnya.

-f

Mencetak alamat internet `asing 'secara numerik dan bukan secara simbolis (opsi ini dimaksudkan untuk mengatasi kerusakan otak yang serius di server yp Sun --- biasanya hang selamanya menerjemahkan nomor internet non-lokal).

-F

Gunakan file sebagai input untuk ekspresi filter. Ekspresi tambahan yang diberikan pada baris perintah diabaikan.

-saya

Dengarkan di antarmuka . Jika tidak ditentukan, tcpdump mencari daftar antarmuka sistem untuk antarmuka dengan nomor yang paling rendah, terkonfigurasi (tidak termasuk loopback). Dasi dipatahkan dengan memilih pertandingan paling awal.

Pada sistem Linux dengan kernel 2.2 atau yang lebih baru, argumen antarmuka `` any '' dapat digunakan untuk menangkap paket dari semua antarmuka. Perhatikan bahwa menangkap pada perangkat `` any '' tidak akan dilakukan dalam mode promiscuous.

-l

Buat garis stdout buffered. Berguna jika Anda ingin melihat data saat mengambilnya. Misalnya,
`` tcpdump -l | tee dat '' atau `` tcpdump -l> dat & tail -f dat ''.

-m

Muat definisi modul SMI MIB dari modul file. Pilihan ini dapat digunakan beberapa kali untuk memuat beberapa modul MIB ke tcpdump .

-n

Jangan mengonversi alamat host ke nama. Ini dapat digunakan untuk menghindari pencarian DNS.

-nn

Jangan mengonversi protokol dan nomor port dll. Ke nama baik.

-N

Jangan cetak nama domain kualifikasi nama host. Misalnya, jika Anda memberikan bendera ini maka tcpdump akan mencetak `` nic '' bukan `` nic.ddn.mil ''.

-HAI

Jangan menjalankan optimizer kode pencocokan-pasangan. Ini berguna hanya jika Anda mencurigai adanya bug di pengoptimal.

-p

Jangan menempatkan antarmuka ke mode promiscuous. Perhatikan bahwa antarmuka mungkin dalam mode promiscuous karena beberapa alasan lain; karenanya, `-p 'tidak dapat digunakan sebagai singkatan untuk` host eter {local-hw-addr} atau siaran eter'.

-q

Output cepat (tenang?). Cetak informasi protokol yang kurang sehingga jalur output lebih pendek.

-R

Asumsikan paket ESP / AH didasarkan pada spesifikasi lama (RFC1825 hingga RFC1829). Jika ditentukan, tcpdump tidak akan mencetak bidang pencegahan replay. Karena tidak ada bidang versi protokol dalam spesifikasi ESP / AH, tcpdump tidak dapat menyimpulkan versi protokol ESP / AH.

-r

Baca paket dari file (yang dibuat dengan opsi -w). Input standar digunakan jika file adalah `` - ''.

-S

Mencetak mutlak, daripada relatif, nomor urut TCP.

-s

Snarf snaplen byte data dari setiap paket daripada default 68 (dengan SunOS NIT, minimum sebenarnya 96). 68 byte cukup untuk IP, ICMP, TCP dan UDP tetapi dapat memotong informasi protokol dari server nama dan paket NFS (lihat di bawah). Paket terpotong karena snapshot terbatas ditunjukkan dalam output dengan `` [| proto ] '', di mana proto adalah nama level protokol tempat pemotongan terjadi. Perhatikan bahwa mengambil snapshot yang lebih besar akan meningkatkan jumlah waktu yang diperlukan untuk memproses paket dan, secara efektif, mengurangi jumlah buffering paket. Ini dapat menyebabkan paket hilang. Anda harus membatasi snap ke nomor terkecil yang akan menangkap informasi protokol yang Anda minati. Pengaturan snaplen ke 0 berarti menggunakan panjang yang diperlukan untuk menangkap seluruh paket.

-T

Paksa paket yang dipilih oleh " ekspresi " untuk ditafsirkan jenis yang ditentukan. Jenis yang diketahui saat ini adalah cnfp (Cisco NetFlow protocol), rpc (Remote Procedure Call), rtp (protokol Aplikasi Real-Time), rtcp (protokol Kontrol Aplikasi Real-Time), snmp (Protokol Manajemen Jaringan Sederhana), vat (Alat Audio Visual ), dan wb (didistribusikan White Board).

-t

Jangan cetak stempel waktu pada setiap saluran pembuangan.

-tt

Cetak stempel waktu yang tidak diformat pada setiap saluran pembuangan.

-U

Menjatuhkan hak akses root dan mengubah ID pengguna menjadi ID pengguna dan grup ke grup pengguna utama .

Catatan! Red Hat Linux secara otomatis menjatuhkan hak istimewa ke pengguna `` pcap '' jika tidak ada yang ditentukan.

-ttt

Cetak delta (dalam mikro-detik) antara garis saat ini dan sebelumnya pada setiap saluran pembuangan.

-tttt

Cetak stempel waktu dalam format default yang diteruskan berdasarkan tanggal pada setiap saluran pembuangan.

-u

Cetak menangani NFS undecoded.

-v

(Sedikit lebih) output verbose. Misalnya, waktu untuk hidup, identifikasi, panjang total dan opsi dalam paket IP dicetak. Juga memungkinkan pemeriksaan integritas paket tambahan seperti memverifikasi IP dan checksum header ICMP.

-vv

Lebih banyak lagi output verbose. Misalnya, bidang tambahan dicetak dari paket balasan NFS, dan paket SMB sepenuhnya diterjemahkan.

-vvv

Lebih banyak lagi output verbose. Misalnya, opsi telnet SB ... SE dicetak secara penuh. Dengan opsi-telnet -X dicetak dalam hex juga.

-w

Tuliskan paket-paket raw ke file daripada parsing dan mencetaknya. Mereka nantinya dapat dicetak dengan opsi -r. Output standar digunakan jika file adalah `` - ''.

-x

Cetak setiap paket (minus header level link-nya) dalam hex. Semakin kecil seluruh paket atau snaplen byte akan dicetak. Perhatikan bahwa ini adalah seluruh paket lapisan-tautan, jadi untuk lapisan tautan pad itu (misalnya Ethernet), byte pengisian juga akan dicetak ketika paket lapisan yang lebih tinggi lebih pendek dari padding yang diperlukan.

-X

Saat mencetak hex, cetak ascii juga. Jadi jika -x juga diatur, paket dicetak dalam hex / ascii. Ini sangat berguna untuk menganalisis protokol baru. Bahkan jika -x tidak diatur, beberapa bagian dari beberapa paket dapat dicetak dalam hex / ascii.

ekspresi

memilih paket mana yang akan dibuang. Jika tidak ada ekspresi yang diberikan, semua paket di internet akan dibuang. Jika tidak, hanya paket yang ekspresinya "benar" akan dibuang.

Ekspresi terdiri dari satu atau lebih primitif. Primitif biasanya terdiri dari id (nama atau nomor) yang didahului oleh satu atau lebih kualifikasi. Ada tiga jenis kualifikasi yang berbeda:

mengetik

Kualifikator mengatakan apa yang dimaksud oleh id name atau number. Tipe yang mungkin adalah host , net dan port . Misalnya, `host foo ',` net 128.3', `port 20 '. Jika tidak ada kualifikasi jenis, host diasumsikan.

dir

kualifikasi menentukan pengalihan tertentu ke dan / atau dari id . Petunjuk yang memungkinkan adalah src , dst , src atau dst dan src dan dst . Misalnya, `src foo ',` dst net 128.3', `src atau dst port ftp-data '. Jika tidak ada kualifikasi dir, src atau dst diasumsikan. Untuk layer tautan `null '(yaitu protokol point to point seperti slip), kualifikasi inbound dan outbound dapat digunakan untuk menentukan arah yang diinginkan.

proto

kualifikasi membatasi pertandingan ke protokol tertentu. Protos yang mungkin adalah: eter , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp dan udp . Misalnya, `ether src foo ',` arp net 128.3', `tcp port 21 '. Jika tidak ada proto qualifier, semua protokol yang konsisten dengan tipe diasumsikan. Misalnya, `src foo 'berarti` (ip atau arp atau rarp) src foo' (kecuali yang terakhir bukan sintaks yang sah), `bar bersih 'berarti` (ip atau arp atau rarp) net bar' dan `port 53 'berarti Port `(tcp atau udp) 53 '.

[`fddi 'sebenarnya adalah alias untuk` ether'; parser memperlakukannya secara identik sebagai "tingkat tautan data yang digunakan pada antarmuka jaringan yang ditentukan." Tajuk FDDI berisi alamat sumber dan tujuan yang mirip dengan Ethernet, dan sering mengandung jenis paket mirip-Ethernet, sehingga Anda dapat memfilter pada bidang FDDI ini seperti halnya dengan bidang Ethernet analog. Header FDDI juga mengandung kolom lain, tetapi Anda tidak dapat menamai mereka secara eksplisit dalam ekspresi filter.

Demikian pula, `tr 'adalah alias untuk` ether'; pernyataan paragraf sebelumnya tentang header FDDI juga berlaku untuk header Token Ring.]

Selain di atas, ada beberapa kata kunci `primitif 'khusus yang tidak mengikuti pola: gerbang , siaran , kurang , lebih besar dan ekspresi aritmatika. Semua ini dijelaskan di bawah ini.

Ekspresi filter yang lebih kompleks dibangun dengan menggunakan kata-kata dan , atau dan tidak menggabungkan primitif. Misalnya, `host foo dan bukan port ftp dan bukan port ftp-data '. Untuk menyimpan pengetikan, daftar kualifikasi yang identik dapat dihilangkan. Misalnya, `tcp dst port ftp atau ftp-data atau domain 'sama persis dengan` tcp dst port ftp atau tcp dst port ftp-data atau tcp dst port domain'.

Primitif yang diijinkan adalah:

host host dst

Benar jika bidang tujuan IPv4 / v6 paket adalah host , yang bisa berupa alamat atau nama.

host host src

Benar jika bidang sumber IPv4 / v6 paket adalah tuan rumah .

host host

Benar jika sumber IPv4 / v6 atau tujuan paket adalah host . Ekspresi host di atas dapat ditambahkan dengan kata kunci, ip , arp , rarp , atau ip6 seperti pada:

tuan rumah ip host

yang setara dengan:

eter proto \ ip dan host host

Jika host adalah nama dengan beberapa alamat IP, setiap alamat akan diperiksa untuk sebuah pertandingan.

eter dst ehost

Benar jika alamat tujuan ethernet adalah ehost . Ehost bisa berupa nama dari / etc / ethers atau nomor (lihat ethers (3N) untuk format numerik).

eter src ehost

Benar jika alamat sumber ethernet adalah ehost .

tuan eter, ehost

Benar jika sumber ethernet atau alamat tujuan adalah ehost .

host gateway

Benar jika paket yang digunakan host sebagai gateway. Yaitu, sumber ethernet atau alamat tujuan adalah tuan rumah tetapi baik sumber IP maupun tujuan IP adalah tuan rumah . Host harus berupa nama dan harus ditemukan baik oleh mekanisme resolusi host-name-to-IP-address mesin (file nama host, DNS, NIS, dll.) Dan oleh resolusi host-name-to-Ethernet-address mesin mekanisme (/ etc / ethers, dll.). (Ekspresi ekuivalen adalah

tuan eter ehost dan bukan tuan rumah tuan rumah

yang dapat digunakan dengan nama atau nomor untuk host / ehost .) Sintaks ini tidak berfungsi dalam konfigurasi yang mendukung IPv6 saat ini.

dst bersih bersih

Benar jika alamat tujuan IPv4 / v6 paket memiliki nomor jaringan bersih . Net bisa berupa nama dari / etc / networks atau nomor jaringan (lihat jaringan (4) untuk detailnya).

jaring bersih src

Benar jika alamat sumber IPv4 / v6 paket memiliki nomor jaringan bersih .

bersih bersih

Benar jika salah satu sumber IPv4 / v6 atau alamat tujuan paket memiliki nomor jaringan bersih .

net netmask net netmask

Benar jika alamat IP cocok dengan netmask tertentu. Mungkin memenuhi syarat dengan src atau dst . Perhatikan bahwa sintaks ini tidak berlaku untuk IPv6 net .

net net / len

Benar jika alamat IPv4 / v6 cocok dengan netmask len bit lebar. Mungkin memenuhi syarat dengan src atau dst .

port dst port

Benar jika paketnya adalah ip / tcp, ip / udp, ip6 / tcp atau ip6 / udp dan memiliki port tujuan nilai port . Port bisa berupa nomor atau nama yang digunakan di / etc / services (lihat tcp (4P) dan udp (4P)). Jika nama digunakan, nomor port dan protokol diperiksa. Jika nomor atau nama ambigu digunakan, hanya nomor port yang diperiksa (misalnya, dst port 513 akan mencetak tcp / login traffic dan udp / yang traffic, dan domain port akan mencetak tcp / domain dan udp / domain traffic).

port port src

Benar jika paket memiliki nilai port port sumber.

port port

Benar jika port sumber atau tujuan paket adalah port . Ekspresi port di atas dapat ditambahkan dengan kata kunci, tcp , atau udp , seperti pada:

tcp port port src

yang hanya cocok dengan paket tcp yang port sumbernya adalah port .

kurang panjang

Benar jika paket memiliki panjang kurang dari atau sama dengan panjang . Ini setara dengan:

len <= panjang .

lebih panjang

Benar jika paket memiliki panjang lebih dari atau sama dengan panjang . Ini setara dengan:

len> = panjang .

protokol ip proto

Benar jika paket adalah paket IP (lihat ip (4P)) dari protokol tipe protokol . Protokol bisa berupa nomor atau salah satu nama icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , atau tcp . Perhatikan bahwa pengidentifikasi tcp , udp , dan icmp juga kata kunci dan harus diloloskan melalui backslash (\), yang merupakan \\ di C-shell. Perhatikan bahwa primitif ini tidak mengejar rantai header protokol.

protokol proto ip6

Benar jika paket merupakan paket protokol tipe protokol IPv6. Perhatikan bahwa primitif ini tidak mengejar rantai header protokol.

protokol protochain ip6

Benar jika paket adalah paket IPv6, dan berisi header protokol dengan protokol tipe dalam rantai header protokolnya. Sebagai contoh,

ip6 protochain 6

cocok dengan paket IPv6 apa pun dengan header protokol TCP dalam rantai header protokol. Paket mungkin berisi, misalnya, header otentikasi, header routing, atau header opsi hop-by-hop, antara header IPv6 dan header TCP. Kode BPF yang dipancarkan oleh primitif ini rumit dan tidak dapat dioptimalkan oleh kode pengoptimasi BPF di tcpdump , jadi ini bisa agak lambat.

protokol protochain ip

Setara dengan protokol protochain ip6 , tetapi ini untuk IPv4.

siaran eter

Benar jika paketnya adalah paket broadcast ethernet. Kata kunci eter adalah opsional.

siaran ip

Benar jika paket adalah paket siaran IP. Ini memeriksa baik semua-nol dan semua konvensi siaran, dan mencari subnet mask lokal.

eter multicast

Benar jika paketnya adalah paket multicast ethernet. Kata kunci eter adalah opsional. Ini singkatan untuk ` eter [0] & 1! = 0 '.

multicast ip

Benar jika paketnya adalah paket multicast IP.

multicast ip6

Benar jika paketnya adalah paket multicast IPv6.

protokol proto eter

Benar jika paket adalah tipe eter protokol . Protokol dapat berupa nomor atau salah satu dari nama ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx , atau netbeui . Perhatikan pengidentifikasi ini juga kata kunci dan harus diloloskan melalui backslash (\).

[Dalam kasus FDDI (misalnya, ` fddi protocol arp ') dan Token Ring (misalnya,` tr protocol arp '), untuk sebagian besar dari protokol tersebut, identifikasi protokol berasal dari header 802.2 Logical Link Control (LLC), yang biasanya dilapisi di atas header FDDI atau Token Ring.

Saat memfilter sebagian besar pengidentifikasi protokol pada FDDI atau Token Ring, tcpdump hanya memeriksa bidang ID protokol dari header LLC yang disebut format SNAP dengan Pengidentifikasi Unit Organisasi (OUI) 0x000000, untuk enkapsulasi Ethernet; tidak memeriksa apakah paket tersebut dalam format SNAP dengan OUI 0x000000.

Pengecualiannya adalah iso , yang memeriksa bidang DSAP (Tujuan Layanan Akses Poin) dan SSAP (Sumber Layanan Access Point) dari header LLC, stp dan netbeui , di mana ia memeriksa DSAP dari LLC header, dan atalk , di mana memeriksa paket SNAP-format dengan OUI dari 0x080007 dan etype Appletalk.

Dalam kasus Ethernet, tcpdump memeriksa bidang jenis Ethernet untuk sebagian besar protokol tersebut; pengecualiannya adalah iso , getah , dan netbeui , yang memeriksa kerangka 802.3 dan kemudian memeriksa header LLC seperti halnya untuk FDDI dan Token Ring, atalk , di mana ia memeriksa baik untuk etype Appletalk dalam bingkai Ethernet dan untuk Paket format SNAP seperti halnya untuk FDDI dan Token Ring, aarp , di mana ia memeriksa etype Appletalk ARP baik dalam bingkai Ethernet atau 802.2 SNAP frame dengan OUI dari 0x000000, dan ipx , di mana ia memeriksa untuk IPX etype di bingkai Ethernet, IPX DSAP di header LLC, 802.3 tanpa enkapsulasi header LLC dari IPX, dan IPX etype dalam bingkai SNAP.]

host decnet src

Benar jika alamat sumber DECNET adalah host , yang mungkin merupakan alamat dari format `` 10.123 '', atau nama host DECNET. [Dukungan nama host DECNET hanya tersedia pada sistem Ultrix yang dikonfigurasi untuk menjalankan DECNET.]

tuan rumah deknet dst

Benar jika alamat tujuan DECNET adalah tuan rumah .

host host decnet

Benar jika salah satu sumber DECNET atau alamat tujuan adalah tuan rumah .

ip , ip6 , arp , rarp , atalk , aarp , decnet , iso , stp , ipx , netbeui

Singkatan untuk:

eter proto p

di mana p adalah salah satu protokol di atas.

lat , moprc , mopdl

Singkatan untuk:

eter proto p

di mana p adalah salah satu protokol di atas. Perhatikan bahwa tcpdump saat ini tidak tahu cara mengurai protokol ini.

vlan [vlan_id]

Benar jika paket adalah paket VLAN IEEE 802.1Q. Jika [vlan_id] ditentukan, hanya benar adalah paket memiliki vlan_id yang ditentukan. Perhatikan bahwa kata kunci vlan pertama yang ditemukan dalam ekspresi mengubah decoding offset untuk sisa ekspresi pada asumsi bahwa paket adalah paket VLAN.

tcp , udp , icmp

Singkatan untuk:

ip proto p atau ip6 proto p

di mana p adalah salah satu protokol di atas.

protokol iso proto

Benar jika paket adalah paket OSI protokol tipe protokol . Protokol bisa berupa nomor atau salah satu dari nama-nama clnp , esis , atau isis .

clnp , esis , isis

Singkatan untuk:

iso proto p

di mana p adalah salah satu protokol di atas. Perhatikan bahwa tcpdump melakukan pekerjaan parsing yang tidak lengkap dari protokol ini.

expr relop expr

Benar jika relasi berlaku, di mana relop adalah salah satu dari>, <,> =, <=, = ,! =, Dan expr adalah ekspresi aritmatika yang terdiri dari konstanta integer (dinyatakan dalam sintaks C standar), operator biner normal [+ , -, *, /, &, |], operator panjang, dan akses data paket khusus. Untuk mengakses data di dalam paket, gunakan sintaks berikut:

proto [ expr : size ]

Proto adalah salah satu eter, fddi, tr, ppp, slip, tautan, ip, arp, rarp, tcp, udp, icmp atau ip6 , dan menunjukkan lapisan protokol untuk operasi indeks. ( eter, fddi, tr, ppp, slip dan tautan semua mengacu pada lapisan tautan.) Perhatikan bahwa tcp, udp, dan jenis protokol lapisan atas lainnya hanya berlaku untuk IPv4, bukan IPv6 (ini akan diperbaiki di masa mendatang). Offset byte, relatif terhadap lapisan protokol yang ditunjukkan, diberikan oleh expr . Ukuran bersifat opsional dan menunjukkan jumlah byte di bidang minat; dapat berupa salah satu, dua, atau empat, dan default untuk satu. Operator panjang, ditunjukkan oleh kata kunci len , memberikan panjang paket.

Misalnya, ` eter [0] & 1! = 0 'menangkap semua lalu lintas multicast. Ekspresi ` ip [0] & 0xf! = 5 'menangkap semua paket IP dengan opsi. Ekspresi ` ip [6: 2] & 0x1fff = 0 'hanya menangkap unfragmented datagrams dan frag zero of the fragmented datagrams. Pemeriksaan ini secara implisit diterapkan pada operasi indeks tcp dan udp . Misalnya, tcp [0] selalu berarti byte pertama dari header TCP, dan tidak pernah berarti byte pertama dari fragmen intervening.

Beberapa offset dan nilai lapangan dapat dinyatakan sebagai nama bukan sebagai nilai numerik. Berikut adalah offset field header protokol yang tersedia: icmptype (bidang tipe ICMP), icmpcode (bidang kode ICMP), dan tcpflags (bidang bendera TCP).

Jenis nilai bidang ICMP berikut tersedia: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-redirect , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -tepatikan , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

Nilai-nilai bidang bendera TCP berikut ini tersedia: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitives dapat digabungkan menggunakan:

Kelompok primitif dan operator yang disisipkan (tanda kurung khusus untuk Shell dan harus di-escape).

Negasi (` ! 'Atau` tidak ').

Penggabungan (` && 'atau` dan ').

Bergantian (` || 'atau` atau ').

Negasi memiliki prioritas tertinggi. Silih berganti dan rentetan memiliki prioritas yang sama dan menghubungkan kiri ke kanan. Perhatikan bahwa eksplisit dan token, bukan penjajaran, sekarang diperlukan untuk penggabungan.

Jika pengenal diberikan tanpa kata kunci, kata kunci terbaru diasumsikan. Sebagai contoh,

bukan tuan rumah vs dan ace

adalah kependekan dari

bukan host vs dan host ace

yang seharusnya tidak membingungkan

tidak (host vs atau ace)

Argumen ekspresi dapat diteruskan ke tcpdump sebagai argumen tunggal atau sebagai argumen ganda, mana yang lebih nyaman. Secara umum, jika ekspresi berisi metakarakter Shell, lebih mudah untuk menyampaikannya sebagai argumen tunggal yang dikutip. Beberapa argumen digabung dengan spasi sebelum diurai.

CONTOH

Untuk mencetak semua paket tiba pada atau berangkat dari matahari terbenam :

tcpdump host sundown

Untuk mencetak lalu lintas antara helios dan panas atau ace :

tcpdump host helios dan \ (hot or ace \)

Untuk mencetak semua paket IP antara ace dan host manapun kecuali helios :

tcpdump ip host ace dan bukan helios

Untuk mencetak semua lalu lintas antara host dan host lokal di Berkeley:

tcpdump net ucb-ether

Untuk mencetak semua lalu lintas ftp melalui snup internet gateway: (perhatikan bahwa ungkapan tersebut dikutip untuk mencegah shell dari (mis-) menafsirkan tanda kurung):

tcpdump 'gateway snup dan (port ftp atau ftp-data)'

Untuk mencetak trafik yang tidak bersumber dari atau menuju ke host lokal (jika Anda melakukan gateway ke jaringan lain, hal-hal ini seharusnya tidak pernah masuk ke jaringan lokal Anda).

tcpdump ip dan bukan localnet bersih

Untuk mencetak paket awal dan akhir (paket SYN dan FIN) dari setiap percakapan TCP yang melibatkan host non-lokal.

tcpdump 'tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 dan bukan src dan dst net localnet '

Untuk mencetak paket IP lebih lama dari 576 byte yang dikirim melalui snup gateway:

tcpdump 'gateway snup dan ip [2: 2]> 576'

Untuk mencetak siaran IP atau paket multicast yang tidak dikirim melalui siaran ethernet atau multicast:

tcpdump 'ether [0] & 1 = 0 dan ip [16]> = 224'

Untuk mencetak semua paket ICMP yang bukan permintaan / balasan echo (yaitu, bukan paket ping):

tcpdump 'icmp [icmptype]! = icmp-echo dan icmp [icmptype]! = icmp-echoreply'

FORMAT OUTPUT

Output dari tcpdump bergantung pada protokol. Berikut ini memberikan deskripsi singkat dan contoh sebagian besar format.

Header Tingkat Tautan

Jika opsi '-e' diberikan, header level link akan dicetak. Pada ethernet, alamat sumber dan tujuan, protokol, dan panjang paket dicetak.

Pada jaringan FDDI, opsi '-e' menyebabkan tcpdump untuk mencetak bidang `frame control ', alamat sumber dan tujuan, dan panjang paket. (Bidang `frame control 'mengatur interpretasi sisa paket. Paket-paket normal (seperti yang mengandung IP datagrams) adalah paket` async', dengan nilai prioritas antara 0 dan 7, misalnya, ` async4 '. paket diasumsikan mengandung paket 802.2 Logical Link Control (LLC), header LLC dicetak jika bukan datagram ISO atau paket SNAP.

Pada jaringan Token Ring, opsi '-e' menyebabkan tcpdump untuk mencetak 'kontrol akses' dan 'frame control', alamat sumber dan tujuan, dan panjang paket. Seperti pada jaringan FDDI, paket diasumsikan mengandung paket LLC. Terlepas dari apakah opsi '-e' ditentukan atau tidak, informasi routing sumber dicetak untuk paket source-routed.

(NB: Deskripsi berikut ini mengasumsikan keakraban dengan algoritma kompresi SLIP yang dijelaskan dalam RFC-1144.)

Pada tautan SLIP, indikator arah (`` I '' untuk masuk, `` O '' untuk keluar), jenis paket, dan informasi kompresi dicetak. Jenis paket dicetak terlebih dahulu. Ketiga jenis itu adalah ip , utcp , dan ctcp . Tidak ada informasi tautan lebih lanjut yang dicetak untuk paket-paket ip . Untuk paket TCP, pengidentifikasi koneksi dicetak mengikuti jenis. Jika paket dikompres, header yang dikodekan akan dicetak. Kasus-kasus khusus dicetak sebagai * S + n dan * SA + n , di mana n adalah jumlah dimana nomor urut (atau nomor urut dan ack) telah berubah. Jika itu bukan kasus khusus, nol atau lebih banyak perubahan dicetak. Perubahan ditunjukkan oleh U (penunjuk mendesak), W (jendela), A (ack), S (nomor urut), dan I (ID paket), diikuti oleh delta (+ n atau -n), atau nilai baru (= n). Akhirnya, jumlah data dalam paket dan panjang header terkompresi dicetak.

Sebagai contoh, baris berikut menunjukkan paket TCP terkompresi keluar, dengan pengenal koneksi implisit; ack telah berubah sebesar 6, nomor urut sebesar 49, dan ID paket sebesar 6; ada 3 byte data dan 6 byte header terkompresi:

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

Paket ARP / RARP

Output Arp / rarp menunjukkan jenis permintaan dan argumennya. Format ini dimaksudkan untuk menjadi jelas. Berikut ini adalah contoh singkat yang diambil dari awal `rlogin 'dari host rtsg ke host csam :

arp who-have csam memberitahu rtsg arp reply csam is-at CSAM

Baris pertama mengatakan bahwa rtsg mengirim paket arp yang menanyakan alamat ethernet dari host internet csam. Csam menjawab dengan alamat ethernetnya (dalam contoh ini, alamat ethernet ada dalam huruf besar dan alamat internet dalam huruf kecil).

Ini akan terlihat kurang berlebihan jika kita telah melakukan tcpdump -n :

arp who-has 128.3.254.6 beri tahu 128.3.254.68 balasan arp 128.3.254.6 is-at 02: 07: 01: 00: 01: c4

Jika kita telah melakukan tcpdump -e , fakta bahwa paket pertama disiarkan dan yang kedua adalah point-to-point akan terlihat:

RTSG Broadcast 0806 64: arp who-has csam memberitahu rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM

Untuk paket pertama ini mengatakan alamat sumber ethernet adalah RTSG, tujuannya adalah alamat broadcast ethernet, tipe field yang mengandung hex 0806 (type ETHER_ARP) dan total panjangnya adalah 64 byte.

Paket TCP

(NB: Uraian berikut ini mengasumsikan keakraban dengan protokol TCP yang dijelaskan dalam RFC-793. Jika Anda tidak akrab dengan protokol, baik uraian ini maupun tcpdump akan banyak berguna bagi Anda.)

Format umum dari jalur protokol tcp adalah:

src> dst: flags data-seqno ack window opsi mendesak

Src dan dst adalah alamat IP dan port sumber dan tujuan. Bendera adalah beberapa kombinasi S (SYN), F (FIN), P (PUSH) atau R (RST) atau satu `. ' (tidak ada bendera). Data-seqno menggambarkan porsi ruang urutan yang dicakup oleh data dalam paket ini (lihat contoh di bawah). Ack adalah nomor urut dari data berikutnya yang diharapkan ke arah lain pada koneksi ini. Jendela adalah jumlah byte dari menerima ruang buffer yang tersedia ke arah lain pada koneksi ini. Urg menunjukkan ada data `mendesak 'di dalam paket. Pilihannya adalah opsi tcp yang diapit oleh kurung sudut (misalnya, ).

Src, dst, dan bendera selalu ada. Bidang lainnya tergantung pada isi dari tcp protocol header paket dan hanya keluaran jika sesuai.

Berikut adalah bagian pembukaan rlogin dari host rtsg ke host csam .

rtsg.1023> csam.login: S 768512: 768512 (0) menang 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 menang 4096 rtsg.1023> csam. masuk: . ack 1 win 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 menang 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 win 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 menang 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 win 4077 urg 1

Baris pertama mengatakan bahwa tcp port 1023 pada rtsg mengirim paket ke port login pada csam. S menunjukkan bahwa bendera SYN telah diatur. Nomor urut paket adalah 768512 dan tidak mengandung data. (Notasinya adalah `first: last (nbytes) 'yang berarti` nomor urut pertama hingga tetapi tidak termasuk yang terakhir yaitu nbytes bytes dari data pengguna'.) Tidak ada piggy-backed ack, jendela penerimaan yang tersedia adalah 4096 byte dan ada opsi ukuran segmen maksimum yang meminta mss 1024 byte.

Csam membalas dengan paket yang serupa kecuali berisi sebuah piggy-backed ack untuk rtsg's SYN. Rtsg kemudian meng-acs SYN csam. The `. ' berarti tidak ada bendera yang disetel. Paket tidak berisi data sehingga tidak ada nomor urut data. Perhatikan bahwa nomor urut ack adalah bilangan bulat kecil (1). Pertama kali tcpdump melihat tcp `percakapan ', ia mencetak nomor urut dari paket. Pada paket percakapan berikutnya, perbedaan antara nomor urut paket saat ini dan nomor urut awal ini dicetak. Ini berarti bahwa nomor urut setelah yang pertama dapat diartikan sebagai posisi byte relatif dalam aliran data percakapan (dengan byte data pertama setiap arah adalah `1 '). `-S 'akan mengesampingkan fitur ini, menyebabkan nomor urut aslinya menjadi output.

Pada baris ke-6, rtsg mengirim csam 19 byte data (byte 2 hingga 20 di sisi rtsg -> csam dari percakapan). Bendera PUSH diatur dalam paket. Pada baris 7, csam mengatakan itu menerima data yang dikirim oleh rtsg hingga tetapi tidak termasuk byte 21. Sebagian besar data ini tampaknya duduk di buffer socket sejak menerima jendela csam telah mendapat 19 byte lebih kecil. Csam juga mengirimkan satu byte data ke rtsg dalam paket ini. Pada baris 8 dan 9, csam mengirim dua byte data mendesak dan didorong ke rtsg.

Jika snapshot itu cukup kecil sehingga tcpdump tidak menangkap header TCP penuh, ia akan menginterpretasikan sebanyak mungkin header yang bisa dan kemudian melaporkannya `` [| tcp ] '' untuk menunjukkan sisanya tidak dapat ditafsirkan. Jika header berisi opsi palsu (satu dengan panjang yang terlalu kecil atau di luar akhir header), tcpdump melaporkannya sebagai `` [pilihan buruk ] '' dan tidak menafsirkan opsi lebih lanjut (karena tidak mungkin untuk mengatakan di mana mereka memulai). Jika panjang header menunjukkan opsi yang ada tetapi panjang datagram IP tidak cukup lama untuk opsi untuk benar-benar ada, tcpdump melaporkannya sebagai `` [ hdr panjang buruk ] ''.

Menangkap paket TCP dengan kombinasi bendera tertentu (SYN-ACK, URG-ACK, dll.)

Ada 8 bit di bagian bit kontrol dari header TCP:

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

Mari kita berasumsi bahwa kita ingin menonton paket yang digunakan dalam membangun koneksi TCP. Ingat bahwa TCP menggunakan protokol handshake 3 arah ketika menginisialisasi koneksi baru; urutan koneksi berkaitan dengan bit kontrol TCP

1) Pemanggil mengirim SYN

2) Penerima merespons dengan SYN, ACK

3) Pemanggil mengirim ACK

Sekarang kami tertarik untuk menangkap paket yang hanya memiliki bit SYN (Langkah 1). Perhatikan bahwa kita tidak menginginkan paket dari langkah 2 (SYN-ACK), hanya SYN awal yang sederhana. Yang kita butuhkan adalah ekspresi filter yang benar untuk tcpdump .

Ingat struktur header TCP tanpa opsi:

0 15 31 ----------------------------------------------- ------------------ | port sumber | pelabuhan tujuan | -------------------------------------------------- --------------- | nomor urut -------------------------------------------------- --------------- | nomor pengakuan | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | ukuran jendela | -------------------------------------------------- --------------- | TCP checksum | penunjuk mendesak | -------------------------------------------------- ---------------

Sebuah header TCP biasanya menyimpan 20 oktet data, kecuali ada opsi. Baris pertama dari grafik mengandung oktet 0 - 3, baris kedua menunjukkan oktet 4 - 7 dll.

Mulai menghitung dengan 0, bit kontrol TCP yang relevan terkandung dalam oktet 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | ukuran jendela | ---------------- | --------------- | --------------- | - --------------- | | Oktet ke-13 | | |

Mari kita lihat oktet no. 13:

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

Ini adalah bit kontrol TCP yang kami minati. Kami telah menghitung bit dalam oktet ini dari 0 hingga 7, kanan ke kiri, sehingga bit PSH adalah bit nomor 3, sedangkan bit URG adalah nomor 5.

Ingat bahwa kita ingin menangkap paket hanya dengan set SYN. Mari kita lihat apa yang terjadi pada oktet 13 jika datagram TCP tiba dengan bit SYN yang disetel di tajuknya:

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

Melihat bagian kontrol bit kita melihat bahwa hanya bit 1 (SYN) yang diatur.

Dengan asumsi bahwa nomor oktet 13 adalah bilangan bulat unsigned 8-bit dalam urutan byte jaringan, nilai biner oktet ini adalah

00000010

dan representasi desimalnya adalah

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

Kami hampir selesai, karena sekarang kita tahu bahwa jika hanya SYN yang diset, nilai dari oktet ke-13 di header TCP, ketika ditafsirkan sebagai 8-bit unsigned integer dalam urutan byte jaringan, harus tepat 2.

Hubungan ini dapat dinyatakan sebagai

tcp [13] == 2

Kita dapat menggunakan ungkapan ini sebagai filter untuk tcpdump agar dapat menonton paket yang hanya memiliki set SYN:

tcpdump -i xl0 tcp [13] == 2

Ekspresi mengatakan "biarkan oktet ke-13 dari sebuah datagram TCP memiliki nilai desimal 2", yang persis seperti yang kita inginkan.

Sekarang, mari kita asumsikan bahwa kita perlu menangkap paket SYN, tetapi kita tidak peduli apakah ACK atau bit kontrol TCP lainnya diatur pada saat yang bersamaan. Mari kita lihat apa yang terjadi pada oktet 13 ketika sebuah datagram TCP dengan set SYN-ACK tiba:

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

Sekarang bit 1 dan 4 diatur dalam oktet ke 13. Nilai biner oktet 13 adalah


00010010

yang diterjemahkan menjadi desimal

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

Sekarang kita tidak bisa hanya menggunakan 'tcp [13] == 18' dalam ekspresi filter tcpdump , karena itu akan memilih hanya paket-paket yang memiliki SYN-ACK yang ditetapkan, tetapi bukan hanya dengan set SYN saja. Ingat bahwa kami tidak peduli apakah ACK atau bit kontrol lainnya diatur selama SYN diatur.

Untuk mencapai tujuan kita, kita perlu secara logis DAN nilai biner oktet 13 dengan beberapa nilai lain untuk mempertahankan bit SYN. Kami tahu bahwa kami ingin SYN diatur dalam hal apa pun, jadi kami akan secara logis DAN nilai dalam oktet ke-13 dengan nilai biner SYN:

00010010 SYN-ACK 00000010 SYN DAN 00000010 (kami ingin SYN) DAN 00000010 (kami ingin SYN) -------- -------- = 00000010 = 00000010

Kami melihat bahwa operasi DAN ini memberikan hasil yang sama terlepas apakah ACK atau bit kontrol TCP lain diatur. Representasi desimal dari nilai AND serta hasil dari operasi ini adalah 2 (biner 00000010), jadi kita tahu bahwa untuk paket dengan SYN mengatur hubungan berikut harus berlaku:

((nilai oktet 13) DAN (2)) == (2)

Ini mengarahkan kita ke ekspresi filter tcpdump

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

Perhatikan bahwa Anda harus menggunakan tanda kutip tunggal atau backslash dalam ekspresi untuk menyembunyikan karakter khusus AND ('&') dari shell.

Paket UDP

Format UDP diilustrasikan oleh paket rwho ini:

actinide.who> broadcast.who: udp 84

Ini mengatakan bahwa port yang di host actinide mengirim datagram udp ke port yang pada siaran host, alamat broadcast Internet. Paket itu berisi 84 byte data pengguna.

Beberapa layanan UDP dikenali (dari sumber atau nomor port tujuan) dan informasi protokol tingkat yang lebih tinggi dicetak. Secara khusus, permintaan layanan Nama Domain (RFC-1034/1035) dan Sun RPC panggilan (RFC-1050) ke NFS.

Permintaan Server Nama UDP

(NB: Deskripsi berikut ini mengasumsikan keakraban dengan protokol Layanan Domain yang dijelaskan dalam RFC-1035. Jika Anda tidak terbiasa dengan protokol, deskripsi berikut akan tampak ditulis dalam bahasa Yunani.)

Permintaan server nama diformat sebagai

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

Host h2opolo meminta server domain pada helios untuk mencatat alamat (qtype = A) yang terkait dengan nama ucbvax.berkeley.edu. Id kueri adalah `3 '. The `+ 'menunjukkan tanda yang diinginkan rekursi ditetapkan. Panjang kueri adalah 37 byte, tidak termasuk header protokol UDP dan IP. Operasi kueri adalah yang normal, Query , jadi bidang op dihilangkan. Jika op itu ada yang lain, itu akan dicetak antara `3 'dan` +'. Demikian pula, qclass adalah yang normal, C_IN , dan dihilangkan. Setiap qclass lainnya akan dicetak segera setelah 'A'.

Beberapa anomali diperiksa dan dapat mengakibatkan bidang tambahan diapit oleh tanda kurung siku: Jika suatu query berisi jawaban, catatan otoritas atau bagian catatan tambahan, makaount , nscount , atau arcount dicetak sebagai `[ n a] ',` [ n n ] 'atau `[ n au]' di mana n adalah hitungan yang sesuai. Jika salah satu bit respons ditetapkan (AA, RA atau rcode) atau salah satu dari bit `harus nol 'ditetapkan dalam byte dua dan tiga,` [b2 & 3 = x ]' dicetak, di mana x adalah nilai hex dari header byte dua dan tiga.

Tanggapan Server Nama UDP

Respons server nama diformat sebagai

src> dst: id op rcode menandai data jenis kelas a / n / au (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)

Dalam contoh pertama, helios menanggapi permintaan id 3 dari h2opolo dengan 3 catatan jawaban, 3 catatan server nama dan 7 catatan tambahan. Catatan jawaban pertama adalah tipe A (alamat) dan datanya adalah alamat internet 128.32.137.3. Ukuran total respons adalah 273 byte, kecuali header UDP dan IP. Op (Query) dan kode respon (NoError) dihilangkan, seperti kelas (C_IN) dari A record.

Dalam contoh kedua, helios menanggapi permintaan 2 dengan kode respon dari domain tidak ada (NXDomain) tanpa jawaban, satu server nama dan tidak ada catatan otoritas. The `* 'menunjukkan bahwa bit jawaban otoritatif ditetapkan. Karena tidak ada jawaban, tidak ada tipe, kelas atau data yang dicetak.

Karakter bendera lain yang mungkin muncul adalah `- '(rekursi tersedia, RA, tidak diatur) dan` |' (pesan dipotong, TC, atur). Jika bagian `pertanyaan 'tidak berisi persis satu entri,` [ n q]' akan dicetak.

Perhatikan bahwa permintaan dan respons server nama cenderung besar dan snapback default 68 byte mungkin tidak cukup menangkap paket untuk dicetak. Gunakan tanda -s untuk meningkatkan snaplen jika Anda perlu menyelidiki secara serius lalu lintas server nama. ` -s 128 'telah bekerja dengan baik untukku.

Penguraian SMB / CIFS

tcpdump sekarang mencakup dekode SMB / CIFS / NBT yang cukup ekstensif untuk data tentang UDP / 137, UDP / 138 dan TCP / 139. Beberapa decoding primitif dari IPX dan NetBEUI SMB data juga dilakukan.

Secara default decode yang cukup minim dilakukan, dengan dekode yang jauh lebih rinci dilakukan jika -v digunakan. Berhati-hatilah bahwa dengan paket SMB tunggal dapat mengambil halaman atau lebih, jadi hanya gunakan -v jika Anda benar-benar menginginkan semua detail yang mengerikan.

Jika Anda mendekodekan sesi SMB yang berisi string unicode, maka Anda mungkin ingin mengatur variabel lingkungan USE_UNICODE menjadi 1. Sebuah patch untuk deteksi otomatis unicode srings akan diterima.

Untuk informasi tentang format paket SMB dan apa arti semua bidang te, lihat www.cifs.org atau direktori pub / samba / spesifikasi / di situs cermin samba.org favorit Anda. Tambalan SMB ditulis oleh Andrew Tridgell (tridge@samba.org).

Permintaan NFS dan Balasan

Permintaan dan balasan Sun NFS (Network File System) dicetak sebagai:

src.xid> dst.nfs: len op args src.nfs> dst.xid: balas stat len ​​op hasil sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: balas ok 40 readlink "../var" sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096.6878 "xcolors" wrl.nfs> sushi.201b: balas ok 128 lookup fh 9,74 / 4134.3150

Pada baris pertama, host sushi mengirim transaksi dengan id 6709 ke wrl (perhatikan bahwa nomor yang mengikuti host src adalah id transaksi, bukan port sumber). Permintaan itu 112 byte, tidak termasuk header UDP dan IP. Operasi itu sebuah readlink (baca lambang simbolis) pada file handle ( fh ) 21,24 / 10.731657119. (Jika ada yang beruntung, seperti dalam kasus ini, pegangan file dapat diartikan sebagai pasangan nomor perangkat besar, kecil, diikuti oleh nomor inode dan nomor generasi.) Wrl balasan `ok 'dengan isi tautan.

Pada baris ketiga, sushi meminta wrl untuk mencari nama ` xcolors 'di file direktori 9,74 / 4096,6878. Perhatikan bahwa data yang dicetak tergantung pada jenis operasi. Format ini dimaksudkan untuk menjadi jelas jika dibaca bersama dengan spesifikasi protokol NFS.

Jika flag -v (verbose) diberikan, informasi tambahan dicetak. Sebagai contoh:

sushi.1372a> wrl.nfs: 148 baca fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: balas ok 1472 baca REG 100664 id 417/0 sz 29388

(-v juga mencetak header IP TTL, ID, panjang, dan bidang fragmentasi, yang telah dihilangkan dari contoh ini.) Pada baris pertama, sushi meminta wrl untuk membaca 8192 byte dari file 21,11 / 12.195, pada offset byte 24576. Wrl balasan `ok '; paket yang ditampilkan pada baris kedua adalah fragmen pertama dari balasan, dan karenanya hanya 1472 byte panjang (byte lain akan mengikuti fragmen berikutnya, tetapi fragmen ini tidak memiliki header NFS atau bahkan UDP dan jadi mungkin tidak dicetak, tergantung pada ekspresi filter yang digunakan). Karena flag -v diberikan, beberapa atribut file (yang dikembalikan selain data file) dicetak: jenis file (`` REG '', untuk file biasa), mode file (dalam oktal), uid dan gid, dan ukuran file.

Jika bendera -v diberikan lebih dari satu kali, bahkan lebih banyak detail dicetak.

Perhatikan bahwa permintaan NFS sangat besar dan banyak detail tidak akan dicetak kecuali snaplen ditingkatkan. Coba gunakan ` -s 192 'untuk menonton lalu lintas NFS.

Paket balasan NFS tidak secara eksplisit mengidentifikasi operasi RPC. Sebagai gantinya, tcpdump melacak permintaan `` recent '', dan mencocokkannya dengan balasan menggunakan ID transaksi. Jika balasan tidak mengikuti dengan ketat permintaan yang terkait, itu mungkin tidak dapat diuraikan.

Permintaan AFS dan Balasan

Permintaan dan balasan Transarc AFS (Andrew File System) dicetak sebagai:

src.sport> dst.dport: rx packet-type src.sport> dst.dport: rx packet-type service call nama panggilan args src.sport> dst.dport: rx packet-type service reply call-name args elvis. 7001> pike.afsfs: rx data fs panggilan rename old fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx data fs balasan ganti nama

Di baris pertama, host elvis mengirim paket RX ke tombak. Ini adalah paket data RX ke layanan fs (fileserver), dan merupakan awal dari panggilan RPC. Panggilan RPC adalah nama, dengan file direktori lama id dari 536876964/1/1 dan nama file lama `.newsrc.new ', dan id file direktori baru 536876964/1/1 dan nama file baru`. newsrc '. Host tombak merespon dengan balasan RPC ke panggilan rename (yang berhasil, karena itu adalah paket data dan bukan paket batalkan).

Secara umum, semua AFS RPC didekodekan setidaknya oleh nama panggilan RPC. Kebanyakan AFS RPC memiliki setidaknya beberapa argumen yang diterjemahkan (umumnya hanya argumen `menarik ', untuk beberapa definisi yang menarik).

Format ini dimaksudkan untuk mendeskripsikan diri, tetapi mungkin tidak akan berguna bagi orang yang tidak akrab dengan cara kerja AFS dan RX.

Jika flag -v (verbose) diberikan dua kali, paket acknowledgment dan informasi header tambahan dicetak, seperti ID panggilan RX, nomor panggilan, nomor urut, nomor seri, dan bendera paket RX.

Jika flag -v diberikan dua kali, informasi tambahan dicetak, seperti ID panggilan RX, nomor seri, dan bendera paket RX. Informasi negosiasi MTU juga dicetak dari paket ack RX.

Jika bendera -v diberikan tiga kali, indeks keamanan dan ID layanan dicetak.

Kode kesalahan dicetak untuk paket abort, dengan pengecualian paket beacon Ubik (karena abort paket digunakan untuk menandakan ya suara untuk protokol Ubik).

Perhatikan bahwa permintaan AFS sangat besar dan banyak argumen tidak akan dicetak kecuali snaplen ditingkatkan. Coba gunakan ` -s 256 'untuk menonton lalu lintas AFS.

Paket balasan AFS tidak secara eksplisit mengidentifikasi operasi RPC. Sebagai gantinya, tcpdump melacak permintaan `` recent '', dan mencocokkannya dengan balasan menggunakan nomor panggilan dan ID layanan. Jika balasan tidak mengikuti dengan ketat permintaan yang terkait, itu mungkin tidak dapat diuraikan.

KIP Appletalk (DDP dalam UDP)

Paket DDP Appletalk yang dikemas dalam UDP datagrams di-encapsulated dan dibuang sebagai paket DDP (yaitu, semua informasi header UDP dibuang). File /etc/atalk.names digunakan untuk menerjemahkan net appletalk dan nomor node ke nama. Baris dalam file ini memiliki formulir

nama nomor 1.254 eter 16.1 icsd-net 1.254.110 ace

Dua baris pertama memberi nama jaringan appletalk. Baris ketiga memberikan nama host tertentu (host dibedakan dari net oleh oktet ke-3 dalam nomor - nomor net harus memiliki dua oktet dan nomor host harus memiliki tiga oktet.) Jumlah dan nama harus dipisahkan oleh whitespace (kosong atau tab). File /etc/atalk.names dapat berisi baris kosong atau baris komentar (baris yang diawali dengan `# ').

Alamat Appletalk dicetak dalam bentuk:

net.host.port 144.1.209.2> icsd-net.112.220 office.2> icsd-net.112.220 jssmag.149.235> icsd-net.2

(Jika berkas /etc/atalk.names tidak ada atau tidak berisi entri untuk sejumlah host / net number appletalk, alamat dicetak dalam bentuk angka.) Pada contoh pertama, NBP (DDP port 2) pada net 144.1 node 209 mengirim ke apa pun yang mendengarkan pada port 220 dari node icsd net 112. Baris kedua adalah sama kecuali nama lengkap dari node sumber diketahui (`kantor '). Baris ketiga adalah pengiriman dari port 235 pada net jssmag node 149 untuk disiarkan pada port NBP icsd-net (perhatikan bahwa alamat broadcast (255) ditunjukkan dengan nama net tanpa nomor host - karena alasan ini adalah ide yang bagus untuk menjaga nama node dan nama net berbeda di /etc/atalk.names).

NBP (protokol pengikatan nama) dan paket ATP (Appletalk transaction protocol) telah diinterpretasikan isinya. Protokol lain hanya membuang nama protokol (atau nomor jika tidak ada nama yang terdaftar untuk protokol) dan ukuran paket.

Paket NBP diformat seperti contoh berikut:

icsd-net.112.220> jssmag.2: nbp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp-reply 190: "RM1140: LaserWriter @ *" 250 techpit.2> icsd -net.112.220: nbp-reply 190: "techpit: LaserWriter @ *" 186

Baris pertama adalah permintaan pencarian nama untuk laserwriter yang dikirim oleh net icsd host 112 dan disiarkan pada jssmag net. ID nbp untuk pencarian adalah 190. Baris kedua menunjukkan balasan untuk permintaan ini (perhatikan bahwa ia memiliki id yang sama) dari host jssmag.209 yang mengatakan bahwa ia memiliki sumber laserwriter bernama "RM1140" terdaftar di port 250. Ketiga baris adalah jawaban lain untuk permintaan yang sama dengan mengatakan tuan rumah techpit memiliki laserwriter "techpit" terdaftar di port 186.

Pemformatan paket ATP ditunjukkan dengan contoh berikut:

jssmag.209.165> helios.132: atp-req 12266 <0-7> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 0 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 1 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 2 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios.132> jssmag.209.165: atp- resp 12266: 4 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 6 (512) 0xae040000 helios.132> jssmag. 209.165: atp-resp * 12266: 7 (512) 0xae040000 jssmag.209.165> helios.132: atp-req 12266 <3,5> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios .132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 jssmag.209.165> helios.132: atp-rel 12266 <0-7> 0xae030001 jssmag.209.133> helios.132: atp-req * 12267 <0 -7> 0xae030002

Jssmag.209 memulai id transaksi 12266 dengan host helios dengan meminta hingga 8 paket (the `<0-7> '). Nomor hex di akhir baris adalah nilai bidang `userdata 'dalam permintaan.

Helios merespon dengan 8 paket 512-byte. The `: digit 'berikut id transaksi memberikan nomor urutan paket dalam transaksi dan nomor di parens adalah jumlah data dalam paket, tidak termasuk header atp. The `* 'pada paket 7 menunjukkan bahwa bit EOM ditetapkan.

Jssmag.209 kemudian meminta paket 3 & 5 ditransmisikan ulang. Helios mengirim ulang mereka lalu jssmag.209 merilis transaksi. Akhirnya, jssmag.209 memulai permintaan berikutnya. The `* 'pada permintaan menunjukkan bahwa XO (` tepat sekali') tidak diatur.

Fragmentasi IP

Datagram Internet yang terfragmentasi dicetak sebagai

( id frag : ukuran @ offset +) ( id frag : ukuran @ offset )

(Bentuk pertama menunjukkan ada lebih banyak fragmen. Yang kedua menunjukkan ini adalah fragmen terakhir.)

Id adalah id fragmen. Ukuran adalah ukuran fragmen (dalam byte) tidak termasuk header IP. Offset adalah offset fragmen ini (dalam byte) dalam datagram asli.

Informasi fragmen adalah output untuk setiap fragmen. Fragmen pertama berisi header protokol tingkat yang lebih tinggi dan info frag dicetak setelah info protokol. Fragmen setelah yang pertama tidak berisi header protokol tingkat yang lebih tinggi dan info frag dicetak setelah alamat sumber dan tujuan. Sebagai contoh, di sini adalah bagian dari ftp dari arizona.edu ke lbl-rtsg.arpa melalui koneksi CSNET yang tampaknya tidak menangani datagram 576 byte:

arizona.ftp-data> rtsg.1170:. 1024: 1332 (308) ack 1 win 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (frag 595a: 204 @ 328) rtsg.1170> arizona.ftp-data:. ack 1536 menang 2560

Ada beberapa hal yang perlu diperhatikan di sini: Pertama, alamat di baris ke-2 tidak menyertakan nomor port. Ini karena informasi protokol TCP semuanya ada di fragmen pertama dan kita tidak tahu apa nomor port atau nomor urut ketika kita mencetak fragmen selanjutnya. Kedua, informasi urutan tcp di baris pertama dicetak seolah-olah ada 308 byte data pengguna ketika, pada kenyataannya, ada 512 byte (308 di frag pertama dan 204 di kedua). Jika Anda mencari lubang di ruang urutan atau mencoba untuk mencocokkan dengan paket, ini bisa menipu Anda.

Paket dengan IP tidak fragmen bendera ditandai dengan trailing (DF) .

Cap waktu

Secara default, semua jalur output didahului oleh stempel waktu. Stempel waktu adalah waktu jam saat ini dalam formulir

hh: mm: ss.frac

dan seakurat jam kernel. Stempel waktu mencerminkan waktu pertama kali kernel melihat paket. Tidak ada upaya yang dilakukan untuk memperhitungkan jeda waktu antara ketika antarmuka ethernet menghapus paket dari kabel dan ketika kernel menservis 'interupsi paket baru'.

LIHAT JUGA

lalu lintas (1C), nit (4P), bpf (4), pcap (3)

Penting: Gunakan perintah man ( % man ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.