用協議分析工具學習TCP/IP

一、前言  

目前,網絡的速度發展非常快,學習網絡的人也越來越多,稍有網絡常識的人都知道TCP/IP協議是網絡的基礎,是Internet的語言,可以說沒有TCP/IP協議就沒有互聯網的今天。目前號稱搞網的人非常多,許多人就是從一把夾線鉗,一個測線器聯網開始接觸網絡的,如果只是聯網玩玩,知道幾個Ping之類的命令就行了,如果想在網絡上有更多的發展不管是黑道還是紅道,必須要把TCP/IP協議搞的非常明白。 

學習過TCP/IP協議的人多有一種感覺,這東西太抽象了,沒有什麼數據實例,看完不久就忘了。本文將介紹一種直觀的學習方法,利用協議分析工具學習TCP/IP,在學習的過程中能直觀的看到數據的具體傳輸過程。 

爲了初學者更容易理解,本文將搭建一個最簡單的網絡環境,不包含子網。 

二、試驗環境 

1、網絡環境 

如圖1所示 

1504080.gif
圖1


爲了表述方便,下文中208號機即指地址爲192.168.113.208的計算機,1號機指地址爲192.168.113.1的計算機。 

2、操作系統  

兩臺機器都爲Windows 2000 ,1號機機器作爲服務器,安裝FTP服務 

3、協議分析工具  

Windows環境下常用的工具有:Sniffer Pro、Natxray、Iris以及windows 2000自帶的網絡監視器等。本文選用Iris作爲協議分析工具。 

在客戶機208號機安裝IRIS軟件。 

三、測試過程 

1、測試例子:將1號機計算機中的一個文件通過FTP下載到208號機中。 

2、IRIS的設置。 

由於IRIS具有網絡監聽的功能,如果網絡環境中還有其它的機器將抓很多別的數據包,這樣爲學習帶來諸多不便,爲了清楚地看清楚上述例子的傳輸過程首先將IRIS設置爲只抓208號機和1號機之間的數據包。設置過程如下: 

1)用熱鍵CTRL+B彈出如圖所示的地址表,在表中填寫機器的IP地址,爲了對抓的包看得更清楚不要添主機的名字(name),設置好後關閉此窗口。

1504081.gif
圖2

2)用熱鍵CTRL+E彈出如圖所示過濾設置,選擇左欄「IP address」,右欄按下圖將address book中的地址拽到下面,設置好後確定,這樣就這抓這兩臺計算機之間的包。

1504082.gif
圖3

3、抓包  

按下IRIS工具欄中 開始按鈕。在瀏覽器中輸入:[url]FTP://192.168.113.1[/url],找到要下載的文件 ,鼠標右鍵該文件,在彈出的菜單中選擇「複製到文件夾」開始下載,下載完後在IRIS工具欄中按 按鈕停止抓包。圖4顯示的就是FTP的整個過程,下面我們將詳細分析這個過程。 

1504083.gif
圖4

說明:爲了能抓到ARP協議的包,在WINDOWS 2000 中運行arp –d 清除arp緩存。 

四、過程分析  

1、TCP/IP的基本原理  

本文的重點雖然是根據實例來解析TCP/IP,但要講明白下面的過程必須簡要講一下TCP/IP的基本原理。 

A.網絡是分層的,每一層分別負責不同的通信功能。 

TCP/IP通常被認爲是一個四層協議系統,TCP/IP協議族是一組不同的協議組合在一起構成的協議族。儘管通常稱該協議族爲TCP/IP,但TCP和IP只是其中的兩種協議而已,如表1所示。每一層負責不同的功能: 

1504084.gif
表1

分層的概念說起來非常簡單,但在實際的應用中非常的重要,在進行網絡設置和排除故障時對網絡層次理解得很透,將對工作有很大的幫助。例如:設置路由是網絡層IP協議的事,要查找MAC地址是鏈路層ARP的事,常用的Ping命令由ICMP協議來做的。 

圖5顯示了各層協議的關係,理解它們之間的關係對下面的協議分析非常重要。 

1504085.gif
圖5

b.數據發送時是自上而下,層層加碼;數據接收時是自下而上,層層解碼。 

當應用程序用TCP傳送數據時,數據被送入協議棧中,然後逐個通過每一層直到被當作一串比特流送入網絡。其中每一層對收到的數據都要增加一些首部信息(有時還要增加尾部信息),該過程如圖6所示。TCP傳給IP的數據單元稱作TCP報文段或簡稱爲TCP段。I P傳給網絡接口層的數據單元稱作IP數據報。 通過以太網傳輸的比特流稱作幀(Frame)。 

