用tcpdump指令來查看本機所接收與發送的封包:
tcpdump是一款軟體(有些版本的Linux系統可能在預設上並沒有安裝此軟體),其功能多元、用法複雜,在此僅介紹一些常用且基本的功能,即是查看封包的接收(或發送)時間、來源、目標、甚至是封包內容…等等。用法如下:
tcpdump 選項 -i 網卡代號 篩選格式
輸入此指令後,系統開始進入監聽模式而對該網卡進行監聽,並且持續回報監聽的內容。若要終止監聽模式,可按<ctrl>+<c>。
※ 註:另有許多圖形介面軟體可查看封包,如wireshark…等,在此不介紹。
(1) 其中,選項有:
※ -q:簡化查詢結果,再顯示出來。
※ -nn:顯示來源主機和目標主機時,用其IP位址以及埠號來表示(預設是主機名稱來表示)。
※ -A:用ASCII解碼封包資料後顯示出來。
※ -X:用16進位碼顯示封包資料,也用ASCII解碼封包資料後顯示,兩者可做對照。
※ -e:顯示封包中之訊框的表頭(預設是顯示TCP封包的表頭)。因此顯示來源主機和目標主機時,會用實體位址來表示。
※ -c N:表示在監聽到N個封包後就停止監聽。
※ -w 檔案名:將進入監聽模式後、直到退出監聽模式期間,所有的監聽內容儲存在該檔案中(而非顯示在螢幕上)。不過所儲存的內容可能是經過編碼,需要用tcpdump -r 檔案名 來解碼才能讀取。
(2) 監聽模式可以透過篩選格式的設定,篩選掉使用者不感興趣的封包,而只顯示一些特定的封包。篩選格式由條件式組成。
(2-1) 條件式代表要篩選留下的封包,常用的條件式如下:
※ host 主機名稱 或 host IP位址:表示與該主機名稱或IP位址有關的封包。
※ net 某個網段的net ID:表示與網段有關的封包。
※ src host IP位址 或 src net 某個網段的net ID:表示其來源主機IP位址是IP位址的封包,或其來源主機的網段net ID為某個網段的net ID的封包。
※ dst host IP位址 或 dst net 某個網段的net ID:表示其目標主機IP位址是IP位址的封包,或其目標主機的網段net ID為某個網段的net ID的封包。
※ port N:和N號埠口有關的封包。
※ src port N:來源埠口為N號埠口的封包。
※ dst port N:目標埠口為N號埠口的封包。
※ 通訊協定:表示使用該通訊協定的封包。通訊協定可為tcp、udp…等。
(2-2) 條件式與條件式之間可用and連接,表示條件式之間交集;亦可用or連接,表示條件式的聯集。
(3) 監聽模式中會顯示監聽結果。一個封包的資訊,顯示在同一行。例如,輸入tcpdump -nn -c 5 -i eth0 tcp,顯示的封包資訊為:
01:28:52.426090 IP 192.168.1.103.55952 > 202.43.192.109.443: Flags [P.], seq 1:374, ack 1, win 92, options [nop,nop,TS val 1572161 ecr 1846681710], length 373
其中,各項目說明如下:
01:28:52.426090 |
表示此封包由主機接收或者由主機發送的時間,在01時、28分、52.426090秒。 |
IP |
表示此封包透過IP協定來傳輸。 |
192.168.1.103.55952 > |
表示此封包的來源主機之IP位址。最後面的55932是埠號。 |
202.43.192.109.443: |
表示此封包的目標主機之IP位址。最後面的443是埠號。 |
Flags [P.] |
[]內的字母表示此封包的控制旗標。 |
seq 1:374 |
表示此封包的「封包序號」。在資料開頭的序號為1,資料結尾的序號為374,結尾序號與開頭序號相減之值,代表封包資料量大小(僅是封包所要傳輸的資料量,並非封包總長度),單位是byte。 ※註:一般所謂的「封包序號」,是指資料開頭的序號。 |
ack 1 |
表示此封包的「確認序號」。 |
win 92 |
表示此封包的「window(剩餘緩衝器容量) 」為92 bytes。 |
options [nop,nop,TS val 1572161 ecr 1846681710] |
表示此封包的「options」,不在此討論。 |
length 373 |
表示此封包的資料量是 373 bytes。 |
留言列表