Re: [問題] 請問tcpdump跟awk這個指令

看板Linux作者 (哥哥最愛獅子丸了)時間16年前 (2009/12/29 09:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
: : 我想要請問tcpdump是否可以一邊監控封包 : : 一邊得知在傳送的過程中是否有封包漏掉的情形 : : 又是在哪一段漏掉的,掉了多少封包? : 這有點難 : tcp 還有機會 , : 檢查各 connection 的 seq/ack num 對應 , : 不過就算漏了 , tcp 也會做 retransmission ... : udp 一般沒有追蹤 session 的機制 (除非 app 自己實作) : 所以即使掉了也不知道 ... 我正是要追蹤udp封包中間有無掉包 : : 能否請版上的高手幫我解釋一下下面這段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; } : 前面的 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 請問這個1388是怎麼推出來的?是13880取前面四位數嗎? substr($8, 0, length($8)-1),中間的參數"0",指的是什麼/ : srand() 一般是在指定亂數的種子 , 不過直接 print 似乎會出現目前的 timestamp : FNR 表示第幾筆資料 : 整段看起來是在追蹤各封包中 id 欄位是否有依順序在收送(? 不是很確定) : 但這段 script 基本上做不到檢查封包是否有漏的情況 XD 我以為這段script是來對所收的封包做編號,例如我傳送100筆封包 並且依序做編號,只要發現印出來的數字中間有不連續的情形 就可以認定出在第幾個封包有漏掉的情形 總之謝謝你的幫忙:) -- 雖然離別以後 就無法在相見 可是我一點也不感到寂寞 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.185.226
文章代碼(AID): #1BELRDyE (Linux)
討論串 (同標題文章)
文章代碼(AID): #1BELRDyE (Linux)