數據發送時是按照圖6自上而下,層層加碼;數據接收時是自下而上,層層解碼。 

1504086.gif
圖6

c. 邏輯上通訊是在同級完成的 

垂直方向的結構層次是當今普遍認可的數據處理的功能流程。每一層都有與其相鄰層的接口。爲了通信,兩個系統必須在各層之間傳遞數據、指令、地址等信息,通信的邏輯流程與真正的數據流的不同。雖然通信流程垂直通過各層次,但每一層都在邏輯上能夠直接與遠程計算機系統的相應層直接通信。 

從圖7可以看出,通訊實際上是按垂直方向進行的,但在邏輯上通信是在同級進行的。 

1504087.gif
圖7 2、過程描述  

爲了更好的分析協議,我們先描述一下上述例子數據的傳輸步驟。如圖8所示: 

1)FTP客戶端請求TCP用服務器的IP地址建立連接。 

2)TCP發送一個連接請求分段到遠端的主機,即用上述IP地址發送一份IP數據報。 

3) 如果目的主機在本地網絡上,那麼IP數據報可以直接送到目的主機上。如果目的主機在一個遠程網絡上,那麼就通過IP選路函數來確定位於本地網絡上的下一站路由器地址,並讓它轉發IP數據報。在這兩種情況下,IP數據報都是被送到位於本地網絡上的一臺主機或路由器。 

4) 本例是一個以太網,那麼發送端主機必須把32位的IP地址變換成48位的以太網地址,該地址也稱爲MAC地址,它是出廠時寫到網卡上的世界唯一的硬件地址。把IP地址翻譯到對應的MAC地址是由ARP協議完成的。 

5) 如圖的虛線所示,ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機,這個過程稱作廣播。ARP請求數據幀中包含目的主機的IP地址,其意思是「如果你是這個IP地址的擁有者,請回答你的硬件地址。」 

6) 目的主機的ARP層收到這份廣播後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。這個ARP應答包含I P地址及對應的硬件地址。 

7) 收到ARP應答後,使ARP進行請求—應答交換的IP數據包現在就可以傳送了。 

8) 發送IP數據報到目的主機。 

1504088.gif
圖8

3、實例分析  

下面通過分析用iris捕獲的包來分析一下TCP/IP的工作過程,爲了更清晰的解釋數據傳送的過程,我們按傳輸的不同階段抓了四組數據,分別是查找服務器、建立連接、數據傳輸和終止連接。每組數據,按下面三步進行解釋。 

顯示數據包 

解釋該數據包 

按層分析該包的頭信息 

第一組 查找服務器 

1)下圖顯示的是1、2行的數據 

1504089.gif
圖9

2)解釋數據包 

這兩行數據就是查找服務器及服務器應答的過程。 

在第1行中,源端主機的MAC地址是00:50:FC:22:C7:BE。目的端主機的MAC地址是FF:FF:FF:FF:FF:FF,這個地址是十六進制表示的,F換算爲二進制就是1111,全1的地址就是廣播地址。所謂廣播就是向本網上的每臺網絡設備發送信息,電纜上的每個以太網接口都要接收這個數據幀並對它進行處理,這一行反映的是步驟5)的內容,ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機。網內的每個網卡都接到這樣的信息「誰是192.168.113.1的IP地址的擁有者,請將你的硬件地址告訴我」。 
在第1行中,源端主機的MAC地址是00:50:FC:22:C7:BE。目的端主機的MAC地址是FF:FF:FF:FF:FF:FF,這個地址是十六進制表示的,F換算爲二進制就是1111,全1的地址就是廣播地址。所謂廣播就是向本網上的每臺網絡設備發送信息,電纜上的每個以太網接口都要接收這個數據幀並對它進行處理,這一行反映的是步驟5)的內容,ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機。網內的每個網卡都接到這樣的信息「誰是192.168.113.1的IP地址的擁有者,請將你的硬件地址告訴我」。 

第2行反映的是步驟6)的內容。在同一個以太網中的每臺機器都會"接收"到這個報文,但正常狀態下除了1號機外其他主機應該會忽略這個報文,而1號的主機的ARP層收到這份廣播報文後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。告知自己的IP地址和MAC地址。第2行可以清楚的看出1號回答的信息__自己的MAC地址00:50:FC:22:C7:BE。 

這兩行反映的是數據鏈路層之間一問一答的通信過程。這個過程就像我要在一個坐滿人的教室找一個叫「張三」的人,在門口喊了一聲「張三」,這一聲大家都聽見了,這就叫廣播。張三聽到後做了迴應,別人聽到了沒做迴應,這樣就與張三取得了聯繫。 

