用協(xié)議分析工具學(xué)習(xí)TCP/IP(2)

1、TCP/IP的基本原理
  本文的重點(diǎn)雖然是根據(jù)實(shí)例來(lái)解析TCP/IP,但要講明白下面的過(guò)程必須簡(jiǎn)要講一下TCP/IP的基本原理。
  1)網(wǎng)絡(luò)是分層的,每一層分別負(fù)責(zé)不同的通信功能。
  TCP/IP通常被認(rèn)為是一個(gè)四層協(xié)議系統(tǒng),TCP/IP協(xié)議族是一組不同的協(xié)議組合在一起構(gòu)成的協(xié)議族。盡管通常稱該協(xié)議族為TCP/IP,但TCP和IP只是其中的兩種協(xié)議而已,如表1所示。每一層負(fù)責(zé)不同的功能:
TCP/IP層描述 主要協(xié)議 主要功能
應(yīng)用層 HTTP、Telnet、FTP和E-mail等 負(fù)責(zé)把數(shù)據(jù)傳輸?shù)絺鬏攲踊蚪邮諒膫鬏攲臃祷氐臄?shù)據(jù)
傳輸層 TCP和UPD 主要為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端的通信,TCP為兩臺(tái)主機(jī)提供可靠的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn)接收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時(shí)時(shí)鐘等。UPD則為應(yīng)用層提供一種非常簡(jiǎn)單的服務(wù)。它只是把稱作數(shù)據(jù)報(bào)的分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),但并不保證該數(shù)據(jù)能到達(dá)另一端。
網(wǎng)絡(luò)層 ICMP、IP和IGMP 有時(shí)稱作互聯(lián)網(wǎng)層,主要為數(shù)據(jù)包選擇路由,其中IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UPD、ICMP及IGMP數(shù)據(jù)協(xié)議都以IP數(shù)據(jù)包格式傳輸。
鏈路層 ARP、RARP和設(shè)備驅(qū)動(dòng)程序及接口卡 發(fā)送時(shí)將IP包作為幀發(fā)送;接收時(shí)把接收到的位組裝成幀;提供鏈路管理、錯(cuò)誤檢測(cè)等。

表1

  分層的概念說(shuō)起來(lái)非常簡(jiǎn)單,但在實(shí)際的應(yīng)用中非常的重要,在進(jìn)行網(wǎng)絡(luò)設(shè)置和排除故障時(shí)對(duì)網(wǎng)絡(luò)層次理解得很透,將對(duì)工作有很大的幫助。例如:設(shè)置路由是網(wǎng)絡(luò)層IP協(xié)議的事,要查找MAC地址是鏈路層ARP的事,常用的Ping命令由ICMP協(xié)議來(lái)做的。
  圖5顯示了各層協(xié)議的關(guān)系,理解它們之間的關(guān)系對(duì)下面的協(xié)議分析非常重要。

用協(xié)議分析工具學(xué)習(xí)TCP/IP(圖五)
圖5

  2)數(shù)據(jù)發(fā)送時(shí)是自上而下,層層加碼;數(shù)據(jù)接收時(shí)是自下而上,層層解碼。
  當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時(shí),數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個(gè)通過(guò)每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò)。其中每一層對(duì)收到的數(shù)據(jù)都要增加一些首部信息(有時(shí)還要增加尾部信息),該過(guò)程如圖6所示。TCP傳給IP的數(shù)據(jù)單元稱作TCP報(bào)文段或簡(jiǎn)稱為TCP段。I P傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報(bào)。 通過(guò)以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀(Frame)。
  數(shù)據(jù)發(fā)送時(shí)是按照?qǐng)D6自上而下,層層加碼;數(shù)據(jù)接收時(shí)是自下而上,層層解碼。

用協(xié)議分析工具學(xué)習(xí)TCP/IP(圖六)
圖6

  3)邏輯上通訊是在同級(jí)完成的
  垂直方向的結(jié)構(gòu)層次是當(dāng)今普遍認(rèn)可的數(shù)據(jù)處理的功能流程。每一層都有與其相鄰層的接口。為了通信,兩個(gè)系統(tǒng)必須在各層之間傳遞數(shù)據(jù)、指令、地址等信息,通信的邏輯流程與真正的數(shù)據(jù)流的不同。雖然通信流程垂直通過(guò)各層次,但每一層都在邏輯上能夠直接與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的相應(yīng)層直接通信。
  從圖7可以看出,通訊實(shí)際上是按垂直方向進(jìn)行的,但在邏輯上通信是在同級(jí)進(jìn)行的。

用協(xié)議分析工具學(xué)習(xí)TCP/IP(圖七)
圖7

  2、過(guò)程描述
  為了更好的分析協(xié)議,我們先描述一下上述例子數(shù)據(jù)的傳輸步驟。如圖8所示:
  1)FTP客戶端請(qǐng)求TCP用服務(wù)器IP地址建立連接。
  2)TCP發(fā)送一個(gè)連接請(qǐng)求分段到遠(yuǎn)端的主機(jī),即用上述IP地址發(fā)送一份IP數(shù)據(jù)報(bào)。
  3) 如果目的主機(jī)在本地網(wǎng)絡(luò)上,那么IP數(shù)據(jù)報(bào)可以直接送到目的主機(jī)上。如果目的主機(jī)在一個(gè)遠(yuǎn)程網(wǎng)絡(luò)上,那么就通過(guò)IP選路函數(shù)來(lái)確定位于本地網(wǎng)絡(luò)上的下一站路由器地址,并讓它轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)。在這兩種情況下,IP數(shù)據(jù)報(bào)都是被送到位于本地網(wǎng)絡(luò)上的一臺(tái)主機(jī)或路由器。
  4) 本例是一個(gè)以太網(wǎng),那么發(fā)送端主機(jī)必須把32位的IP地址變換成48位的以太網(wǎng)地址,該地址也稱為MAC地址,它是出廠時(shí)寫到網(wǎng)卡上的世界唯一的硬件地址。把IP地址翻譯到對(duì)應(yīng)的MAC地址是由ARP協(xié)議完成的。
  5) 如圖的虛線所示,ARP發(fā)送一份稱作ARP請(qǐng)求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個(gè)主機(jī),這個(gè)過(guò)程稱作廣播。ARP請(qǐng)求數(shù)據(jù)幀中包含目的主機(jī)的IP地址,其意思是“如果你是這個(gè)IP地址的擁有者,請(qǐng)回答你的硬件地址!
  6) 目的主機(jī)的ARP層收到這份廣播后,識(shí)別出這是發(fā)送端在尋問(wèn)它的IP地址,于是發(fā)送一個(gè)ARP應(yīng)答。這個(gè)ARP應(yīng)答包含I P地址及對(duì)應(yīng)的硬件地址。
  7) 收到ARP應(yīng)答后,使ARP進(jìn)行請(qǐng)求—應(yīng)答交換的IP數(shù)據(jù)包現(xiàn)在就可以傳送了。
  8) 發(fā)送IP數(shù)據(jù)報(bào)到目的主機(jī)。

用協(xié)議分析工具學(xué)習(xí)TCP/IP(圖八)

圖8

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章