2010-02-26 80 views
1

我檢查了tcpdump手冊頁,並認爲我理解了在那裏提供的示例。但是我得到的是我無法完全理解的東西。需要一些幫助來解釋tcpdump輸出

ORIGINAL:模擬輸出

LINE 1: 20:01:13.442111 IP 10.0.0.1.12345 > 10.0.0.2.54321: S 1234:1234(0) win 65535 
LINE 2: 20:01:13.471705 IP 10.0.0.2.54321 > 10.0.0.1.12345: S 4321:4321(0) ack 1235 win 65535 
LINE 3: 20:01:13.497389 IP 10.0.0.1.14640 > 10.0.0.2.12756: . ack 4322 win 65535 
LINE 4: 20:01:13.497422 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 1235:2682(1447) win 65535 
LINE 5: 20:01:14.023273 IP 10.0.0.2.12756 > 10.0.0.1.14640: . ack 5768 win 65535 

這是我的理解:

LINE 1: 1 sends 2 0 bytes starting with SEQ number 1234 
LINE 2: 2 sends 1 0 bytes starting with SEQ number 4321 and an ACK = (1's SEQ + 1) i.e. 1235 
LINE 3: 1 sends 2 0 bytes with an ACK = (2's SEQ + 1) i.e. 4322 
LINE 4: 1 sends 2 1447 bytes starting with SEQ number 1235 until 2682 (1447 bytes in total) 
LINE 5: 2 sends 1 0 bytes with an ACK = 5768? What is this number? Isn't it supposed to be 2683? 

也許我失去了一些東西太明顯了。有人可以指出嗎?

EDIT 1:模擬輸出(grepped一個連接信息)

20:01:13.442111 IP 10.0.0.1.12345 > 10.0.0.2.54321: S 1234:1234(0) win 65535 
20:01:13.471705 IP 10.0.0.2.54321 > 10.0.0.1.12345: S 4321:4321(0) ack 1235 win 65535 
20:01:13.497422 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 1235:2682(1447) win 65535 
20:01:14.573322 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 5981 win 65535 
20:01:14.593870 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 4129:5576(1447) win 65535 
20:01:14.639457 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 7023:8470(1447) win 65535 
20:01:14.639606 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 9917:10640(723) win 65535 
20:01:14.660971 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 11769 win 65535 
20:01:14.693847 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 12087:13534(1447) win 65535 
20:01:14.726564 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 15964 win 65535 

問題:的ACK似乎仍然是不同的。這是5981而不是2683.

編輯2:皇家TCP輸出

22:20:14.492625 IP 72.14.204.99.80 > 10.0.2.15.59745: S 255616001:255616001(0) ack 1727704513 win 65535 <mss 1460> 
22:20:14.495606 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616002 win 5840 
22:20:14.501015 IP 10.0.2.15.59745 > 72.14.204.99.80: P 1727704513:1727705327(814) ack 255616002 win 5840 
22:20:14.501746 IP 72.14.204.99.80 > 10.0.2.15.59745: . ack 1727705327 win 65535 
22:20:14.562197 IP 72.14.204.99.80 > 10.0.2.15.59745: P 255616002:255616102(100) ack 1727705327 win 65535 
22:20:14.562298 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616102 win 5840 
22:20:14.630749 IP 10.0.2.15.59745 > 72.14.204.99.80: P 1727705327:1727706096(769) ack 255616102 win 5840 
22:20:14.631228 IP 72.14.204.99.80 > 10.0.2.15.59745: . ack 1727706096 win 65535 
22:20:14.692324 IP 72.14.204.99.80 > 10.0.2.15.59745: P 255616102:255616338(236) ack 1727706096 win 65535 
22:20:14.692361 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616338 win 6432 

問題:我想按照你的建議和grep'ed一個連接的輸出。但是這一次,爲什麼ACK的方式不是SEQ + 1呢?

+0

你有沒有在iOS中實現捕獲tcpdump?如果是的話,你可以請建議我做到這一點。 – 2014-04-04 10:27:41

回答

1

從端口號檢查看來,LINE1,LINE2和LINE5屬於一個會話,而LINE2和LINE4在另一個會話中。

改爲使用tcpdump進行數據包分析,我強烈建議您使用tcpdump捕獲數據包,並使用wireshark工具分析結果。

編輯: 對於模擬器流,它搞砸了。由於10.0.0.1 - > 10.0.0.2的數據包的序列號並不完全,所以我認爲可能有一些數據包沒有被捕獲,並且時序並未顯示真實狀態。所以你可以忽略它。

對於真正的流,它沒關係。對於syn數據包,ack reply = seq +1;對於內容發送,ack = seq + len。該流實際上向我們展示了這一點。

+0

爲什麼你認爲他們可能是不同的連接的任何解釋?我正在使用模擬器來產生這個輸出,並且只使用TCP輸出。另外,我們可以觀察到LINES 1-3中的TCP握手過程。你怎麼看? – Legend 2010-02-26 02:50:54

+0

@Legend,連接僅限於端口對;您的tcdpump輸出可能與您的模擬器的網絡實現有關。更好地tcpdump一個真正的tcp學習擺脫模擬器的行爲。 – 2010-02-26 03:00:42

+0

感謝您的解釋。剛剛添加了兩部分:編輯1和編輯2.在第一個,我爲單個連接grepped幾行。在編輯2中,我複製了我得到的真實tcp輸出...真正的tcp行爲的任何解釋? – Legend 2010-02-26 03:31:26