請問tcpdump跟awk這個指令 - Linux

By Franklin
at 2009-12-29T04:31
at 2009-12-29T04:31
Table of Contents
※ 引述《who4 (哥哥最愛獅子丸了)》之銘言:
: 我想要請問tcpdump是否可以一邊監控封包
: 一邊得知在傳送的過程中是否有封包漏掉的情形
: 又是在哪一段漏掉的,掉了多少封包?
這有點難
tcp 還有機會 ,
檢查各 connection 的 seq/ack num 對應 ,
不過就算漏了 , tcp 也會做 retransmission ...
udp 一般沒有追蹤 session 的機制 (除非 app 自己實作)
所以即使掉了也不知道 ...
: 還有tcpdump要來看截取udp的封包是不是後面要加udp這個參數?
: 像是tcpdump -nv udp 192.168.1.1之類的,
tcpdump 後方可以接很多 filter (man tcpdump有)
指定 protocol、host、port、甚至某個 flag
以下的 host 192.168.1.1 and port 1234 則是指
src/dst ip 中有出現 192.168.1.1 這個 ip ,
且 src/dst port 中有出現 1234 這個 port 的封包 .
: 另外一個是關於awk這個指令
: 能否請版上的高手幫我解釋一下下面這段awk後面的指令是什麼意思
: tcpdump -nv host 192.168.1.1 and port 1234 | awk 'BEGIN{a=0}{n=substr($8, 0, \
: length($8)-1); if (a+1<n) {print srand(),FNR,a,n;}; a=n; }
: 因為我沒用awk做過這麼複雜的動作
: 上網查了一下,BEGIN是做初始化的動作
: 但是後面的substr(), length($8), srand(), FNR,實在是超出我能理解的範圍
: 希望有好心人可以告訴我上面這段awk是在做什麼事情
: 謝謝
前面的 tcpdump 出來結果會是類似
04:29:40.806729 IP (tos 0x0, ttl 107, id 13880, offset 0, flags [DF], proto
TCP (6), length 48) 192.168.1.1.xxxx > x.x.x.x.xxx ...
黃色那部份就是 awk 取到的 $8 (用空白或tab分欄後的第八個欄位)
所以那段 awk 中的
$8 => 13880
length($8) => 5
substr($8, 0, length($8)-1) => 1388
srand() 一般是在指定亂數的種子 , 不過直接 print 似乎會出現目前的 timestamp
FNR 表示第幾筆資料
整段看起來是在追蹤各封包中 id 欄位是否有依順序在收送(? 不是很確定)
但這段 script 基本上做不到檢查封包是否有漏的情況 XD
--
: 我想要請問tcpdump是否可以一邊監控封包
: 一邊得知在傳送的過程中是否有封包漏掉的情形
: 又是在哪一段漏掉的,掉了多少封包?
這有點難
tcp 還有機會 ,
檢查各 connection 的 seq/ack num 對應 ,
不過就算漏了 , tcp 也會做 retransmission ...
udp 一般沒有追蹤 session 的機制 (除非 app 自己實作)
所以即使掉了也不知道 ...
: 還有tcpdump要來看截取udp的封包是不是後面要加udp這個參數?
: 像是tcpdump -nv udp 192.168.1.1之類的,
tcpdump 後方可以接很多 filter (man tcpdump有)
指定 protocol、host、port、甚至某個 flag
以下的 host 192.168.1.1 and port 1234 則是指
src/dst ip 中有出現 192.168.1.1 這個 ip ,
且 src/dst port 中有出現 1234 這個 port 的封包 .
: 另外一個是關於awk這個指令
: 能否請版上的高手幫我解釋一下下面這段awk後面的指令是什麼意思
: tcpdump -nv host 192.168.1.1 and port 1234 | awk 'BEGIN{a=0}{n=substr($8, 0, \
: length($8)-1); if (a+1<n) {print srand(),FNR,a,n;}; a=n; }
: 因為我沒用awk做過這麼複雜的動作
: 上網查了一下,BEGIN是做初始化的動作
: 但是後面的substr(), length($8), srand(), FNR,實在是超出我能理解的範圍
: 希望有好心人可以告訴我上面這段awk是在做什麼事情
: 謝謝
前面的 tcpdump 出來結果會是類似
04:29:40.806729 IP (tos 0x0, ttl 107, id 13880, offset 0, flags [DF], proto
TCP (6), length 48) 192.168.1.1.xxxx > x.x.x.x.xxx ...
黃色那部份就是 awk 取到的 $8 (用空白或tab分欄後的第八個欄位)
所以那段 awk 中的
$8 => 13880
length($8) => 5
substr($8, 0, length($8)-1) => 1388
srand() 一般是在指定亂數的種子 , 不過直接 print 似乎會出現目前的 timestamp
FNR 表示第幾筆資料
整段看起來是在追蹤各封包中 id 欄位是否有依順序在收送(? 不是很確定)
但這段 script 基本上做不到檢查封包是否有漏的情況 XD
--
Tags:
Linux
All Comments

By Adele
at 2010-01-02T06:28
at 2010-01-02T06:28
Related Posts
請問安裝套件會影響到其他人嗎?

By Susan
at 2009-12-29T03:38
at 2009-12-29T03:38
請問tcpdump跟awk這個指令

By Doris
at 2009-12-29T01:27
at 2009-12-29T01:27
請問安裝套件會影響到其他人嗎?

By Michael
at 2009-12-29T01:13
at 2009-12-29T01:13
請問tcpdump跟awk這個指令

By Freda
at 2009-12-28T22:56
at 2009-12-28T22:56
openoffice指定字型

By Mia
at 2009-12-28T21:04
at 2009-12-28T21:04