網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 一、前言 二、試驗(yàn)環(huán)境 三、測試過程 四、過程分析 第一組 查找服務(wù)器 目前,網(wǎng)絡(luò)的速度發(fā)展非常快,學(xué)習(xí)網(wǎng)絡(luò)的人也越來越多,稍有網(wǎng)絡(luò)常識的人都知道TCP/IP協(xié)議是網(wǎng)絡(luò)的基礎(chǔ),是Internet的語言,可以說沒有TCP/IP協(xié)議就沒有互聯(lián)網(wǎng)的今天。目前搞網(wǎng)絡(luò)的人非常多,許多人就是從一把夾線鉗,一個測線器聯(lián)網(wǎng)開始接觸網(wǎng)絡(luò)的,如果只是聯(lián)網(wǎng)玩玩,知道幾個Ping之類的命令就行了,如果想在網(wǎng)絡(luò)上有更多的發(fā)展不管是黑道還是紅道,必須要把TCP/IP協(xié)議搞的非常明白。
學(xué)習(xí)過TCP/IP協(xié)議的人多都有一種感覺,這東西太抽象了,沒有什么數(shù)據(jù)實(shí)例,看完不久就忘了。本文將介紹一種直觀的學(xué)習(xí)方法,利用分析監(jiān)測工具IRIS學(xué)習(xí)TCP/IP,在學(xué)習(xí)的同時通過IRIS能直觀的看到數(shù)據(jù)的具體傳輸過程,這對學(xué)習(xí)TCP/IP能起到事半功倍的效果。
為了初學(xué)者更容易理解,本文將搭建一個最簡單的網(wǎng)絡(luò)環(huán)境,不包含子網(wǎng)。
二、試驗(yàn)環(huán)境
1、網(wǎng)絡(luò)環(huán)境
如圖1所示
為了表述方便,下文中208號機(jī)即指地址為192.168.113.208的計(jì)算機(jī),1號機(jī)指地址為192.168.113.1的計(jì)算機(jī)。
2、操作系統(tǒng)
兩臺機(jī)器都為Windows 2000 ,1號機(jī)機(jī)器作為服務(wù)器,安裝FTP服務(wù)
3、協(xié)議分析工具
Windows環(huán)境下常用的工具有:Sniffer Pro、Natxray、IRIS以及windows 2000自帶的網(wǎng)絡(luò)監(jiān)視器等。本文選用IRIS作為協(xié)議分析工具。
在客戶機(jī)208號機(jī)安裝IRIS軟件. 三、測試過程
1、測試?yán)樱簩?號機(jī)計(jì)算機(jī)中的一個文件通過FTP下載到208號機(jī)中。
2、IRIS的設(shè)置。
由于IRIS具有網(wǎng)絡(luò)監(jiān)聽的功能,如果網(wǎng)絡(luò)環(huán)境中還有其它的機(jī)器將抓很多別的數(shù)據(jù)包,這樣為學(xué)習(xí)帶來諸多不便,為了清楚地看清楚上述例子的傳輸過程首先將IRIS設(shè)置為只抓208號機(jī)和1號機(jī)之間的數(shù)據(jù)包。設(shè)置過程如下:
1) 用熱鍵CTRL+B彈出如圖所示的地址表,在表中填寫機(jī)器的IP地址,為了對抓的包看得更清楚不要添主機(jī)的名字(name),設(shè)置好后關(guān)閉此窗口。
2)用熱鍵CTRL+E彈出如圖所示過濾設(shè)置,選擇左欄“IP address”,右欄按下圖將address book中的地址拽到下面,設(shè)置好后確定,這樣就這抓這兩臺計(jì)算機(jī)之間的包。
3、抓包
按下IRIS工具欄中 開始按鈕。在瀏覽器中輸入:FTP://192.168.113.1,找到要下載的文件 ,鼠標(biāo)右鍵該文件,在彈出的菜單中選擇“復(fù)制到文件夾”開始下載,下載完后在IRIS工具欄中按按鈕停止抓包。圖4顯示的就是FTP的整個過程,下面我們將詳細(xì)分析這個過程。
圖4(可點(diǎn)擊放大)
說明:為了能抓到ARP協(xié)議的包,在WINDOWS 2000 中運(yùn)行arp –d 清除arp緩存。
四、過程分析
1、TCP/IP的基本原理
本文的重點(diǎn)雖然是根據(jù)實(shí)例來解析TCP/IP,但要講明白下面的過程必須簡要講一下TCP/IP的基本原理。 A.網(wǎng)絡(luò)是分層的,每一層分別負(fù)責(zé)不同的通信功能。
TCP/IP通常被認(rèn)為是一個四層協(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和UDP 主要為兩臺主機(jī)上的應(yīng)用程序提供端到端的通信,TCP為兩臺主機(jī)提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn)接收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時時鐘等。UDP則為應(yīng)用層提供一種非常簡單的服務(wù)。它只是把稱作數(shù)據(jù)報的分組從一臺主機(jī)發(fā)送到另一臺主機(jī),但并不保證該數(shù)據(jù)報能到達(dá)另一端。 網(wǎng)絡(luò)層 ICMP、IP 和 IGMP 有時也稱作互聯(lián)網(wǎng)層,主要為數(shù)據(jù)包選擇路由,其中IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸 鏈路層 ARP 、RARP和設(shè)備驅(qū)動程序及接口卡 發(fā)送時將IP包作為幀發(fā)送;接收時把接收到的位組裝成幀;提供鏈路管理;錯誤檢測等
表1
分層的概念說起來非常簡單,但在實(shí)際的應(yīng)用中非常的重要,在進(jìn)行網(wǎng)絡(luò)設(shè)置和排除故障時對網(wǎng)絡(luò)層次理解得很透,將對工作有很大的幫助。例如:設(shè)置路由是網(wǎng)絡(luò)層IP協(xié)議的事,要查找MAC地址是鏈路層ARP的事,常用的Ping命令由ICMP協(xié)議來做的。
圖5顯示了各層協(xié)議的關(guān)系,理解它們之間的關(guān)系對下面的協(xié)議分析非常重要。
b. 數(shù)據(jù)發(fā)送時是自上而下,層層加碼;數(shù)據(jù)接收時是自下而上,層層解碼。
當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時,數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個通過每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò)。其中每一層對收到的數(shù)據(jù)都要增加一些首部信息(有時還要增加尾部信息),該過程如圖6所示。TCP傳給IP的數(shù)據(jù)單元稱作TCP報文段或簡稱為TCP段。IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報。通過以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀(Frame)。
數(shù)據(jù)發(fā)送時是按照圖6自上而下,層層加碼;數(shù)據(jù)接收時是自下而上,層層解碼。
C. 邏輯上通訊是在同級完成的
垂直方向的結(jié)構(gòu)層次是當(dāng)今普遍認(rèn)可的數(shù)據(jù)處理的功能流程。每一層都有與其相鄰層的接口。為了通信,兩個系統(tǒng)必須在各層之間傳遞數(shù)據(jù)、指令、地址等信息,通信的邏輯流程與真正的數(shù)據(jù)流的不同。雖然通信流程垂直通過各層次,但每一層都在邏輯上能夠直接與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的相應(yīng)層直接通信。 從圖7可以看出,通訊實(shí)際上是按垂直方向進(jìn)行的,但在邏輯上通信是在同級進(jìn)行的。
2、過程描述
為了更好的分析協(xié)議,我們先描述一下上述例子數(shù)據(jù)的傳輸步驟。如圖8所示:
1) FTP客戶端請求TCP用服務(wù)器的IP地址建立連接。
2) TCP發(fā)送一個連接請求分段到遠(yuǎn)端的主機(jī),即用上述IP地址發(fā)送一份IP數(shù)據(jù)報。
3) 如果目的主機(jī)在本地網(wǎng)絡(luò)上,那么IP數(shù)據(jù)報可以直接送到目的主機(jī)上。如果目的主機(jī)在一個遠(yuǎn)程網(wǎng)絡(luò)上,那么就通過IP選路函數(shù)來確定位于本地網(wǎng)絡(luò)上的下一站路由器地址,并讓它轉(zhuǎn)發(fā)IP數(shù)據(jù)報。在這兩種情況下,IP數(shù)據(jù)報都是被送到位于本地網(wǎng)絡(luò)上的一臺主機(jī)或路由器。
4) 本例是一個以太網(wǎng),那么發(fā)送端主機(jī)必須把32位的IP地址變換成48位的以太網(wǎng)地址,該地址也稱為MAC地址,它是出廠時寫到網(wǎng)卡上的世界唯一的硬件地址。把IP地址翻譯到對應(yīng)的MAC地址是由ARP協(xié)議完成的。
5) 如圖的虛線所示,ARP發(fā)送一份稱作ARP請求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個主機(jī),這個過程稱作廣播。ARP請求數(shù)據(jù)幀中包含目的主機(jī)的IP地址,其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址。”
6) 目的主機(jī)的ARP層收到這份廣播后,識別出這是發(fā)送端在尋問它的IP地址,于是發(fā)送一個ARP應(yīng)答。這個ARP應(yīng)答包含IP地址及對應(yīng)的硬件地址。
7) 收到ARP應(yīng)答后,使ARP進(jìn)行請求—應(yīng)答交換的IP數(shù)據(jù)包現(xiàn)在就可以傳送了。
8) 發(fā)送IP數(shù)據(jù)報到目的主機(jī)。
3、實(shí)例分析
下面通過分析用IRIS捕獲的包來分析一下TCP/IP的工作過程,為了更清晰的解釋數(shù)據(jù)傳送的過程,我們按傳輸?shù)牟煌A段抓了四組數(shù)據(jù),分別是查找服務(wù)器、建立連接、數(shù)據(jù)傳輸和終止連接。每組數(shù)據(jù),按下面三步進(jìn)行解釋。
顯示數(shù)據(jù)包 解釋該數(shù)據(jù)包 按層分析該包的頭信息
第一組 查找服務(wù)器
1)下圖顯示的是1、2行的數(shù)據(jù)。
2)解釋數(shù)據(jù)包
這兩行數(shù)據(jù)就是查找服務(wù)器及服務(wù)器應(yīng)答的過程。
在第1行中,源端主機(jī)的MAC地址是00:50:FC:22:C7:BE。目的端主機(jī)的MAC地址是FF:FF:FF:FF:FF:FF,這個地址是十六進(jìn)制表示的,F(xiàn)換算為二進(jìn)制就是1111,全1的地址就是廣播地址。所謂廣播就是向本網(wǎng)上的每臺網(wǎng)絡(luò)設(shè)備發(fā)送信息,電纜上的每個以太網(wǎng)接口都要接收這個數(shù)據(jù)幀并對它進(jìn)行處理,這一行反映的是步驟5)的內(nèi)容,ARP發(fā)送一份稱作ARP請求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個主機(jī)。網(wǎng)內(nèi)的每個網(wǎng)卡都接到這樣的信息“誰是192.168.113.1的IP地址的擁有者,請將你的硬件地址告訴我”。
第2行反映的是步驟6)的內(nèi)容。在同一個以太網(wǎng)中的每臺機(jī)器都會"接收"到這個報文,但正常狀態(tài)下除了1號機(jī)外其他主機(jī)應(yīng)該會忽略這個報文,而1號的主機(jī)的ARP層收到這份廣播報文后,識別出這是發(fā)送端在尋問它的IP地址,于是發(fā)送一個ARP應(yīng)答。告知自己的IP地址和MAC地址。第2行可以清楚的看出1號回答的信息__自己的MAC地址00:50:FC:22:C7:BE。
這兩行反映的是數(shù)據(jù)鏈路層之間一問一答的通信過程。這個過程就像我要在一個坐滿人的教室找一個叫“張三”的人,在門口喊了一聲“張三”,這一聲大家都聽見了,這就叫廣播。張三聽到后做了回應(yīng),別人聽到了沒做回應(yīng),這樣就與張三取得了聯(lián)系。 3)頭信息分析
如下圖左欄所示,第1數(shù)據(jù)包包含了兩個頭信息:以太網(wǎng)(Ethernet)和ARP。
下表2是以太網(wǎng)的頭信息,括號內(nèi)的數(shù)均為該字段所占字節(jié)數(shù),以太網(wǎng)報頭中的前兩個字段是以太網(wǎng)的源地址和目的地址。目的地址為全1的特殊地址是廣播地址。電纜上的所有以太網(wǎng)接口都要接收廣播的數(shù)據(jù)幀。兩個字節(jié)長的以太網(wǎng)幀類型表示后面數(shù)據(jù)的類型。對于ARP請求或應(yīng)答來說,該字段的值為0806。
第2行中可以看到,盡管ARP請求是廣播的,但是ARP應(yīng)答的目的地址卻是1號機(jī)的(00 50 FC 22 C7 BE)。ARP應(yīng)答是直接送到請求端主機(jī)的。
行 以太網(wǎng)目的地址(6) 以太網(wǎng)源地址(6) 幀類型(2) 1 FF FF FF FF FF FF 00 50 FC 22 C7 BE 08 06 2 00 50 FC 22 C7 BE 00 90 27 F6 54 53 08 06
表2 下表3是ARP協(xié)議的頭信息。硬件類型字段表示硬件地址的類型。它的值為1即表示以太網(wǎng)地址。協(xié)議類型字段表示要映射的協(xié)議地址類型。它的值為0800即表示IP地址。它的值與包含IP數(shù)據(jù)報的以太網(wǎng)數(shù)據(jù)幀中的類型字段的值相同。接下來的兩個1字節(jié)的字段,硬件地址長度和協(xié)議地址長度分別指出硬件地址和協(xié)議地址的長度,以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或應(yīng)答來說,它們的值分別為6和4。Op即操作(Opoperation),1是ARP請求、2是ARP應(yīng)答、3是RARP請求和4為RARP應(yīng)答,第二行中該字段值為2表示應(yīng)答。接下來的四個字段是發(fā)送端的硬件地址、發(fā)送端的IP地址、目的端的硬件地址和目的端IP地址。注意,這里有一些重復(fù)信息:在以太網(wǎng)的數(shù)據(jù)幀報頭中和ARP請求數(shù)據(jù)幀中都有發(fā)送端的硬件地址。對于一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。
表3的第2行為應(yīng)答,當(dāng)系統(tǒng)收到一份目的端為本機(jī)的ARP請求報文后,它就把硬件地址填進(jìn)去,然后用兩個目的端地址分別替換兩個發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送回去。
行 1 2 硬件類型(2) 00 01 00 01 協(xié)議類型(2) 08 0008 00 硬件地址長度(1) 06 06 協(xié)議地址長度(1) 04 04 Op(2) 00 01 00 02 發(fā)送端以太網(wǎng)地址(6) 00 50 FC 22 C7 BE 00 90 27 F6 54 53 發(fā)送端IP地址(4) C0 A8 71 D0 C0 A8 7101 目的以太網(wǎng)地址(6) 00 00 00 00 00 00 00 50 FC 22 C7 BE 目的IP地址(4) C0 A8 71 01 C0 A8 71 D0
表3
網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。
|