用協議分析工具學習TCP/IP
一、前言
目前,網路的速度發展非常快,學習網路的人也越來越多,稍有網路常識的人都知道TCP/IP協議是網路的基礎,是Internet的語言,可以說沒有TCP/IP協議就沒有互連網的今天。目前號稱搞網的人非常多,許多人就是從一把夾線鉗,一個測線器連網開始接觸網路的,如果只是連網玩玩,知道幾個Ping之類的命令就行了,如果想在網路上有更多的發展不管是黑道還是紅道,必須要把TCP/IP協議搞的非常明白。
學習過TCP/IP協議的人多有一種感覺,這東西太抽象了,沒有什麼資料執行個體,看完不久就忘了。本文將介紹一種直觀的學習方法,利用協議分析工具學習TCP/IP,在學習的過程中能直觀的看到資料的具體傳輸過程。
為了初學者更容易理解,本文將搭建一個最簡單的網路環境,不包含子網。
二、實驗環境
1、網路環境
1所示
圖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),設定好後關閉此視窗。
圖2
2)用熱鍵CTRL+E彈出過濾設定,選擇左欄“IP address”,右欄按將address book中的地址拽到下面,設定好後確定,這樣就這抓這兩台電腦之間的包。
圖3
3、抓包
按下IRIS工具列中 開始按鈕。在瀏覽器中輸入:FTP://192.168.113.1,找到要下載的檔案 ,滑鼠右鍵該檔案,在彈出的菜單中選擇“複製到檔案夾”開始下載,下載完後在IRIS工具列中按 按鈕停止抓包。圖4顯示的就是FTP的整個過程,下面我們將詳細分析這個過程。
圖4
說明:為了能抓到ARP協議的包,在WINDOWS 2000 中運行arp –d 清除arp緩衝。
四、過程分析
1、TCP/IP的基本原理
本文的重點雖然是根據執行個體來解析TCP/IP,但要講明白下面的過程必須簡要講一下TCP/IP的基本原理。
A.網路是分層的,每一層分別負責不同的通訊功能。
TCP/IP通常被認為是一個四層協議系統,TCP/IP協議族是一組不同的協議組合在一起構成的協議族。儘管通常稱該協議族為TCP/IP,但TCP和IP只是其中的兩種協議而已,如表1所示。每一層負責不同的功能:
表1
分層的概念說起來非常簡單,但在實際的應用中非常的重要,在進行網路設定和排除故障時對網路層次理解得很透,將對工作有很大的協助。例如:設定路由是網路層IP協議的事,要尋找MAC地址是鏈路層ARP的事,常用的Ping命令由ICMP協議來做的。
圖5顯示了各層協議的關係,理解它們之間的關係對下面的協議分析非常重要。
圖5
b.資料發送時是自上而下,層層加碼;資料接收時是自下而上,層層解碼。
當應用程式用TCP傳送資料時,資料被送入協議棧中,然後逐個通過每一層直到被當作一串位元流送入網路。其中每一層對收到的資料都要增加一些首部資訊(有時還要增加尾部資訊),該過程6所示。TCP傳給IP的資料單元稱作TCP報文段或簡稱為TCP段。I P傳給網路介面層的資料單元稱作IP資料報。 通過乙太網路傳輸的位元流稱作幀(Frame)。
資料發送時是按照圖6自上而下,層層加碼;資料接收時是自下而上,層層解碼。
圖6
c. 邏輯上通訊是在同級完成的
垂直方向的結構層次是當今普遍認可的資料處理的功能流程。每一層都有與其相鄰層的介面。為了通訊,兩個系統必須在各層之間傳遞資料、指令、地址等資訊,通訊的邏輯流程與真正的資料流的不同。雖然通訊流程垂直通過各層次,但每一層都在邏輯上能夠直接與遠端電腦系統的相應層直接通訊。
從圖7可以看出,通訊實際上是按垂直方向進行的,但在邏輯上通訊是在同級進行的。
圖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資料報到目的主機。
圖8
3、執行個體分析
下面通過分析用iris捕獲的包來分析一下TCP/IP的工作過程,為了更清晰的解釋資料傳送的過程,我們按傳輸的不同階段抓了四組資料,分別是尋找伺服器、建立串連、資料轉送和終止串連。每組資料,按下面三步進行解釋。
顯示資料包
解釋該資料包
按層分析該包的頭資訊