汪中才 馬正軍
(河南工程技術(shù)學(xué)校 河南 454000)
TCP/IP(Transmission Control Protocol/Internet Protocol,即傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)是不同操作系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)互連的通用協(xié)議,它是一組計(jì)算機(jī)通信協(xié)議族,其中最著名的兩個(gè)協(xié)議是TCP及IP協(xié)議。TCP/IP協(xié)議具有開放式互聯(lián)環(huán)境,很容易實(shí)現(xiàn)各種局域網(wǎng)和廣域網(wǎng)的集成式互聯(lián)。
從體系結(jié)構(gòu)來看,TCP/IP是OSI/ISO(開放系統(tǒng)互連參考模型)七層結(jié)構(gòu)的簡化,可分為四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和物理鏈路層,其每一層都有特定的功能及協(xié)議機(jī)制,整個(gè)系統(tǒng)遵循低層向高層服務(wù),對等實(shí)體間按照協(xié)議進(jìn)行通信的原則。
在TCP/IP層次結(jié)構(gòu)中,數(shù)據(jù)發(fā)送時(shí)是自上而下、層層封裝,數(shù)據(jù)接收時(shí)是自下而上、層層解封裝。數(shù)據(jù)發(fā)送的過程為:①應(yīng)用程序把需要發(fā)送的報(bào)文或數(shù)據(jù)流發(fā)送至傳輸層協(xié)議TCP或UDP;②傳輸層協(xié)議把數(shù)據(jù)分解成更小的塊,添加一個(gè)目標(biāo)端IP地址封裝成TCP、UDP等報(bào)文段后發(fā)送到網(wǎng)絡(luò)層;③網(wǎng)絡(luò)層在IP數(shù)據(jù)報(bào)中封裝該包,增加數(shù)據(jù)報(bào)報(bào)頭和報(bào)尾后將數(shù)據(jù)報(bào)發(fā)送到網(wǎng)絡(luò)接口層;④網(wǎng)絡(luò)接口層接受IP數(shù)據(jù)報(bào)并按幀方式(如Ethernet或Token Rings)通過特定網(wǎng)絡(luò)硬件傳輸,當(dāng)接收方主機(jī)接收到鏈路層幀后,數(shù)據(jù)傳輸?shù)倪^程恰好相反,其路徑是從網(wǎng)絡(luò)物理層向上傳輸給應(yīng)用層,每層都去掉相應(yīng)的報(bào)頭信息一直到數(shù)據(jù)返回至應(yīng)用層。具體過程如下圖所示。
圖1 TCP /IP數(shù)據(jù)傳輸
Ethereal 是免費(fèi)的網(wǎng)絡(luò)協(xié)議檢測程序,可以用來監(jiān)視所有在網(wǎng)絡(luò)上被傳送的包,并分析其內(nèi)容的,支持Unix,Windows。用戶可以抓取運(yùn)行的網(wǎng)站的相關(guān)資訊,包括每一封包流向及其內(nèi)容、資訊可依操作系統(tǒng)語系看出,方便查看、監(jiān)控TCP session動態(tài)等等。它通常被用來檢查網(wǎng)絡(luò)工作情況,或是用來發(fā)現(xiàn)網(wǎng)絡(luò)程序的bugs。目前ethereal提供了對TCP、UDP、Telnet和Ftp等常用協(xié)議的支持。它在很多情況下可以代替價(jià)格昂貴的sniffer。
啟動Ethereal,選擇“Capture”,選擇網(wǎng)卡,執(zhí)行抓包。
圖2 Ethereal抓包界面
選擇一個(gè)TCP的數(shù)據(jù)包分析,從圖2可以看出,該數(shù)據(jù)包封裝了三個(gè)頭信息:以太網(wǎng)(Ethernet)幀、IP數(shù)據(jù)報(bào)和 TCP報(bào)文段。下面我們分別對三種類型的數(shù)據(jù)包進(jìn)行分析。
在物理鏈路層,數(shù)據(jù)以幀的方式進(jìn)行傳輸。以太網(wǎng)幀頭信息中。描述了該數(shù)據(jù)包的源MAC地址為00-03-0F-0F-4B-FF,目標(biāo)MAC為00-E0-4C-F4-DE-6B,在幀中封裝的協(xié)議類型type值為0x0800,即所封裝的是IP數(shù)據(jù)報(bào)。
與圖3所示的MAC幀格式相比較,分析各個(gè)字段的含義,加深對以太網(wǎng)數(shù)據(jù)包結(jié)構(gòu)的理解與認(rèn)識。
圖3 MAC幀格式
在網(wǎng)絡(luò)層,主要數(shù)據(jù)對象是IP數(shù)據(jù)報(bào)。IP協(xié)議是TCP/IP協(xié)議族中的核心協(xié)議之一,所有的 TCP、UDP、ICMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。從以上請求數(shù)據(jù)包的IP首部可以看出,此IP數(shù)據(jù)報(bào)版本號(version)為4(即這個(gè)數(shù)據(jù)報(bào)為IPv4),首部(head length)為 20bytes,服務(wù)類型(services field)為 0x00,數(shù)據(jù)報(bào)總長(total length,即IP首部+數(shù)據(jù)載荷)為48,標(biāo)識(identification)為02aab,標(biāo)志(flags)為0x04表示報(bào)文不分段,段偏移(fragment offset)為0,生存時(shí)間(time to live)為128,數(shù)據(jù)報(bào)中上層協(xié)議類型protocol值為0x06(即本IP包中加載的內(nèi)容是一個(gè)TCP報(bào)文段),頭部校驗(yàn)和 0x9005表示正確,源主機(jī)的 IP地址為192.168.0.91,目的主機(jī)的IP地址為125.46.1.230。
然后再與圖4所示的IP數(shù)據(jù)包結(jié)構(gòu)相比較,分析各個(gè)字段的含義,加深對IP數(shù)據(jù)包結(jié)構(gòu)的理解與認(rèn)識。
圖4 IP數(shù)據(jù)包結(jié)構(gòu)
在運(yùn)輸層,主要數(shù)據(jù)對象是TCP報(bào)文。在以上的TCP報(bào)文段中,描述了請求方源端口號(source port)為 1114;目的端口號(destination port)為80,其中80是HTTP協(xié)議的保留端口號;序列寫SEQ是本次連接的初始序?qū)?,因此在連接請求時(shí)相對初始值是 0,其實(shí)際值是 092f18f5;頭部長度(header length)為 28bytes;標(biāo)志位(flags)為 0x0002,指示 ACK標(biāo)志為0,表明確認(rèn)寫被忽略,SY'N=1表示正在進(jìn)行連接請求,通過 SI'N和 ACK也可以用來區(qū)分 Connection Request和Connection Accepted,在連接請求中,SYN=1,ACK=0,連接響應(yīng)時(shí),SYN=1,ACK=1;PSH為0;窗口字段((window size)指示發(fā)送方想要接收的最大字節(jié)數(shù)為 16384;校驗(yàn)和(checksum)為0xf252表明正確;最后是8bytes的選項(xiàng)字段。
然后再與圖5所示的TCP協(xié)議段結(jié)構(gòu)相比較,分析各個(gè)字段的含義。
圖5 TCP協(xié)議段結(jié)構(gòu)
TCP/IP協(xié)議是一個(gè)協(xié)議族,包含大小上百個(gè)協(xié)議和標(biāo)準(zhǔn)。使用Ethereal也可方便地對其它協(xié)議如UDP、ICMP、HTTP、ARP等進(jìn)行分析,具體的分析過程與TCP類似,這里不再贅述。
通過以上分析可以看到,在教學(xué)中,通過實(shí)時(shí)抓包分析,可以將TCP/IP協(xié)議的封裝、解封過程解釋得非常清晰,起到事半功倍的效果。
隨著Internet應(yīng)用領(lǐng)域的擴(kuò)大,TCP/IP協(xié)議的地位也變得越來越重要。借助Ethereal、Sniffer等分析工具,深入研究TCP/IP協(xié)議體系,無論是對于我們開展計(jì)算機(jī)網(wǎng)絡(luò)課程教學(xué)、網(wǎng)絡(luò)系統(tǒng)檢查維修,還是對于我們更好地開發(fā)利用網(wǎng)絡(luò)資源都具有深遠(yuǎn)的意義。
[1]張浦生.計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)與應(yīng)用技術(shù)[M].北京:中國鐵道出版社,2007
[2]雷震甲.網(wǎng)絡(luò)工程師教程[M].北京:清華大學(xué)出版社,2006
[3]秦迎春.TCP/IP協(xié)議的隱患及防范[J].計(jì)算機(jī)安全.2005.4
[4]蔣波.用Ethereal對數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)協(xié)議分析[[J].教學(xué)與科技.2005.5
[5]蘇玉,許繪香.基于Ethereal的TCP/ IP網(wǎng)絡(luò)協(xié)議研究及分析[J].電腦知識與技術(shù).2006.4