3)頭信息分析  

如下圖左欄所示,第1數據包包含了兩個頭信息:以太網(Ethernet)和ARP。 

15040810.gif
圖10

下表2是以太網的頭信息,括號內的數均爲該字段所佔字節數,以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。兩個字節長的以太網幀類型表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0806。 

第2行中可以看到,儘管ARP請求是廣播的,但是ARP應答的目的地址卻是1號機的(00 50 FC 22 C7 BE)。ARP應答是直接送到請求端主機的。 

15040811.gif
下表3是ARP協議的頭信息。硬件類型字段表示硬件地址的類型。它的值爲1即表示 以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲0800即表示IP地址。它的值與包含I P數據報的以太網數據幀中的類型字段的值相同。接下來的兩個1字節的字段,硬件地址 長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上IP地址的ARP請求或應答來說,它們的值分別爲6和4。Op即操作(Opoperation),1是ARP請求、2是ARP應答、3是RARP請求和4爲RARP應答,第二行中該字段值爲2表示應答。接下來的四個字段是發送端的硬件地址、發送端的IP地址、目的端的硬件地址和目的端IP地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。對於一個ARP請求來說,除目的端硬件地址外的所�ica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微軟雅黑', Arial, sans-serif;font-size:16px;color:rgb(51,51,51);" />
如下圖左欄所示,第1數據包包含了兩個頭信息:以太網(Ethernet)和ARP。 

15040810.gif
圖10

下表2是以太網的頭信息,括號內的數均爲該字段所佔字節數,以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。兩個字節長的以太網幀類型表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0806。 

第2行中可以看到,儘管ARP請求是廣播的,但是ARP應答的目的地址卻是1號機的(00 50 FC 22 C7 BE)。ARP應答是直接送到請求端主機的。 

15040811.gif
下表3是ARP協議的頭信息。硬件類型字段表示硬件地址的類型。它的值爲1即表示 以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲0800即表示IP地址。它的值與包含I P數據報的以太網數據幀中的類型字段的值相同。接下來的兩個1字節的字段,硬件地址 長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上IP地址的ARP請求或應答來說,它們的值分別爲6和4。Op即操作(Opoperation),1是ARP請求、2是ARP應答、3是RARP請求和4爲RARP應答,第二行中該字段值爲2表示應答。接下來的四個字段是發送端的硬件地址、發送端的IP地址、目的端的硬件地址和目的端IP地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。對於一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。 

表3的第2行爲應答,當系統收到一份目的端爲本機的ARP請求報文後,它就把硬件地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作字段置爲2,最後把它發送回去。 

15040812.gif
表3 第二組 建立連接  

1)下圖顯示的是3-5行的數據 

15040813.gif
圖11
這兩行反映的是數據鏈路層之間一問一答的通信過程。這個過程就像我要在一個坐滿人的教室找一個叫「張三」的人,在門口喊了一聲「張三」,這一聲大家都聽見了,這就叫廣播。張三聽到後做了迴應,別人聽到了沒做迴應,這樣就與張三取得了聯繫。 

3)頭信息分析  

如下圖左欄所示,第1數據包包含了兩個頭信息:以太網(Ethernet)和ARP。 

15040810.gif
圖10

下表2是以太網的頭信息,括號內的數均爲該字段所佔字節數,以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。兩個字節長的以太網幀類型表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0806。 

第2行中可以看到,儘管ARP請求是廣播的,但是ARP應答的目的地址卻是1號機的(00 50 FC 22 C7 BE)。ARP應答是直接送到請求端主機的。 

15040811.gif
下表3是ARP協議的頭信息。硬件類型字段表示硬件地址的類型。它的值爲1即表示 以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲0800即表示IP地址。它的值與包含I P數據報的以太網數據幀中的類型字段的值相同。接下來的兩個1字節的字段,硬件地址 長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上IP地址的ARP請求或應答來說,它們的值分別爲6和4。Op即操作(Opoperation),1是ARP請求、2是ARP應答、3是RARP請求和4爲RARP應答,第二行中該字段值爲2表示應答。接下來的四個字段是發送端的硬件地址、發送端的IP地址、目的端的硬件地址和目的端IP地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。對於一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。 

表3的第2行爲應答,當系統收到一份目的端爲本機的ARP請求報文後,它就把硬件地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作字段置爲2,最後把它發送回去。 

15040812.gif
表3 第二組 建立連接  

1)下圖顯示的是3-5行的數據 

15040813.gif
圖11 2)解釋數據包 
相關文章
相關標籤/搜索