摘要:本文結(jié)合“計(jì)算機(jī)網(wǎng)絡(luò)”課程的教學(xué),并通過(guò)網(wǎng)絡(luò)教學(xué)實(shí)踐,對(duì)課程的教學(xué)方法進(jìn)行了探討。通過(guò)實(shí)例介紹了利用Wireshark捕獲網(wǎng)絡(luò)通信數(shù)據(jù)包,分析網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)傳輸機(jī)制,強(qiáng)調(diào)培養(yǎng)學(xué)生解決問(wèn)題的應(yīng)用能力。
關(guān)鍵詞:“計(jì)算機(jī)網(wǎng)絡(luò)”教學(xué);Wireshark;TCP/IP
“計(jì)算機(jī)網(wǎng)絡(luò)”課程作為計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程、通信工程和軟件工程等專業(yè)的主干課,其地位在課程體系群中尤為重要。學(xué)習(xí)這門(mén)課程,最重要的是掌握計(jì)算機(jī)網(wǎng)絡(luò)的原理,了解網(wǎng)絡(luò)硬件和軟件的工作機(jī)制。計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)理論復(fù)雜抽象,概念眾多,對(duì)剛開(kāi)始學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)的學(xué)生來(lái)說(shuō),這些概念和協(xié)議是非常難以理解和記憶的。計(jì)算機(jī)網(wǎng)絡(luò)原理主要描述的是各層的功能及其協(xié)議和服務(wù),具體地說(shuō)就是要理解網(wǎng)絡(luò)的相關(guān)功能層概念和網(wǎng)絡(luò)體系結(jié)構(gòu)(包括OSI參考模型、TCP/IP模型協(xié)議族),以及功能模塊之間的協(xié)議交互[1],這是學(xué)好計(jì)算機(jī)網(wǎng)絡(luò)的關(guān)鍵。網(wǎng)絡(luò)體系結(jié)構(gòu)是計(jì)算機(jī)網(wǎng)絡(luò)及其部件所應(yīng)完成的功能的精確定義。計(jì)算機(jī)網(wǎng)絡(luò)原理主要講述的就是各層的功能及其協(xié)議和服務(wù)。在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)過(guò)程中,利用Wireshark網(wǎng)絡(luò)探測(cè)和分析軟件,通過(guò)從網(wǎng)絡(luò)中實(shí)時(shí)捕獲幾種常見(jiàn)協(xié)議數(shù)據(jù)包并進(jìn)行分析,使學(xué)生對(duì)一些協(xié)議的工作原理及結(jié)構(gòu)有了更加深刻的理解和認(rèn)識(shí)[2]。
1Wireshark簡(jiǎn)介
Wireshark(原名Ethereal)是目前世界上最受歡迎的協(xié)議分析軟件,利用它可將捕獲到的網(wǎng)絡(luò)二進(jìn)制數(shù)據(jù)流翻譯為人們?nèi)菀鬃x懂和理解的文字和圖表等形式,極大地方便了對(duì)網(wǎng)絡(luò)活動(dòng)的監(jiān)測(cè)分析和教學(xué)實(shí)驗(yàn)。它有十分豐富和強(qiáng)大的統(tǒng)計(jì)分析功能,可在Windows,Linux 和UNIX等系統(tǒng)上運(yùn)行。它允許在一個(gè)網(wǎng)絡(luò)內(nèi)部實(shí)時(shí)捕獲和分析數(shù)據(jù)包,用戶可以通過(guò)圖形界面很直觀地瀏覽捕獲到的數(shù)據(jù)信息,研究數(shù)據(jù)包每一層的詳細(xì)信息[3]。
學(xué)習(xí)和理解計(jì)算機(jī)網(wǎng)絡(luò)原理的最好方法是,理論聯(lián)系實(shí)際。在一個(gè)現(xiàn)實(shí)的局域網(wǎng)中,網(wǎng)絡(luò)數(shù)據(jù)流往往是來(lái)自不同用戶的各種各樣協(xié)議數(shù)據(jù)的大混雜,因此利用Wireshark的“捕獲過(guò)濾器”和“顯示過(guò)濾器”,從錯(cuò)綜復(fù)雜的數(shù)據(jù)流中迅速提取自己所關(guān)心的網(wǎng)絡(luò)信息,了解和掌握網(wǎng)絡(luò)的工作原理和協(xié)議的交互過(guò)程。
Wireshark使用目的是網(wǎng)絡(luò)管理員使用Wireshark來(lái)檢測(cè)網(wǎng)絡(luò)問(wèn)題、網(wǎng)絡(luò)安全工程師使用Wireshark來(lái)檢查資訊安全相關(guān)問(wèn)題、開(kāi)發(fā)者使用Wireshark來(lái)為新的通訊協(xié)議除錯(cuò)、普通使用者使用Wireshark來(lái)學(xué)習(xí)網(wǎng)絡(luò)協(xié)議的相關(guān)知識(shí)等。
2用Wireshark分析網(wǎng)絡(luò)協(xié)議
網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)上所有設(shè)備(網(wǎng)絡(luò)服務(wù)器、計(jì)算機(jī)及交換機(jī)、路由器、防火墻等)之間通信規(guī)則的集合,它定義了通信時(shí)信息必須采用的格式和這些格式的意義。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é)議具有開(kāi)放式互聯(lián)環(huán)境,很容易實(shí)現(xiàn)各種局域網(wǎng)和廣域網(wǎng)的集成式互聯(lián)。此協(xié)議是當(dāng)今技術(shù)最成熟、應(yīng)用最廣泛的網(wǎng)絡(luò)協(xié)議[4]。
TCP是一種面向連接的、可靠的運(yùn)輸層協(xié)議,TCP數(shù)據(jù)傳輸(只有連接建立后才可進(jìn)行數(shù)據(jù)傳輸)需要通過(guò)在客戶端和服務(wù)器端建立特定的虛電路連接來(lái)完成,該過(guò)程通常被稱為“三次握手”,即發(fā)送方先發(fā)送連接請(qǐng)求,然后接收方進(jìn)行連接確認(rèn),最后發(fā)送方對(duì)接收方的確認(rèn)再次進(jìn)行確認(rèn)(圖1)。下面就以Wireshark對(duì) TCP連接建立交互過(guò)程的數(shù)據(jù)包捕獲分析為例,來(lái)說(shuō)明對(duì)TCP/IP協(xié)議實(shí)現(xiàn)的分析。
2.1建立捕獲TCP連接報(bào)文的實(shí)驗(yàn)環(huán)境
PCATTCP是一款不錯(cuò)的測(cè)試局域網(wǎng)網(wǎng)絡(luò)速度的軟件。在局域網(wǎng)中,兩臺(tái)主機(jī)通過(guò)交換機(jī)連接起來(lái)。在服務(wù)器端和客戶端都安裝和運(yùn)行PCATTCP進(jìn)行通信,產(chǎn)生TCP流。啟動(dòng)Wireshark進(jìn)行數(shù)據(jù)包捕獲,單擊Capture→Interfaces菜單,選擇自己的網(wǎng)卡,選擇Start開(kāi)始監(jiān)控流量。在服務(wù)器端運(yùn)行ttcp,監(jiān)聽(tīng)TCP的5001端口。圖2是服務(wù)器端的完整命令行輸出:
服務(wù)器配置好后,在客戶端運(yùn)行ttcp,雙方開(kāi)始通信。
2.2TCP報(bào)文分析
2.2.1客戶端發(fā)送連接請(qǐng)求
捕捉到的TCP 連接報(bào)文如圖3所示。
從圖3可以看出,客戶端發(fā)出的連接請(qǐng)求數(shù)據(jù)包封裝了三個(gè)頭信息:以太網(wǎng)(Ethernet)幀、IP數(shù)據(jù)報(bào)和TCP報(bào)文段。在數(shù)據(jù)鏈路層,數(shù)據(jù)以幀的方式進(jìn)行傳輸。在網(wǎng)絡(luò)層,加工的主要數(shù)據(jù)對(duì)象是IP數(shù)據(jù)報(bào)。IP協(xié)議是TCP/IP協(xié)議族中的核心協(xié)議之一,所有的TCP、UDP、ICMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。
在運(yùn)輸層,主要數(shù)據(jù)對(duì)象是TCP報(bào)文。客戶端發(fā)送的連接請(qǐng)求如圖4所示。
第一條報(bào)文是沒(méi)有數(shù)據(jù)的TCP報(bào)文段,并且將首部的SYN位設(shè)置為1。因此,第一條報(bào)文常常被稱為SYN分組。這個(gè)報(bào)文段里的序列號(hào)是由系統(tǒng)隨機(jī)設(shè)置的數(shù)值,表示客戶端為后續(xù)報(bào)文設(shè)定的起始編號(hào)。此TCP報(bào)文段,序列號(hào)SEQ在連接請(qǐng)求時(shí)相對(duì)初始值是0,其實(shí)際值是c9 f4 65 c2;確認(rèn)號(hào)是00 00 00 00,ACK標(biāo)志為0表明確認(rèn)號(hào)被忽略。SYN=1表示正在進(jìn)行連接請(qǐng)求,通過(guò)SYN和ACK也可以用來(lái)區(qū)分Connection Request和Connection Accepted,在連接請(qǐng)求中,SYN=1、ACK=0,連接響應(yīng)時(shí),SYN=1、ACK=1。
SYN分組通常是從客戶端發(fā)送到服務(wù)器端。這個(gè)報(bào)文段請(qǐng)求建立連接。因?yàn)橐坏┏晒⑦B接,服務(wù)器進(jìn)程必須已經(jīng)在監(jiān)聽(tīng)SYN分組所指示的IP地址和端口號(hào)[5]。如果沒(méi)有建立連接,SYN分組將不會(huì)應(yīng)答。如果第一個(gè)分組丟失了,客戶端通常會(huì)發(fā)送若干個(gè)SYN分組,如果多次嘗試不成功,客戶端將會(huì)停止并報(bào)告一個(gè)錯(cuò)誤給應(yīng)用程序。
2.2.2服務(wù)端連接響應(yīng)
當(dāng)服務(wù)器接收到連接請(qǐng)求時(shí),就對(duì)請(qǐng)求方進(jìn)行響應(yīng),以確認(rèn)收到客戶端的第一個(gè)TCP報(bào)文段。響應(yīng)的報(bào)文段SYN位和ACK位都將置1。通常稱這個(gè)報(bào)文段為SYNACK分組。SYNACK分組在確認(rèn)收到SYN分組的同時(shí)也發(fā)出一個(gè)初始的數(shù)據(jù)流序列號(hào),表示服務(wù)器發(fā)向客戶端的數(shù)據(jù)序號(hào),它不需要與剛才客戶端發(fā)來(lái)的數(shù)據(jù)流的序列號(hào)相匹配。服務(wù)器端響應(yīng)的數(shù)據(jù)包如圖5所示。
此數(shù)據(jù)包的起始序列號(hào)SEQ在協(xié)議框中顯示為0,在原始框中的實(shí)際值為63 cf 1a c9。所有初始序列號(hào)邏輯上都視同為序列號(hào)0。ACK標(biāo)志為1表明確認(rèn)號(hào)有效,SYN仍然為1。
圖6中確認(rèn)號(hào)在協(xié)議框中顯示為1,在原始框中的值為c9 f4 65 c3(比c9 f4 65 c2多1)。這解釋了TCP的確認(rèn)模式,TCP接收端確認(rèn)第X個(gè)字節(jié)已經(jīng)收到,并通過(guò)設(shè)置確認(rèn)號(hào)為X+1來(lái)表明期望收到的下一個(gè)字節(jié)號(hào)。
2.2.3客戶端連接確認(rèn)
在TCP連接建立的最后階段,客戶端對(duì)接收到數(shù)據(jù)包的服務(wù)器端進(jìn)行確認(rèn),到此為止建立完整的TCP連接,開(kāi)始全雙工模式的數(shù)據(jù)傳輸過(guò)程??蛻舳耸盏椒?wù)器端確認(rèn)后,發(fā)送帶有ACK標(biāo)志的TCP報(bào)文段來(lái)完成三次握手的過(guò)程[6]。這個(gè)報(bào)文段將確認(rèn)服務(wù)器端發(fā)送的SYNACK分組,并檢查T(mén)CP連接的兩端是否正確地打開(kāi)和運(yùn)作。
如圖7所示,在確認(rèn)階段,數(shù)據(jù)包由客戶端發(fā)送至服務(wù)器端,TCP中的序列號(hào)為c9 f4 65 c3(即上次服務(wù)器響應(yīng)報(bào)文的確認(rèn)號(hào))。
圖8中,報(bào)文段的本次確認(rèn)號(hào)為63 cf 1a ca(即上次的序列號(hào)加1)表示客戶端下一次希望從主機(jī)接收的數(shù)據(jù)的起始位置。ACK標(biāo)志為1表明確認(rèn)號(hào)有效,SYN置為0表示連接建立結(jié)束。連接建立后,雙方可以根據(jù)各自的窗口尺寸開(kāi)始傳輸數(shù)據(jù)。
2.3小結(jié)
從以上的圖可以看出,利用Wireshark可以針對(duì)每一數(shù)據(jù)包,完成從鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層到應(yīng)用層的協(xié)議解析。通過(guò)上面步驟,可以更加直觀的觀察到TCP三次握手建立的過(guò)程,有助于理解TCP及其工作原理,掌握協(xié)議的語(yǔ)法細(xì)節(jié)。
3結(jié)語(yǔ)
計(jì)算機(jī)網(wǎng)絡(luò)基本理論復(fù)雜抽象,不易理解,但這部分內(nèi)容又是進(jìn)一步學(xué)習(xí)“計(jì)算機(jī)網(wǎng)絡(luò)”課程,培養(yǎng)實(shí)踐應(yīng)用能力的基礎(chǔ)。在教學(xué)過(guò)程中,通過(guò)合理組織授課內(nèi)容,采用先進(jìn)的教學(xué)方法和較為科學(xué)的教學(xué)手段,使學(xué)生能夠較好地掌握計(jì)算機(jī)網(wǎng)絡(luò)的基本理論和方法。利用Wireshark網(wǎng)絡(luò)協(xié)議分析軟件,進(jìn)行網(wǎng)絡(luò)性能參數(shù)和數(shù)據(jù)代碼的捕獲分析,了解協(xié)議的封裝結(jié)構(gòu)、交互過(guò)程,對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)有很大的幫助。
參考文獻(xiàn):
[1] 謝希仁. 計(jì)算機(jī)網(wǎng)絡(luò)[M]. 大連:大連理工大學(xué)出版社,2004.
[2] 楊春勇,潘文君,朱翠濤. 計(jì)算機(jī)網(wǎng)絡(luò)課程教學(xué)及輔助教學(xué)方法研究[J]. 高等函授學(xué)報(bào):自然科學(xué)版,2008,21(6):12-14.
[3] Angela Orebaugh,Gilbert Ramirez,Jay Beale. Wireshark Ethereal Network Protocol Analyzer Toolkit[M]. Burlington:Syngress Press,2006.
[4] Forouzan.B.A. TCP/IP協(xié)議族[M]. 3版. 謝希仁,等譯. 北京:清華大學(xué)出版社,2006.
[5] 蔣波,李方軍,郝軍. 數(shù)據(jù)包的截獲與網(wǎng)絡(luò)協(xié)議分析[J]. 重慶三峽學(xué)院學(xué)報(bào),2006,22(3):26-28.
[6] Miller D. 數(shù)據(jù)通訊與網(wǎng)絡(luò)[M]. 鄧勸生,薛建新,王涌,譯. 北京:清華大學(xué)出版社,2007.
The Application of Wireshark in TCP/IP Network Protocol Teaching
PAN Wen-chan, ZHANG Yun
(College of Computer Science, Nanjing University of Posts and Telecommunications, Nanjing 210003, China)
Abstract: Combining with the teaching practice of computer network, a concise probe into the teaching methods of computer network is made. Wireshark is a network packet analyzer, which will try to capture network packets and tries to display these packet data as detailed as possible and make analysis of the network transport control protocol. The purpose of this study is to cultivate student ability to analyze and solve problems.
Key words: computer network teaching; Wireshark; TCP/IP
(編輯:彭遠(yuǎn)紅)