版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
奸真機網(wǎng)珞實球能導布
計算機網(wǎng)絡課程組編寫
專業(yè)______________________
班級______________________
學號______________________
姓名______________________
指導教師______________________
安徽工業(yè)大學計算機學院
二。一二年九月
目錄
實驗總體說明1
拓撲結(jié)構(gòu)說明2
實驗一以太網(wǎng)幀的構(gòu)成6
實驗二地址解析協(xié)議ARP24
實驗三網(wǎng)際協(xié)議IP31
實驗四路由信息協(xié)議RIP66
實驗五開放式最短路徑優(yōu)先協(xié)議OSPF82
實驗六傳輸控制協(xié)議TCP98
實驗七郵件協(xié)議SMTP、POP3、IMAP112
實驗八超文本傳輸協(xié)議HTTP130
實驗九網(wǎng)絡程序設計1:聊天工具139
實驗十網(wǎng)絡程序設計2:文件傳輸工具143
實驗十一網(wǎng)絡程序設計3:郵件收發(fā)器148
實驗十二綜合試驗151
實驗總體說明
1.實驗總體目標
配合計算機網(wǎng)絡課程的教學,加強學生對計算機網(wǎng)絡知識(TCP/IP協(xié)議)的深刻理
解,培養(yǎng)學生的實際操作能力.
2.實驗課時分配
序號實驗項目學時試驗類型
實驗一以太網(wǎng)幀的構(gòu)成2驗證性
實驗二IP協(xié)議2驗證性
實驗三路由信息協(xié)議R1P2驗證性
實驗四開放式最短路徑優(yōu)先協(xié)議OSPF2驗證性
實驗五傳輸控制協(xié)議TCP2驗證性
實驗六郵件協(xié)議SMTP、POP32驗證性
實驗七超文本傳輸協(xié)議HTTP2設計性
實驗八網(wǎng)絡程序設計1:聊天工具2設計性
實驗九網(wǎng)絡程序設計2:文件傳輸工具2設計性
實驗十網(wǎng)絡程序設計3:郵件收發(fā)器2設計性
實驗十一綜合試驗4綜合性
由于課時限制以及相關(guān)專業(yè)的要求不同,上面所列試驗項目由任課教師根據(jù)課程要求
自由選定。
3.實驗環(huán)境
計算機網(wǎng)絡協(xié)議仿真實驗室:
實驗環(huán)境:網(wǎng)絡協(xié)議仿真教學系統(tǒng)(通用版)一套
開發(fā)工具:VC++
硬件設備:服務器,中心控制設備,組控設備,PC機若干臺
操作系統(tǒng):Windows2003服務器版
4.實驗總體要求
?按照各項實驗內(nèi)容做實驗,記錄各種數(shù)據(jù)包信息,包括操作、觀察、記錄、分析,
通過操作和觀察獲得直觀印象,從獲得的數(shù)據(jù)中分析網(wǎng)絡協(xié)議的工作原理;
?每項實驗均提交實驗報告,實驗報告的內(nèi)容可參照實驗的具體要求,但總體上應包
括以下內(nèi)容:實驗準備情況,實驗記錄,實驗結(jié)果分析,算法描述,程序段,實驗
過程中遇到的問題以及對思考問題的解答等,實驗目的、實驗原理、實驗步驟不需
要寫入實驗報告中。
拓撲結(jié)構(gòu)說明
拓撲結(jié)構(gòu)1
主
控
中
心
平
臺
組交換模塊
控
設
備共享模塊共享模塊共享模塊
一
主機A主機B主機C主機D主機E主機F
說明:IP地址分配規(guī)則為主機使用原有1P,保證所有主機在同一網(wǎng)段內(nèi)。
拓撲結(jié)構(gòu)2
說明:
?主機A、C、D的默認網(wǎng)關(guān)是;主機E、F的默認網(wǎng)關(guān)是。
?雙網(wǎng)卡主機,左端物理接口為物理接口1,右端物理接口為物理接口2。
拓撲結(jié)構(gòu)3
172.16.0.1/24192.168.0.2/24192.168.0.1/244口172.16.1.1/24
主機B(路由器)主機E(路由器)
主機A主機C主機D主機F
172.16.0.2/24192.168.0.3/24192.168.0.4/24172.16.1.2/24
說明:
?主機A的默認網(wǎng)關(guān)為;主機C的默認網(wǎng)關(guān)為;主機D的默
認網(wǎng)關(guān)為;主機F的默認網(wǎng)關(guān)為;主機B和主機E不設置默認網(wǎng)關(guān)。
?雙網(wǎng)卡主機,左端物理接口為物理接口1,右端物理接口為物理接口2。
拓撲結(jié)構(gòu)4
主機BV(路由器)主機EV(路由器)
1.網(wǎng)絡結(jié)構(gòu)說明:
?雙網(wǎng)卡主機,左端物理接口為物理接口1,右端物理接口為物理接口2。
?網(wǎng)絡結(jié)構(gòu)劃分為3個網(wǎng)段:
網(wǎng)段1:站點本地子網(wǎng)ID為FEC0:0:0:l::/64
網(wǎng)段2:站點本地子網(wǎng)ID為FEC0:0:0:2::/64
網(wǎng)段3:站點本地子網(wǎng)ID為FEC0:0:0:3::/64
?主機BV、EV做路由器使用。它們分別是主機B、主機E虛擬機下的Linux操作系統(tǒng)。
?主機A的IPv6地址的默認網(wǎng)關(guān)是主機BV接口1的鏈路本地地址;主機C的IPv6地
址的默認網(wǎng)關(guān)是主機BV接口2的鏈路本地地址;主機D的IPv6地址的默認網(wǎng)關(guān)是主機BV
接口2的鏈路本地地址:主機F的IPv6地址的默認網(wǎng)關(guān)是主機EV接口2的鏈路本地地址。
?該結(jié)構(gòu)適用于實驗一至實驗六。
2.檢測網(wǎng)絡結(jié)構(gòu)一:連接的正確性:
?按照網(wǎng)絡結(jié)構(gòu)圖連接網(wǎng)絡,并使用拓撲驗證檢查連接的正確性。
■在主機A上,執(zhí)行ping命令(pingfecO:O:O:l::l),若ping不通,則交換主機BV的兩
個網(wǎng)卡的網(wǎng)線連接。
■在主機F上,執(zhí)行ping命令(pingfecO:O:O命::1),若ping不通,則交換主機EV的兩
個網(wǎng)卡的網(wǎng)線連接。
拓撲結(jié)構(gòu)5
?主機A的默認網(wǎng)關(guān)為;主機C的默認網(wǎng)關(guān)為;主機F的默認
網(wǎng)關(guān)為;主機B、D、E不設置默認網(wǎng)關(guān)。
?雙網(wǎng)卡主機,左端物理接口為物理接口1,右端物理接口為物理接口2。
實驗一以太網(wǎng)幀的構(gòu)成
【實驗目的】
1,掌握以太網(wǎng)的報文格式
2.掌握MAC地址的作用
3.掌握MAC廣播地址的作用
4.掌握LLC幀報文格式
5.掌握協(xié)議編輯器和協(xié)議分析器的使用方法
6.掌握協(xié)議棧發(fā)送和接收以太網(wǎng)數(shù)據(jù)幀的過程
【實驗環(huán)境配置】
該實驗采用網(wǎng)絡結(jié)構(gòu)一。
【實驗原理】
OSI模型和TCP/IP協(xié)議族
1.OSI簡介
國際標準化組織(ISO)成立于1947年,它是個多國團體,專門就一些國際標準達成
世界范圍的一致。網(wǎng)絡方面的ISO標準就是OSI(開放系統(tǒng)互連)模型。它是在20世紀70
年代后期問世的。
在不需要改變底層硬件或軟件邏輯的情況下,0SI模型使兩個不同的系統(tǒng)能夠較容易地
通信。0SI模型并不是協(xié)議,它是個靈活的、穩(wěn)健的和可互操作的模型,用來設計網(wǎng)絡體系
結(jié)構(gòu),它使得所有類型的計算機系統(tǒng)可以通信。0SI模型包括7個層次,每一層都定義了通
過網(wǎng)絡傳送信息的一些過程,如下圖所示。掌握了0SI模型的基本概念后,就有了學習數(shù)
據(jù)通信較牢固的基礎。
二.IEEE802參考模型
1980年2月IEEE(電氣和電子工程師協(xié)會)成立了802局域網(wǎng)標準委員會,開始了有關(guān)
局域網(wǎng)標準化的工作。IEEE802局域網(wǎng)參考模型中只定義了物理層和數(shù)據(jù)鏈路層,在模型
中較高層次,IEEE802參照OSI模型,盡可能與其相符合。IEEE標準模型與OSI模型的比
較如下圖所示:
其它上層
網(wǎng)絡層
邏輯缽路控制
媒體訪問控制
介質(zhì)訪問單元
介質(zhì)說明
IEEE標準0SI模型
圖1-3IEEE標準模型與OSI模型比較
在OSI模型中,物理層的任務是為上一層提供一個物理連接,以透明的方式傳送比特流。
而在IEEE802局域網(wǎng)參考模型中,物理層被分為上下兩個子層,分別為:
?下面的子層是對電纜介質(zhì)的說明;
?上面的子層是介質(zhì)訪問單元(MAU)。
電纜可以是各種介質(zhì),如雙絞線,同軸電纜等。MAU的主要作用是信息編碼、信號發(fā)送
和介質(zhì)處理等。
在0SI模型中,數(shù)據(jù)鏈路層的任務是把物理層轉(zhuǎn)化成可靠的鏈路,使物理層對上層(網(wǎng)
絡層)看起來好像是不產(chǎn)生差錯的。而正EE802標準的數(shù)據(jù)鏈路層被分為兩個子層:
?下面的子層是媒體訪問控制子層(MAC);
?上面的子層是邏輯鏈路控制子層(LLC)。
LLC子層的功能是實現(xiàn)有效的數(shù)據(jù)傳輸,負責數(shù)據(jù)鏈路層的流量控制和差錯控制。MAC
子層的功能是保證物理功能和邏輯功能的連續(xù)性,還把從LLC子層收到的數(shù)據(jù)組裝成幀,
并把幀交給物理層進行編碼。
三.以太網(wǎng)簡介
IEEE802.3所支持的局域網(wǎng)標準最早是由Xerox開發(fā)的,后來通過Digital公司、Intel公
司和Xerox公司聯(lián)合擴展為以太網(wǎng)標準,符合以太網(wǎng)標準的局域網(wǎng)絡稱為以太網(wǎng)。
1.以太網(wǎng)的分類
數(shù)據(jù)速率為10Mbps的以太網(wǎng)稱為標準以太網(wǎng),數(shù)據(jù)速率為100Mbps的以太網(wǎng)稱為快速
以太網(wǎng),數(shù)據(jù)速率為1000Mbps的以太網(wǎng)稱為千兆以太網(wǎng)。目前10G以太網(wǎng)的標準也已正式
制定。
2.以太網(wǎng)的物理地址
以太網(wǎng)上的每一個主機都有自己的網(wǎng)絡接口卡(NIC)o網(wǎng)絡接口卡通常安裝在主機內(nèi)
部,并為主機提供一個6字節(jié)的物理地址,如:44-45-53-54-00-00o在遵循IEEE802標準的
以太網(wǎng)絡中,將這個物理地址稱作“MAC地址。MAC地址是惟一的,任意兩個不同的網(wǎng)絡
接口卡都具有不同的MAC地址。MAC地址中的某些位具有特殊的意義,如下圖所示:
24bitIEEEadministeredcompanyID—24bitManufacturerselectedextensionID
ccccccugccccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxx1
G/L比特位l/G比特位
圖1-4以太網(wǎng)的物理地址
I/G比特位表示Individual/Group,當1/G位為0時,地址字段表示單個站地址(單播),為1
時表示組地址,用來進行多播。
G/L比特位表示Global/Local,當G/L位為1時是全球管理,保證在全球沒有相同的地
址,當為0時是本地管理,這時用戶可任意分配網(wǎng)絡上的地址。
以太網(wǎng)MAC地址可分為三類:單播地址、廣播地址和多播地址。單播地址(unicast)
是一對一的,該地址是特定主機的MAC地址;廣播地址(broadcast):廣播地址是一對全
體的,該地址為全1,指明數(shù)據(jù)幀是發(fā)送給所有主機的。多播地址(multicast):多播地址是
一對多的,指明數(shù)據(jù)幀是發(fā)送給一部分主機的。
四.以太網(wǎng)訪問模式
當多個節(jié)點被連接到條鏈路上時,叫做多點鏈路或廣播鏈路。這時就需要一個協(xié)議來
協(xié)調(diào)鏈路的訪問,使得同一時刻只有一個節(jié)點訪問鏈路。如果發(fā)生同一時刻多個節(jié)點使用鏈
路的情況,則稱為鏈路發(fā)生了沖突。帶有沖突檢測的載波偵聽多路訪問(CSMA/CD)是這
樣一種方案。發(fā)送主機在傳輸過程中仍繼續(xù)監(jiān)聽信道,以檢測是否存在沖突。如果發(fā)生沖突,
信道上可以檢測到超過發(fā)送主機本身發(fā)送的載波信號的幅度,由此判斷出沖突的存在。一旦
檢測到?jīng)_突,就立即停止發(fā)送,并向總線上發(fā)一串阻塞信號,用以通知總線上其它各有關(guān)主
機。這樣,通道容量就不致因白白傳送已受損的幀而浪費,可以提高總線的利用率。以太網(wǎng)
使用CSMA/CD作為其訪問模式。
五.以太網(wǎng)的幀格式
1.以太網(wǎng)的MAC幀格式
以太網(wǎng)的MAC幀格式有兩種標準,一種是DIXEthernetV2標準,另一種是IEEE的802.3
標準。但兩種幀格式可以在同一以太網(wǎng)絡共存。兩種幀格式都具有7個域:前導碼、幀首定
界符、目的MAC地址、源MAC地址、協(xié)議類型或數(shù)據(jù)長度、數(shù)據(jù)、幀校驗序列。如下圖
所示:
協(xié)議類型或
前導碼幀首定界符目的MAC地址源MAC地址幀校驗序列
數(shù)據(jù)長度數(shù)據(jù)
(7字節(jié))(1字節(jié))(6字節(jié))(6字節(jié))(4字節(jié))
(2字節(jié))
圖1-5以太網(wǎng)的MAC幀格式
兩種格式的幀可以依據(jù)協(xié)議類型或數(shù)據(jù)長度字段的值進行區(qū)分。如果此幀是DIXEthernet
V2標準格式幀,則協(xié)議類型或數(shù)據(jù)長度字段的值大于1536;如果此幀是IEEE802.3標準格
式的幀,則協(xié)議類型或數(shù)據(jù)長度字段的值小于1518。對DIXEthernetV2幀來說,此字段的
值代表了高層協(xié)議的類型;對IEEE802.3幀來說,它的高層協(xié)議一定是LLC,此字段的值
代表了數(shù)據(jù)的長度。
在以太網(wǎng)的MAC幀格式中,各個字段的含義如下:
?前導碼:這是以太網(wǎng)MAC幀的第一個域,包含了7個字節(jié)的二進制“1”和“0”間隔的
代碼,即“10101010……10”共56位,提示接收方一個數(shù)據(jù)幀即將到來,同時使接收系統(tǒng)建
立起同步時鐘。
?幀首定界符:幀首定界符標記了幀的開始。它是一個字節(jié)的“10101011”二進制序列,
幀首定界符通知接收方后面所有的內(nèi)容都是數(shù)據(jù),以便接收方對數(shù)據(jù)幀進行定位。
?目的MAC地址:目的MAC地址為6個字節(jié),標記了數(shù)據(jù)幀下一個主機的物理地址。
如果數(shù)據(jù)包的目的地址必須從一個網(wǎng)絡穿越到另一個網(wǎng)絡,那么目的MAC地址所包含的是
連接當前網(wǎng)絡和下一個網(wǎng)絡的路由器地址。當數(shù)據(jù)包到達目標網(wǎng)絡后,目的MAC地址域換
成目的主機的地址。
?源MAC地址:源MAC地址也是6個字節(jié)。它包含了最后一個轉(zhuǎn)發(fā)此幀的設備的物
理地址。該設備可以是發(fā)送此數(shù)據(jù)幀的主機,也可以是最近接收和轉(zhuǎn)發(fā)此數(shù)據(jù)幀的路由器。
?協(xié)議類型或數(shù)據(jù)長度:如果該字段的值小于1518,它用于定義后面數(shù)據(jù)字段的長度;
如果字段的值大于1536,它定義一個封裝在幀中的數(shù)據(jù)包的類型。
?數(shù)據(jù):它的長度范圍是從46到1500字節(jié)之間。46是以太網(wǎng)MAC幀所封裝的高層協(xié)
議數(shù)據(jù)的最小長度。如果高層協(xié)議的數(shù)據(jù)包小于46字節(jié),則填充到46字節(jié)。
?幀校驗序列:最后一個域是幀校驗序列,以太網(wǎng)采用32位冗余校驗(CRC)。校驗
范圍是除了前導碼、幀首定界符和幀校驗序列外的所有內(nèi)容。
2.LLC幀格式
LLC的幀格式如下圖所示:
DSAPSSAP控制UJC數(shù)據(jù)
圖1-6LLC幀格式
其中,DSAP(目的服務訪問點)和SSAP(源服務訪問點)是LLC所使用的地址,用來
標識接收和發(fā)送數(shù)據(jù)的計算機上的用戶實體。DSAP的第一個比特是用來指明幀是為單地址
還是組地址,0表示單地址,1表示組地址。SSAP的第一個比特用來指明幀是命令幀還是
響應幀。0表示命令幀,1表示響應幀。
LLC定義了三種幀:信息幀(1-幀)、監(jiān)控幀(S-幀)和無編號幀(U-幀)。幀的類型可
從控制字段識別。對于信息幀和監(jiān)控幀,控制字段為2字節(jié)長,而對于無編號幀,控制字段
為1字節(jié)長。
下圖表示了LLC三類幀的控制字段的比較。
1位7位1位7位
0N(S)P/FNCR)
I-幀的控制字段
11
2位4位1位7位
位位
10SSXP/FNG0
s-幀的控制字段
11MMP/FMMM
u-幀的控制字段
圖1-7LLC三類幀的控制字段
?N(S):發(fā)送序號。
?N(R):接收序號。
?SS:監(jiān)控功能位,00表示準備接收(RR);10表示未準備接收(RNR):01表示拒
絕(REJ)o
?M:修正功能位。
?X:保留,設置為0。
?P/F:Poll/final位。命令LLCPDU傳輸/響應LLCPDU傳輸。
3.LLCPDU與相鄰層的PDU之間的關(guān)系
IEEE802標準為LLC和MAC子層的幀格式作了詳細規(guī)定。下圖描述了網(wǎng)絡層PDU、
LLC子層PDU和MAC子層PDU的關(guān)系。
圖1-8LLC-PDU與相鄰層的PDU之間的關(guān)系
LLC幀(即LLC-PDU)與媒體無關(guān),而MAC(H[JMAC-PDU)則與局域網(wǎng)的媒體訪問
方式有很大關(guān)系,不同的局域網(wǎng)有不同的MAC幀格式。
4.LLC地址與MAC地址
在MAC幀的幀首中,有目的MAC地址和源MAC地址,它們都是6字節(jié)長。在LLC幀
的幀首中,則設有DSAP和SSAP,該地址是邏輯地址,表示的是數(shù)據(jù)鏈路層的不同訪問服
務點。LLC地址與MAC地址是兩個不同的概念,在局域網(wǎng)中,一個主機上的多個服務訪問
點可以利用同?條數(shù)據(jù)鏈路。從這一點可以看出,LLC子層帶有OSI網(wǎng)絡層的某些功能。
六.協(xié)議棧實現(xiàn)代碼解析
本實驗將通過對netproto_eth_student.h和netproto_eth_student.c兩個文件進行編碼,完成
協(xié)議棧中以太網(wǎng)數(shù)據(jù)幀接收和發(fā)送的實現(xiàn)。
netproto_eth_stUdent.h文件中定義了以太網(wǎng)數(shù)據(jù)幀中“協(xié)議類型與數(shù)據(jù)長度”字段值以及以
太網(wǎng)數(shù)據(jù)幀的負載內(nèi)容、負載長度,關(guān)鍵代碼如下所示:
#definePAYLOAB_DATA"Hello,EXPcns!"
#definePAYLOAD_LEHsizeof(PAYLOAD.DATA)
#defineMAX_FAYLOAI)_LEN1024
#defineTYPELENGTH5893
這段代碼定義了3個宏,他們代表的含義如下表所示:
表1-1netproto_eth_student.h中定義的宏
宏值描述
PAYIJ3AD_DATA“Hello,World!”定義以太網(wǎng)負載數(shù)據(jù)
PAYLOADJENsizeofffAYLOAD-DATA)定義以太網(wǎng)負載數(shù)據(jù)長度
定義以太網(wǎng)怖中的“協(xié)議類型或數(shù)據(jù)長度”
TYPE_LENGTM5893
字段的值
在實驗的編碼過程中,應該使用這些宏對相應的變量進行賦值。學生也可以根據(jù)自己的
需求修改這些宏定義的值。
netproto_eth_student.c文件是協(xié)議棧中以太網(wǎng)數(shù)據(jù)幀的實現(xiàn)部分,其中定義了2個函數(shù)。
下面分別介紹這些協(xié)議棧的實現(xiàn)部分。
函數(shù)netp_eth_output_student的功能是編輯并發(fā)送一個EthernetV2數(shù)據(jù)幀。這個函數(shù)的編
碼工作需要由學生完成。
當有數(shù)據(jù)到達本機網(wǎng)絡接口時,函數(shù)netp_eth_input_student將被調(diào)用,并傳遞給這個函
數(shù)原始數(shù)據(jù)。該函數(shù)的返回值為push_to_lwip的枚舉類型值,push_to_lwip的定義如下:
enumpush_to_lwip{
BETP_PUSH_TO_LWIP,//數(shù)據(jù)處理完成后,交給IwIP繼續(xù)處理
NETP_NO_PUSH_UWP//數(shù)據(jù)處理完成后,不交給IwIP繼續(xù)處理,本層處理完畢以后
數(shù)據(jù)包被丟棄
}:
返回NETP_PUSH_TO_LWIP表示這個數(shù)據(jù)幀應該提交給協(xié)議棧上層繼續(xù)處理,而返回
NETP_NO_PUSH_LIWP則表示不需要提交給協(xié)議棧上層處理,本層處理完畢后,這個數(shù)據(jù)
幀將被丟棄。需要根據(jù)正確的邏輯關(guān)系返回適當?shù)闹?,使協(xié)議棧正常工作。
在編碼過程中可能會遇到一些結(jié)構(gòu)體、宏和函數(shù),下表是對他們進行和介紹:
表1-2實驗涉及的結(jié)構(gòu)體和函數(shù)
結(jié)構(gòu)體/函數(shù)聲明或定義描述
structnetp_eth_header{
structnetp__eth_addrdest_address;
以太網(wǎng)數(shù)據(jù)幀頭結(jié)
structnetp__eth_headerstructnetp_eth_addrsour_address;
構(gòu)
ul6_ttype;
);
structnetp_eth_addr{
structnetp_eth_addru8_taddr[ETH_ADDRESS_LEN]:以太網(wǎng)地址
};
ETH_HEADER_LEN#defineETH_HEADER_LEN14以太網(wǎng)幀頭長度
PAYLOAD_DATA#definePAYLDAD_DATA“Hello,EXPcns!*以太網(wǎng)負載內(nèi)容
PAYLOAD_LEN#de£ineFAYLOAD_LENsizeof(PAYLOADEDATA)以太網(wǎng)負載長度
MAX_PAYLOAD_LEN#defineMAX_PAYLOAD_LEN1024最大負載長度
協(xié)議類型與數(shù)據(jù)長
TYPE.LENGTH#defineTYPE_LENGTH5893
度字段值
voidnetp_set_eth_addr(
structnetp_eth_addr*p_addr,
設置以太網(wǎng)數(shù)據(jù)幀
netp_set_eth_addru8_tvl,u8_tv2,u8_tv3,
MAC地址
u8_tu8__tv5,u8_tv6
);
intnetp__current_hw_addr(獲取正在使用的網(wǎng)
netp_c\irrent_hw_addru8_t*hardware_address絡適配器的物理地
);址
Intnetp_packet_send(
netp_packet_sendvoid*buffer/intlen發(fā)送一個數(shù)據(jù)幀
);
將16位數(shù)值由主機
htonsul6_thtons(ul6_tn):字節(jié)序轉(zhuǎn)換為網(wǎng)絡
字節(jié)序
intnetp_is_eth_addr_broadcast(
判斷一個MAC地址
netp_is_eth_addr_broadcaststructnetp_eth_addr*mac__address
是否為廣播地址
);
intnetp_eth_addr__cmp(
structnetp_eth_addr*mac_address1/判斷兩個MAC地址
netp_eth_addr_cmp
structnetp_eth_addr*mac_address2是否相同
);
七.各模塊推薦流程
1.EthernetV2數(shù)據(jù)幀發(fā)送流程
編碼實現(xiàn)EthernetV2數(shù)據(jù)幀發(fā)送推薦使用如下流程:
圖1-9EthernetV2數(shù)據(jù)幀發(fā)送推薦流程
2.EthernetV2數(shù)據(jù)幀處理流程
編碼實現(xiàn)處理EthernetV2輸入數(shù)據(jù)幀推薦使用如下流程:
開始
圖1-10處理EthernetV2輸入數(shù)據(jù)幀推薦流程
練習一:領(lǐng)略真實的MAC幀
各主機打開協(xié)議分析器,進入相應的網(wǎng)絡結(jié)構(gòu)并驗證網(wǎng)絡拓撲的正確性,如果通過拓撲
驗證,關(guān)閉協(xié)議分析器繼續(xù)進行實驗,如果沒有通過拓撲驗證,請檢查網(wǎng)絡連接。
本練習將主機A和B作為一組,主機C和D作為一組,主機E和F作為一組?,F(xiàn)僅以
主機A、B所在組為例,其它組的操作參考主機A、B所在組的操作。
1.主機B啟動協(xié)議分析器,新建捕獲窗口進行數(shù)據(jù)捕獲并設置過濾條件(提取ICMP協(xié)議)。
2.主機Aping主機B,察看主機B協(xié)議分析器捕獲的數(shù)據(jù)包,分析MAC幀格式。
3.將主機B的過濾器恢復為默認狀態(tài)。
練習二:理解MAC地址的作用
本練習將主機A、B、C、D、E、F作為一組進行實驗。
1.主機B、D、E、F啟動協(xié)議分析器,打開捕獲窗口進行數(shù)據(jù)捕獲并設置過濾條件(源
MAC地址為主機A的MAC地址)。
2.主機Aping主機C。
3.主機B、D、E、F上停止捕獲數(shù)據(jù),在捕獲的數(shù)據(jù)中查找主機A所發(fā)送的ICMP數(shù)據(jù)幀,
并分析該幀內(nèi)容。
?記錄實驗結(jié)果
表1-3實驗結(jié)果
本機MAC地址源MAC地址目的MAC地址是否收到,為什么
主機B
主機D
主機E
主機F
練習三:編輯并發(fā)送MAC廣播幀
本練習將主機A、B、C、D、E、F作為一組進行實驗。
1.主機E啟動協(xié)議編輯器。
2.主機E編輯一個MAC幀:
目的MAC地址:FFFFFF-FFFFFF
源MAC地址:主機E的MAC地址
協(xié)議類型或數(shù)據(jù)長度:大于0x0600
數(shù)據(jù)字段:編輯長度在46—1500字節(jié)之間的數(shù)據(jù)
3.主機A、B、C、D、F啟動協(xié)議分析器,打開捕獲窗口進行數(shù)據(jù)捕獲并設置過濾條件(源
MAC地址為主機E的MAC地I:)0
4.主機E發(fā)送已編輯好的數(shù)據(jù)幀。
5.主機A、B、C、D、F停止捕獲數(shù)據(jù),察看捕獲到的數(shù)據(jù)中是否含有主機E所發(fā)送的數(shù)
據(jù)幀。
?結(jié)合練習三的實驗結(jié)果,簡述FFFFFF-FFFFFF作為目的MAC地址的作用。
練習四:發(fā)送EthernetV2數(shù)據(jù)幀功能的實現(xiàn)
本練習將主機A、B、C、D、E、F作為一組進行實驗。
在實驗中,主機A將新接口的IP地址設置為1,主機B使用處于連接狀態(tài)的物
理接口,將新接口的IP設置為172.置.0.12、主機C將新接口的IP地址設置為3、
主機D使用處于連接狀態(tài)的物理接口,將新接口的IP地址設置為4,主機E使用
處于連接狀態(tài)的物理接口,將新接口的IP地址設置為5,主機F將新接口的IP地
址設置為6。所有主機使用子網(wǎng)掩碼,默認網(wǎng)關(guān)設置為。
1.所有主機編碼實現(xiàn)發(fā)送EhtemetV2數(shù)據(jù)幀
(1)各主機打開netproto_eth_student.c文件,在函數(shù)netp_arp_output_student內(nèi)編寫實現(xiàn)
代碼。
(2)參考實驗原理EthernetV2數(shù)據(jù)幀發(fā)送推薦流程圖給出的流程,分析已經(jīng)存在的代
碼。
已經(jīng)存在的代碼定義了一個以太網(wǎng)數(shù)據(jù)幀頭部結(jié)構(gòu)和一個能容納以太網(wǎng)幀頭和負載的發(fā)
送緩沖區(qū)send_buff,另外還實現(xiàn)了將以太網(wǎng)幀頭結(jié)構(gòu)和負載拷貝到發(fā)送緩沖區(qū)的過程。
(3)構(gòu)造、填充以太網(wǎng)數(shù)據(jù)幀頭
構(gòu)造并填充一個以太網(wǎng)數(shù)據(jù)幀頭。目的MAC地址設置為廣播地址即FF-FF-FF-FF-FF-FF,
可以使用netp_set_eth_addr函數(shù)設置MAC地址。源MAC地址設置為本接口的MAC地址,
可以使用netp_current_hw_addr函數(shù)獲取本接口的MAC地址。協(xié)議類型或數(shù)據(jù)長度字段值
應設置為0x0806,表示上層協(xié)議為arp協(xié)議,可以使用MAC_PROTO_ARP宏。
(4)判斷是否為合法的EthernetV2數(shù)據(jù)幀
根據(jù)實驗原理關(guān)于MAC幀格式的介紹,判斷要發(fā)送的數(shù)據(jù)幀是不是合法的EthernetV2
數(shù)據(jù)幀,即“協(xié)議類型或數(shù)據(jù)長度”字段值是否大于1536。
(5)使用發(fā)送函數(shù)netp_packet_send發(fā)送數(shù)據(jù)幀。
2.當完成代碼編寫后,所有主機打開協(xié)議分析器,開始捕獲數(shù)據(jù)。
3.所有主機調(diào)試并運行程序。
4.各主機停止數(shù)據(jù)捕獲,觀察實驗現(xiàn)象。
?捕獲到的數(shù)據(jù)幀,“協(xié)議類型或數(shù)據(jù)長度''字段值是什么?
5.參考代碼如下:
/**
*'brief編輯并發(fā)送一個EthernetV2數(shù)據(jù)幀
?
*由學生完成這個函數(shù),發(fā)送一個EthernetV2數(shù)據(jù)幀。主線程將會調(diào)用這個函數(shù)。
*/
void
netp_eth_output_student0
{
//創(chuàng)建以太網(wǎng)幀頭結(jié)構(gòu)并申請發(fā)送緩沖區(qū)
structnetp_eth_headereth_header;
u8_tsend_buff[ETH_HEADER_LEN+PAYLOAD_LEN];
//構(gòu)造以太網(wǎng)幀頭,目的MAC地址為廣播地址、源MAC地址為本接口MAC地址
//協(xié)議類型為TYPE_I2NGTH所定義的類型值
netp_set_eth_addr(ð_header.dest-address^CIxFF,OxFF,OxFF?OxFF/OxFF,OxFF);
netp_current_hw_addr(eth_header.sour_address));
eth_header.type=htons(TYPE_LENGTH);
//判斷是否為合法的EthernetV2數(shù)據(jù)幀
if(ntohs(eth_header.type)<=1536){
pnntfCEthernetv2數(shù)據(jù)幀的協(xié)議類型或數(shù)據(jù)長度字段值要求大于1536,發(fā)送失敗?5");
return;
)
//將以太網(wǎng)幀頭結(jié)構(gòu)和負載拷貝到發(fā)送^沖區(qū)中
memcpy(send_buf£,ð_header,sizeof(struetnetp_eth_header));
memepy(send_buff+ETH_HEADER_LEN,PAYLDAD_DATA,PAYLOAD_LEN);
//使用發(fā)送函數(shù)tnetp_packet_send)發(fā)送數(shù)據(jù)幀
if(!netp_packet_send(send_buff,sizeof(send_buff))){
print£("發(fā)送MAC數(shù)據(jù)幡--成功?\n"):
}else{
print£("發(fā)送MAC數(shù)據(jù)幀失???\n");
)
練習五:處理EthernetV2輸入數(shù)據(jù)幀功能的實現(xiàn)
本練習將主機A、B、C、D、E、F作為一組進行實驗。
該練習需要在前個練習的基礎匕進行。
在實驗中,主機A將新接口的IP地址設置為k舊LB使用處于連接狀態(tài)的物
理接口,將新接口的IP設置為2、主機C將新接口的IP地址設置為3、
主機D使用處于連接狀態(tài)的物理接口,將新接口的IP地址設置為4,主機E使用
處于連接狀態(tài)的物理接口,將新接口的IP地址設置為5、主機F將新接口的IP地
址設置為6o所有主機使用子網(wǎng)掩碼,默認網(wǎng)關(guān)設置為0.000。
1.所有主機編碼實現(xiàn)處理EthernetV2輸入數(shù)據(jù)幀功能
(1)各主機打開netproto_eth_student.c文件,在函數(shù)netp_eth_input_student內(nèi)編寫實現(xiàn)
代碼,參考實驗原理處理EthernetV2輸入數(shù)據(jù)幀推薦流程圖給出的流程,思考代碼編寫方
案。首先分析netproto_eth_student.c文件中已經(jīng)給出的代碼。
已經(jīng)存在的代碼定義了一個以太網(wǎng)數(shù)據(jù)幀頭部結(jié)構(gòu)和以太網(wǎng)數(shù)據(jù)幀地址結(jié)構(gòu),實現(xiàn)了從
輸入緩沖區(qū)中拷貝以太網(wǎng)幀頭結(jié)構(gòu),獲取本接口MAC地址的過程。最后的幾行代碼填充了
負載緩沖區(qū),顯示其內(nèi)容。
(2)提取“協(xié)議類型或數(shù)據(jù)長度”字段值為TYPE_LENGTH的數(shù)據(jù)幀
通過判斷以太網(wǎng)幀中的“協(xié)議類型或數(shù)據(jù)長度”字段值是否為TYPE_LENGTH(自定義上
層協(xié)議)來過濾以太網(wǎng)數(shù)據(jù)幀。如果接收到的數(shù)據(jù)包不滿足條件,則應該返回
NETP_PUSH_TO_LWIP交給協(xié)議棧處理。
(3)提取“目的MAC地址”字段值為本接口地址或廣播地址的數(shù)據(jù)幀
通過判斷以太網(wǎng)幀中的“目的MAC地址”字段值是否為本接口MAC地址或廣播地址(目
的MAC地址為全1)來過濾不是發(fā)送給本接口的數(shù)據(jù)幀。如果接收到的數(shù)據(jù)包不滿足條件,
則應該返回NETP_PUSH_TO_LWIP交給協(xié)議棧處理。
2.所有主機調(diào)試并運行程序
將netproto_eth_student.h文件中PAYLOAD_DATA定義的內(nèi)容修改為自己要發(fā)送的負載
信息,例如“【amhostA”。
?你收到的負載內(nèi)容是什么?
3.參考代碼如下:
/**
*\brief當有數(shù)據(jù)幀到達時,將調(diào)用這個函數(shù)
*
*\parsunpacket指向接收到的數(shù)據(jù)
*\parampacket_len數(shù)據(jù)幀的長度
*
*'return一個put」o」wip類型的返回值。返回NETP_PVT_IXEP表示處理數(shù)據(jù)后將數(shù)據(jù)幀交給上層協(xié)
議棧繼續(xù)處理
*返回NETP_NO_PUT_U:WP表示不將數(shù)據(jù)幀交給上層協(xié)議棧處理。
*/
enumpush_to_lwip
netp_eth_input_student(void*packe,intpacket_len)
{
//創(chuàng)建以太網(wǎng)幀頭結(jié)構(gòu)和以太網(wǎng)數(shù)據(jù)幀地址結(jié)構(gòu)
structnetp_eth_headereth_header;
structnetp_eth_addrmy_mac_address;
charpayload_buff[MAX_PAYIJ3AD_LEN]={0}:
//賦值以太網(wǎng)幀頭、本機MAC地址
memcpy(ð_header?packet,ETH_HEADER_LEN);
netp__current_hw_addr(Ajny__mac_address);
//判斷”協(xié)議類型與數(shù)據(jù)長度”值是否為TYPERNGTH
ifCTYPE..LENGTH!=ntohs(eth>eader.type)){
returnNETP_PUSH_TO_LWIP;
//判斷目的MM地址是否為本接口地址或者為廣播地址
ifQ(netp_is_eth_addr_broadcast((struetnetp_eth_addr*)packet)|
!netp_eth_addr_cmp(ftjny_mac_address,(structnetp_eth_addr*)packet))){
returnNETP_PUSH_TO_LWIP;
}
//埴充負載緩沖區(qū),顯示內(nèi)容
memset(payload_buff?0,sizeof(payload_buff));
memcpy(payload_buff,(u8_t*)packet+ETH_HEADER_LEN,MAX_PAYIJJAD_LEN-1);
print£("收到協(xié)議類型為對的以太網(wǎng)數(shù)據(jù)蕨,負載內(nèi)容為%s\n",
TYPE_LENGTH,(char*)payload_buff);
returnIIETP_NO_PUSH_UWP;
思考問題
練習1:
1.為什么有的主機會收到ICMP數(shù)據(jù)包而有的主機收不到ICMP數(shù)據(jù)包?
2.根據(jù)實驗理解集線器(共享設備)和交換機(交換設備)的區(qū)別?
3.說明共享設備的不安全性。
練習2:
1.主機A、B、C、D、F是否可以收到主機E的廣播幀?
2.說明MAC廣播幀的范圍?
練習3
1.如何編輯LLC無編號幀和LLC數(shù)據(jù)幀。
2.在協(xié)議分析端捕獲到該幀,幀的長度是多少?由此理解以太網(wǎng)的最短幀長度。
3.為什么1EEE802標準將數(shù)據(jù)鏈路層分割為MAC子層和LLC子層?
4.為什么以太網(wǎng)有最短幀長度的要求?
試驗一以太網(wǎng)幀的構(gòu)成
實驗時間:成績:
實驗角色:同組者姓名:
實驗二地址解析協(xié)議ARP
【實驗目的】
1,掌握ARP協(xié)議的報文格式
2.掌握ARP協(xié)議的工作原理
3.理解ARP高速緩存的作用
4,掌握ARP請求和應答的實現(xiàn)方法
5,掌握ARP緩存表的維護過程
【實驗環(huán)境】
該實驗采用網(wǎng)絡結(jié)構(gòu)二
【實驗原理】
物理地址與邏輯地址
1.物理地址
物理地址是節(jié)點的地址,由它所在的局域網(wǎng)或廣域網(wǎng)定義。物理地址包含在數(shù)據(jù)鏈路層
的幀中。物理地址是最低一級的地址。
物理地址的長度和格式是可變的,取決于具體的網(wǎng)絡。以太網(wǎng)使用寫在網(wǎng)絡接口卡(NIC)
上的6字節(jié)的標識作為物理地址。
物理地址可以是單播地址(一個接收者)、多播地址(一組接收者)或廣播地址(由網(wǎng)
絡中的所有主機接收)。有些網(wǎng)絡不支持多播或廣播地址,當需要把幀發(fā)送給一組主機或所
有主機時,多播地址或廣播地址就需要用單播地址來模擬。
2.邏輯地址
在互聯(lián)網(wǎng)的環(huán)境中僅使用物理地址是不合適的,因為不同網(wǎng)絡可以使用不同的地址格式。
因此,需要一種通用的編址系統(tǒng),用來惟一地標識每一臺主機,而不管底層使用什么樣的物
工電網(wǎng)絡。
邏輯地址就是為此目的而設計的。目前Internet上的邏輯地址是32位地址,通常稱為IP
地址,可以用來標識連接在Internet上的每?臺主機。在Internet上沒有兩個主機具有同樣
的IP地址。
邏輯地址可以是單播地址、多播地址和廣播地址。其中廣播地址有些局限性。在實驗
三中將詳細介紹這三種類型的地址。
—.ARP協(xié)議簡介
Internet是由各種各樣的物理網(wǎng)絡通過使用諸如路由器之類的設備連接在一起組成的。主
機發(fā)送?個數(shù)據(jù)包到另一臺主機時可能要經(jīng)過多種不同的物理網(wǎng)絡。主機和路由器都是在網(wǎng)
絡層通過邏輯地址來識別的,這個地址是在全世界范圍內(nèi)是惟一的。然而,數(shù)據(jù)包是通過物
理網(wǎng)絡傳遞的。在物理網(wǎng)絡中,主機和路由器通過其物理地址來識別的,其范圍限于本地網(wǎng)
絡中。物理地址和邏輯地址是兩種不同的標識符。這就意味著將一個數(shù)據(jù)包傳遞到一個主機
或路由器需要進行兩級尋址:邏輯地址和物理地址。需要能將一個邏輯地址映射到相應的物
理地址。
ARP協(xié)議(地址解析協(xié)議)是“AddressResolutionProtocol”的縮寫。所謂“地址解析”就是
主機在發(fā)送幀前將目的邏輯地址轉(zhuǎn)換成目的物理地址的過程。在使用TCP/IP協(xié)議的以太網(wǎng)
中,ARP協(xié)議完成將IP地址映射到MAC地址的過程。
三.ARP報文格式
下圖為ARP數(shù)據(jù)報的報文格式:
硬件類型(16位)協(xié)議類型(16位)
硬件地址長度協(xié)議地址長度
操作碼(16位)
(8位)(8位)
發(fā)送端硬件地址
(例如,對以太網(wǎng)是6字節(jié))
發(fā)送端邏輯地址
(例如,對IP是4字節(jié))
目的端硬件地址
(例如?對以太網(wǎng)是6字節(jié))
(在請求幀中不埴入)
目的端邏輯地址
(例如,對IP是4字節(jié))
圖2-1ARP報文格式
ARP報文格式具有如下的一些字段:
?硬件類型:這是16位字段,用來定義運行ARP的網(wǎng)絡的類型。每一個局域網(wǎng)基于其
類型被指派給一個整數(shù)。例如,以太網(wǎng)的硬件類型是1。ARP可用在任何網(wǎng)絡上。
?協(xié)議類型:這是16位字段。用來定義協(xié)議的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國可吸收三氯生涂層抗菌縫合線行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國超寬帶雷達傳感器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球阻燃聚乙烯膜行業(yè)調(diào)研及趨勢分析報告
- 飯店房屋租賃合同范文
- 建筑工程掛靠內(nèi)部協(xié)議合同
- 2025佳兆業(yè)集團年度低壓柜設備戰(zhàn)略采購合同
- 虛擬股合伙協(xié)議合同范本
- 2025工程建設招標設標合同條件第1部分
- 直播帶貨商家簽約的合同范本
- 2025房地產(chǎn)委托開發(fā)合同酬金
- 青少年鑄牢中華民族共同體意識路徑研究
- 江蘇省南京市2024年中考英語試題(含解析)
- 學校農(nóng)業(yè)教育體驗項目方案
- 水利工程施工監(jiān)理規(guī)范(SL288-2014)用表填表說明及示例
- 獨家投放充電寶協(xié)議書范文范本
- 財稅實操-反向開票的方式解讀
- TwinCAT CNC實現(xiàn)對G代碼.NC文件的加密與解密
- 《聯(lián)合國教科文:學生人工智能能力框架》-中文版
- 2023年部編人教版六年級道德與法治下冊全冊課件【完整版】
- 2024-2030年中國二手醫(yī)療器械行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 世界近代史-對接選擇性必修 課件-高考統(tǒng)編版歷史一輪復習
評論
0/150
提交評論