一、前言
學習過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所示。每一層負責不同的功能:
TCP/IP層描述 | 主要協議 | 主要功能 |
應用層 | HTTP、Telnet、FTP和E-mail等 | 負責把數據傳輸到傳輸層或接收從傳輸層返回的數據 |
傳輸層 | TCP和UPD | 主要為兩台主機上的應用程序提供端到端的通信,TCP為兩台主機提供可靠的數據通信。它所做的工作包括把應用程序交給它的數據分成合適的小塊交給下面的網路層,確認接收到的分組,設置發送最後確認分組的超時時鐘等。UPD則為應用層提供一種非常簡單的服務。它只是把稱作數據報的分組從一台主機發送到另一台主機,但並不保證該數據能到達另一端。 |
網路層 | ICMP、IP和IGMP | 有時稱作互聯網層,主要為數據包選擇路由,其中IP是TCP/IP協議族中最為核心的協議。所有的TCP、UPD、ICMP及IGMP數據協議都以IP數據包格式傳輸。 |
鏈路層 | ARP、RARP和設備驅動程序及介面卡 | 發送時將IP包作為幀發送;接收時把接收到的位組裝成幀;提供鏈路管理、錯誤檢測等。 |
表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
[admin via 研發互助社區 ] TCP/IP學習已經有10639次圍觀
http://cocdig.com/docs/show-post-42494.html