計算機(jī)網(wǎng)絡(luò)實驗2012版_第1頁
計算機(jī)網(wǎng)絡(luò)實驗2012版_第2頁
計算機(jī)網(wǎng)絡(luò)實驗2012版_第3頁
計算機(jī)網(wǎng)絡(luò)實驗2012版_第4頁
計算機(jī)網(wǎng)絡(luò)實驗2012版_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

奸真機(jī)網(wǎng)珞實球能導(dǎo)布

計算機(jī)網(wǎng)絡(luò)課程組編寫

專業(yè)______________________

班級______________________

學(xué)號______________________

姓名______________________

指導(dǎo)教師______________________

安徽工業(yè)大學(xué)計算機(jī)學(xué)院

二。一二年九月

目錄

實驗總體說明1

拓?fù)浣Y(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)絡(luò)程序設(shè)計1:聊天工具139

實驗十網(wǎng)絡(luò)程序設(shè)計2:文件傳輸工具143

實驗十一網(wǎng)絡(luò)程序設(shè)計3:郵件收發(fā)器148

實驗十二綜合試驗151

實驗總體說明

1.實驗總體目標(biāo)

配合計算機(jī)網(wǎng)絡(luò)課程的教學(xué),加強(qiáng)學(xué)生對計算機(jī)網(wǎng)絡(luò)知識(TCP/IP協(xié)議)的深刻理

解,培養(yǎng)學(xué)生的實際操作能力.

2.實驗課時分配

序號實驗項目學(xué)時試驗類型

實驗一以太網(wǎng)幀的構(gòu)成2驗證性

實驗二IP協(xié)議2驗證性

實驗三路由信息協(xié)議R1P2驗證性

實驗四開放式最短路徑優(yōu)先協(xié)議OSPF2驗證性

實驗五傳輸控制協(xié)議TCP2驗證性

實驗六郵件協(xié)議SMTP、POP32驗證性

實驗七超文本傳輸協(xié)議HTTP2設(shè)計性

實驗八網(wǎng)絡(luò)程序設(shè)計1:聊天工具2設(shè)計性

實驗九網(wǎng)絡(luò)程序設(shè)計2:文件傳輸工具2設(shè)計性

實驗十網(wǎng)絡(luò)程序設(shè)計3:郵件收發(fā)器2設(shè)計性

實驗十一綜合試驗4綜合性

由于課時限制以及相關(guān)專業(yè)的要求不同,上面所列試驗項目由任課教師根據(jù)課程要求

自由選定。

3.實驗環(huán)境

計算機(jī)網(wǎng)絡(luò)協(xié)議仿真實驗室:

實驗環(huán)境:網(wǎng)絡(luò)協(xié)議仿真教學(xué)系統(tǒng)(通用版)一套

開發(fā)工具:VC++

硬件設(shè)備:服務(wù)器,中心控制設(shè)備,組控設(shè)備,PC機(jī)若干臺

操作系統(tǒng):Windows2003服務(wù)器版

4.實驗總體要求

?按照各項實驗內(nèi)容做實驗,記錄各種數(shù)據(jù)包信息,包括操作、觀察、記錄、分析,

通過操作和觀察獲得直觀印象,從獲得的數(shù)據(jù)中分析網(wǎng)絡(luò)協(xié)議的工作原理;

?每項實驗均提交實驗報告,實驗報告的內(nèi)容可參照實驗的具體要求,但總體上應(yīng)包

括以下內(nèi)容:實驗準(zhǔn)備情況,實驗記錄,實驗結(jié)果分析,算法描述,程序段,實驗

過程中遇到的問題以及對思考問題的解答等,實驗?zāi)康?、實驗原理、實驗步驟不需

要寫入實驗報告中。

拓?fù)浣Y(jié)構(gòu)說明

拓?fù)浣Y(jié)構(gòu)1

組交換模塊

設(shè)

備共享模塊共享模塊共享模塊

主機(jī)A主機(jī)B主機(jī)C主機(jī)D主機(jī)E主機(jī)F

說明:IP地址分配規(guī)則為主機(jī)使用原有1P,保證所有主機(jī)在同一網(wǎng)段內(nèi)。

拓?fù)浣Y(jié)構(gòu)2

說明:

?主機(jī)A、C、D的默認(rèn)網(wǎng)關(guān)是;主機(jī)E、F的默認(rèn)網(wǎng)關(guān)是。

?雙網(wǎng)卡主機(jī),左端物理接口為物理接口1,右端物理接口為物理接口2。

拓?fù)浣Y(jié)構(gòu)3

172.16.0.1/24192.168.0.2/24192.168.0.1/244口172.16.1.1/24

主機(jī)B(路由器)主機(jī)E(路由器)

主機(jī)A主機(jī)C主機(jī)D主機(jī)F

172.16.0.2/24192.168.0.3/24192.168.0.4/24172.16.1.2/24

說明:

?主機(jī)A的默認(rèn)網(wǎng)關(guān)為;主機(jī)C的默認(rèn)網(wǎng)關(guān)為;主機(jī)D的默

認(rèn)網(wǎng)關(guān)為;主機(jī)F的默認(rèn)網(wǎng)關(guān)為;主機(jī)B和主機(jī)E不設(shè)置默認(rèn)網(wǎng)關(guān)。

?雙網(wǎng)卡主機(jī),左端物理接口為物理接口1,右端物理接口為物理接口2。

拓?fù)浣Y(jié)構(gòu)4

主機(jī)BV(路由器)主機(jī)EV(路由器)

1.網(wǎng)絡(luò)結(jié)構(gòu)說明:

?雙網(wǎng)卡主機(jī),左端物理接口為物理接口1,右端物理接口為物理接口2。

?網(wǎng)絡(luò)結(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

?主機(jī)BV、EV做路由器使用。它們分別是主機(jī)B、主機(jī)E虛擬機(jī)下的Linux操作系統(tǒng)。

?主機(jī)A的IPv6地址的默認(rèn)網(wǎng)關(guān)是主機(jī)BV接口1的鏈路本地地址;主機(jī)C的IPv6地

址的默認(rèn)網(wǎng)關(guān)是主機(jī)BV接口2的鏈路本地地址;主機(jī)D的IPv6地址的默認(rèn)網(wǎng)關(guān)是主機(jī)BV

接口2的鏈路本地地址:主機(jī)F的IPv6地址的默認(rèn)網(wǎng)關(guān)是主機(jī)EV接口2的鏈路本地地址。

?該結(jié)構(gòu)適用于實驗一至實驗六。

2.檢測網(wǎng)絡(luò)結(jié)構(gòu)一:連接的正確性:

?按照網(wǎng)絡(luò)結(jié)構(gòu)圖連接網(wǎng)絡(luò),并使用拓?fù)潋炞C檢查連接的正確性。

■在主機(jī)A上,執(zhí)行ping命令(pingfecO:O:O:l::l),若ping不通,則交換主機(jī)BV的兩

個網(wǎng)卡的網(wǎng)線連接。

■在主機(jī)F上,執(zhí)行ping命令(pingfecO:O:O命::1),若ping不通,則交換主機(jī)EV的兩

個網(wǎng)卡的網(wǎng)線連接。

拓?fù)浣Y(jié)構(gòu)5

?主機(jī)A的默認(rèn)網(wǎng)關(guān)為;主機(jī)C的默認(rèn)網(wǎng)關(guān)為;主機(jī)F的默認(rèn)

網(wǎng)關(guān)為;主機(jī)B、D、E不設(shè)置默認(rèn)網(wǎng)關(guān)。

?雙網(wǎng)卡主機(jī),左端物理接口為物理接口1,右端物理接口為物理接口2。

實驗一以太網(wǎng)幀的構(gòu)成

【實驗?zāi)康摹?/p>

1,掌握以太網(wǎng)的報文格式

2.掌握MAC地址的作用

3.掌握MAC廣播地址的作用

4.掌握LLC幀報文格式

5.掌握協(xié)議編輯器和協(xié)議分析器的使用方法

6.掌握協(xié)議棧發(fā)送和接收以太網(wǎng)數(shù)據(jù)幀的過程

【實驗環(huán)境配置】

該實驗采用網(wǎng)絡(luò)結(jié)構(gòu)一。

【實驗原理】

OSI模型和TCP/IP協(xié)議族

1.OSI簡介

國際標(biāo)準(zhǔn)化組織(ISO)成立于1947年,它是個多國團(tuán)體,專門就一些國際標(biāo)準(zhǔn)達(dá)成

世界范圍的一致。網(wǎng)絡(luò)方面的ISO標(biāo)準(zhǔn)就是OSI(開放系統(tǒng)互連)模型。它是在20世紀(jì)70

年代后期問世的。

在不需要改變底層硬件或軟件邏輯的情況下,0SI模型使兩個不同的系統(tǒng)能夠較容易地

通信。0SI模型并不是協(xié)議,它是個靈活的、穩(wěn)健的和可互操作的模型,用來設(shè)計網(wǎng)絡(luò)體系

結(jié)構(gòu),它使得所有類型的計算機(jī)系統(tǒng)可以通信。0SI模型包括7個層次,每一層都定義了通

過網(wǎng)絡(luò)傳送信息的一些過程,如下圖所示。掌握了0SI模型的基本概念后,就有了學(xué)習(xí)數(shù)

據(jù)通信較牢固的基礎(chǔ)。

二.IEEE802參考模型

1980年2月IEEE(電氣和電子工程師協(xié)會)成立了802局域網(wǎng)標(biāo)準(zhǔn)委員會,開始了有關(guān)

局域網(wǎng)標(biāo)準(zhǔn)化的工作。IEEE802局域網(wǎng)參考模型中只定義了物理層和數(shù)據(jù)鏈路層,在模型

中較高層次,IEEE802參照OSI模型,盡可能與其相符合。IEEE標(biāo)準(zhǔn)模型與OSI模型的比

較如下圖所示:

其它上層

網(wǎng)絡(luò)層

邏輯缽路控制

媒體訪問控制

介質(zhì)訪問單元

介質(zhì)說明

IEEE標(biāo)準(zhǔn)0SI模型

圖1-3IEEE標(biāo)準(zhǔn)模型與OSI模型比較

在OSI模型中,物理層的任務(wù)是為上一層提供一個物理連接,以透明的方式傳送比特流。

而在IEEE802局域網(wǎng)參考模型中,物理層被分為上下兩個子層,分別為:

?下面的子層是對電纜介質(zhì)的說明;

?上面的子層是介質(zhì)訪問單元(MAU)。

電纜可以是各種介質(zhì),如雙絞線,同軸電纜等。MAU的主要作用是信息編碼、信號發(fā)送

和介質(zhì)處理等。

在0SI模型中,數(shù)據(jù)鏈路層的任務(wù)是把物理層轉(zhuǎn)化成可靠的鏈路,使物理層對上層(網(wǎng)

絡(luò)層)看起來好像是不產(chǎn)生差錯的。而正EE802標(biāo)準(zhǔn)的數(shù)據(jù)鏈路層被分為兩個子層:

?下面的子層是媒體訪問控制子層(MAC);

?上面的子層是邏輯鏈路控制子層(LLC)。

LLC子層的功能是實現(xiàn)有效的數(shù)據(jù)傳輸,負(fù)責(zé)數(shù)據(jù)鏈路層的流量控制和差錯控制。MAC

子層的功能是保證物理功能和邏輯功能的連續(xù)性,還把從LLC子層收到的數(shù)據(jù)組裝成幀,

并把幀交給物理層進(jìn)行編碼。

三.以太網(wǎng)簡介

IEEE802.3所支持的局域網(wǎng)標(biāo)準(zhǔn)最早是由Xerox開發(fā)的,后來通過Digital公司、Intel公

司和Xerox公司聯(lián)合擴(kuò)展為以太網(wǎng)標(biāo)準(zhǔn),符合以太網(wǎng)標(biāo)準(zhǔn)的局域網(wǎng)絡(luò)稱為以太網(wǎng)。

1.以太網(wǎng)的分類

數(shù)據(jù)速率為10Mbps的以太網(wǎng)稱為標(biāo)準(zhǔn)以太網(wǎng),數(shù)據(jù)速率為100Mbps的以太網(wǎng)稱為快速

以太網(wǎng),數(shù)據(jù)速率為1000Mbps的以太網(wǎng)稱為千兆以太網(wǎng)。目前10G以太網(wǎng)的標(biāo)準(zhǔn)也已正式

制定。

2.以太網(wǎng)的物理地址

以太網(wǎng)上的每一個主機(jī)都有自己的網(wǎng)絡(luò)接口卡(NIC)o網(wǎng)絡(luò)接口卡通常安裝在主機(jī)內(nèi)

部,并為主機(jī)提供一個6字節(jié)的物理地址,如:44-45-53-54-00-00o在遵循IEEE802標(biāo)準(zhǔn)的

以太網(wǎng)絡(luò)中,將這個物理地址稱作“MAC地址。MAC地址是惟一的,任意兩個不同的網(wǎng)絡(luò)

接口卡都具有不同的MAC地址。MAC地址中的某些位具有特殊的意義,如下圖所示:

24bitIEEEadministeredcompanyID—24bitManufacturerselectedextensionID

ccccccugccccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxx1

G/L比特位l/G比特位

圖1-4以太網(wǎng)的物理地址

I/G比特位表示Individual/Group,當(dāng)1/G位為0時,地址字段表示單個站地址(單播),為1

時表示組地址,用來進(jìn)行多播。

G/L比特位表示Global/Local,當(dāng)G/L位為1時是全球管理,保證在全球沒有相同的地

址,當(dāng)為0時是本地管理,這時用戶可任意分配網(wǎng)絡(luò)上的地址。

以太網(wǎng)MAC地址可分為三類:單播地址、廣播地址和多播地址。單播地址(unicast)

是一對一的,該地址是特定主機(jī)的MAC地址;廣播地址(broadcast):廣播地址是一對全

體的,該地址為全1,指明數(shù)據(jù)幀是發(fā)送給所有主機(jī)的。多播地址(multicast):多播地址是

一對多的,指明數(shù)據(jù)幀是發(fā)送給一部分主機(jī)的。

四.以太網(wǎng)訪問模式

當(dāng)多個節(jié)點被連接到條鏈路上時,叫做多點鏈路或廣播鏈路。這時就需要一個協(xié)議來

協(xié)調(diào)鏈路的訪問,使得同一時刻只有一個節(jié)點訪問鏈路。如果發(fā)生同一時刻多個節(jié)點使用鏈

路的情況,則稱為鏈路發(fā)生了沖突。帶有沖突檢測的載波偵聽多路訪問(CSMA/CD)是這

樣一種方案。發(fā)送主機(jī)在傳輸過程中仍繼續(xù)監(jiān)聽信道,以檢測是否存在沖突。如果發(fā)生沖突,

信道上可以檢測到超過發(fā)送主機(jī)本身發(fā)送的載波信號的幅度,由此判斷出沖突的存在。一旦

檢測到?jīng)_突,就立即停止發(fā)送,并向總線上發(fā)一串阻塞信號,用以通知總線上其它各有關(guān)主

機(jī)。這樣,通道容量就不致因白白傳送已受損的幀而浪費(fèi),可以提高總線的利用率。以太網(wǎng)

使用CSMA/CD作為其訪問模式。

五.以太網(wǎng)的幀格式

1.以太網(wǎng)的MAC幀格式

以太網(wǎng)的MAC幀格式有兩種標(biāo)準(zhǔn),一種是DIXEthernetV2標(biāo)準(zhǔn),另一種是IEEE的802.3

標(biāo)準(zhǔn)。但兩種幀格式可以在同一以太網(wǎng)絡(luò)共存。兩種幀格式都具有7個域:前導(dǎo)碼、幀首定

界符、目的MAC地址、源MAC地址、協(xié)議類型或數(shù)據(jù)長度、數(shù)據(jù)、幀校驗序列。如下圖

所示:

協(xié)議類型或

前導(dǎo)碼幀首定界符目的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ù)長度字段的值進(jìn)行區(qū)分。如果此幀是DIXEthernet

V2標(biāo)準(zhǔn)格式幀,則協(xié)議類型或數(shù)據(jù)長度字段的值大于1536;如果此幀是IEEE802.3標(biāo)準(zhǔn)格

式的幀,則協(xié)議類型或數(shù)據(jù)長度字段的值小于1518。對DIXEthernetV2幀來說,此字段的

值代表了高層協(xié)議的類型;對IEEE802.3幀來說,它的高層協(xié)議一定是LLC,此字段的值

代表了數(shù)據(jù)的長度。

在以太網(wǎng)的MAC幀格式中,各個字段的含義如下:

?前導(dǎo)碼:這是以太網(wǎng)MAC幀的第一個域,包含了7個字節(jié)的二進(jìn)制“1”和“0”間隔的

代碼,即“10101010……10”共56位,提示接收方一個數(shù)據(jù)幀即將到來,同時使接收系統(tǒng)建

立起同步時鐘。

?幀首定界符:幀首定界符標(biāo)記了幀的開始。它是一個字節(jié)的“10101011”二進(jìn)制序列,

幀首定界符通知接收方后面所有的內(nèi)容都是數(shù)據(jù),以便接收方對數(shù)據(jù)幀進(jìn)行定位。

?目的MAC地址:目的MAC地址為6個字節(jié),標(biāo)記了數(shù)據(jù)幀下一個主機(jī)的物理地址。

如果數(shù)據(jù)包的目的地址必須從一個網(wǎng)絡(luò)穿越到另一個網(wǎng)絡(luò),那么目的MAC地址所包含的是

連接當(dāng)前網(wǎng)絡(luò)和下一個網(wǎng)絡(luò)的路由器地址。當(dāng)數(shù)據(jù)包到達(dá)目標(biāo)網(wǎng)絡(luò)后,目的MAC地址域換

成目的主機(jī)的地址。

?源MAC地址:源MAC地址也是6個字節(jié)。它包含了最后一個轉(zhuǎn)發(fā)此幀的設(shè)備的物

理地址。該設(shè)備可以是發(fā)送此數(shù)據(jù)幀的主機(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)。校驗

范圍是除了前導(dǎo)碼、幀首定界符和幀校驗序列外的所有內(nèi)容。

2.LLC幀格式

LLC的幀格式如下圖所示:

DSAPSSAP控制UJC數(shù)據(jù)

圖1-6LLC幀格式

其中,DSAP(目的服務(wù)訪問點)和SSAP(源服務(wù)訪問點)是LLC所使用的地址,用來

標(biāo)識接收和發(fā)送數(shù)據(jù)的計算機(jī)上的用戶實體。DSAP的第一個比特是用來指明幀是為單地址

還是組地址,0表示單地址,1表示組地址。SSAP的第一個比特用來指明幀是命令幀還是

響應(yīng)幀。0表示命令幀,1表示響應(yīng)幀。

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表示準(zhǔn)備接收(RR);10表示未準(zhǔn)備接收(RNR):01表示拒

絕(REJ)o

?M:修正功能位。

?X:保留,設(shè)置為0。

?P/F:Poll/final位。命令LLCPDU傳輸/響應(yīng)LLCPDU傳輸。

3.LLCPDU與相鄰層的PDU之間的關(guān)系

IEEE802標(biāo)準(zhǔn)為LLC和MAC子層的幀格式作了詳細(xì)規(guī)定。下圖描述了網(wǎng)絡(luò)層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幀

的幀首中,則設(shè)有DSAP和SSAP,該地址是邏輯地址,表示的是數(shù)據(jù)鏈路層的不同訪問服

務(wù)點。LLC地址與MAC地址是兩個不同的概念,在局域網(wǎng)中,一個主機(jī)上的多個服務(wù)訪問

點可以利用同?條數(shù)據(jù)鏈路。從這一點可以看出,LLC子層帶有OSI網(wǎng)絡(luò)層的某些功能。

六.協(xié)議棧實現(xiàn)代碼解析

本實驗將通過對netproto_eth_student.h和netproto_eth_student.c兩個文件進(jìn)行編碼,完成

協(xié)議棧中以太網(wǎng)數(shù)據(jù)幀接收和發(fā)送的實現(xiàn)。

netproto_eth_stUdent.h文件中定義了以太網(wǎng)數(shù)據(jù)幀中“協(xié)議類型與數(shù)據(jù)長度”字段值以及以

太網(wǎng)數(shù)據(jù)幀的負(fù)載內(nèi)容、負(fù)載長度,關(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)負(fù)載數(shù)據(jù)

PAYLOADJENsizeofffAYLOAD-DATA)定義以太網(wǎng)負(fù)載數(shù)據(jù)長度

定義以太網(wǎng)怖中的“協(xié)議類型或數(shù)據(jù)長度”

TYPE_LENGTM5893

字段的值

在實驗的編碼過程中,應(yīng)該使用這些宏對相應(yīng)的變量進(jìn)行賦值。學(xué)生也可以根據(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ù)的編

碼工作需要由學(xué)生完成。

當(dāng)有數(shù)據(jù)到達(dá)本機(jī)網(wǎng)絡(luò)接口時,函數(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ù)幀應(yīng)該提交給協(xié)議棧上層繼續(xù)處理,而返回

NETP_NO_PUSH_LIWP則表示不需要提交給協(xié)議棧上層處理,本層處理完畢后,這個數(shù)據(jù)

幀將被丟棄。需要根據(jù)正確的邏輯關(guān)系返回適當(dāng)?shù)闹?,使協(xié)議棧正常工作。

在編碼過程中可能會遇到一些結(jié)構(gòu)體、宏和函數(shù),下表是對他們進(jìn)行和介紹:

表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)負(fù)載內(nèi)容

PAYLOAD_LEN#de£ineFAYLOAD_LENsizeof(PAYLOADEDATA)以太網(wǎng)負(fù)載長度

MAX_PAYLOAD_LEN#defineMAX_PAYLOAD_LEN1024最大負(fù)載長度

協(xié)議類型與數(shù)據(jù)長

TYPE.LENGTH#defineTYPE_LENGTH5893

度字段值

voidnetp_set_eth_addr(

structnetp_eth_addr*p_addr,

設(shè)置以太網(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絡(luò)適配器的物理地

);址

Intnetp_packet_send(

netp_packet_sendvoid*buffer/intlen發(fā)送一個數(shù)據(jù)幀

);

將16位數(shù)值由主機(jī)

htonsul6_thtons(ul6_tn):字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)

字節(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ù)幀推薦流程

練習(xí)一:領(lǐng)略真實的MAC幀

各主機(jī)打開協(xié)議分析器,進(jìn)入相應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)并驗證網(wǎng)絡(luò)拓?fù)涞恼_性,如果通過拓?fù)?/p>

驗證,關(guān)閉協(xié)議分析器繼續(xù)進(jìn)行實驗,如果沒有通過拓?fù)潋炞C,請檢查網(wǎng)絡(luò)連接。

本練習(xí)將主機(jī)A和B作為一組,主機(jī)C和D作為一組,主機(jī)E和F作為一組?,F(xiàn)僅以

主機(jī)A、B所在組為例,其它組的操作參考主機(jī)A、B所在組的操作。

1.主機(jī)B啟動協(xié)議分析器,新建捕獲窗口進(jìn)行數(shù)據(jù)捕獲并設(shè)置過濾條件(提取ICMP協(xié)議)。

2.主機(jī)Aping主機(jī)B,察看主機(jī)B協(xié)議分析器捕獲的數(shù)據(jù)包,分析MAC幀格式。

3.將主機(jī)B的過濾器恢復(fù)為默認(rèn)狀態(tài)。

練習(xí)二:理解MAC地址的作用

本練習(xí)將主機(jī)A、B、C、D、E、F作為一組進(jìn)行實驗。

1.主機(jī)B、D、E、F啟動協(xié)議分析器,打開捕獲窗口進(jìn)行數(shù)據(jù)捕獲并設(shè)置過濾條件(源

MAC地址為主機(jī)A的MAC地址)。

2.主機(jī)Aping主機(jī)C。

3.主機(jī)B、D、E、F上停止捕獲數(shù)據(jù),在捕獲的數(shù)據(jù)中查找主機(jī)A所發(fā)送的ICMP數(shù)據(jù)幀,

并分析該幀內(nèi)容。

?記錄實驗結(jié)果

表1-3實驗結(jié)果

本機(jī)MAC地址源MAC地址目的MAC地址是否收到,為什么

主機(jī)B

主機(jī)D

主機(jī)E

主機(jī)F

練習(xí)三:編輯并發(fā)送MAC廣播幀

本練習(xí)將主機(jī)A、B、C、D、E、F作為一組進(jìn)行實驗。

1.主機(jī)E啟動協(xié)議編輯器。

2.主機(jī)E編輯一個MAC幀:

目的MAC地址:FFFFFF-FFFFFF

源MAC地址:主機(jī)E的MAC地址

協(xié)議類型或數(shù)據(jù)長度:大于0x0600

數(shù)據(jù)字段:編輯長度在46—1500字節(jié)之間的數(shù)據(jù)

3.主機(jī)A、B、C、D、F啟動協(xié)議分析器,打開捕獲窗口進(jìn)行數(shù)據(jù)捕獲并設(shè)置過濾條件(源

MAC地址為主機(jī)E的MAC地I:)0

4.主機(jī)E發(fā)送已編輯好的數(shù)據(jù)幀。

5.主機(jī)A、B、C、D、F停止捕獲數(shù)據(jù),察看捕獲到的數(shù)據(jù)中是否含有主機(jī)E所發(fā)送的數(shù)

據(jù)幀。

?結(jié)合練習(xí)三的實驗結(jié)果,簡述FFFFFF-FFFFFF作為目的MAC地址的作用。

練習(xí)四:發(fā)送EthernetV2數(shù)據(jù)幀功能的實現(xiàn)

本練習(xí)將主機(jī)A、B、C、D、E、F作為一組進(jìn)行實驗。

在實驗中,主機(jī)A將新接口的IP地址設(shè)置為1,主機(jī)B使用處于連接狀態(tài)的物

理接口,將新接口的IP設(shè)置為172.置.0.12、主機(jī)C將新接口的IP地址設(shè)置為3、

主機(jī)D使用處于連接狀態(tài)的物理接口,將新接口的IP地址設(shè)置為4,主機(jī)E使用

處于連接狀態(tài)的物理接口,將新接口的IP地址設(shè)置為5,主機(jī)F將新接口的IP地

址設(shè)置為6。所有主機(jī)使用子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān)設(shè)置為。

1.所有主機(jī)編碼實現(xiàn)發(fā)送EhtemetV2數(shù)據(jù)幀

(1)各主機(jī)打開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ù)載的發(fā)

送緩沖區(qū)send_buff,另外還實現(xiàn)了將以太網(wǎng)幀頭結(jié)構(gòu)和負(fù)載拷貝到發(fā)送緩沖區(qū)的過程。

(3)構(gòu)造、填充以太網(wǎng)數(shù)據(jù)幀頭

構(gòu)造并填充一個以太網(wǎng)數(shù)據(jù)幀頭。目的MAC地址設(shè)置為廣播地址即FF-FF-FF-FF-FF-FF,

可以使用netp_set_eth_addr函數(shù)設(shè)置MAC地址。源MAC地址設(shè)置為本接口的MAC地址,

可以使用netp_current_hw_addr函數(shù)獲取本接口的MAC地址。協(xié)議類型或數(shù)據(jù)長度字段值

應(yīng)設(shè)置為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.當(dāng)完成代碼編寫后,所有主機(jī)打開協(xié)議分析器,開始捕獲數(shù)據(jù)。

3.所有主機(jī)調(diào)試并運(yùn)行程序。

4.各主機(jī)停止數(shù)據(jù)捕獲,觀察實驗現(xiàn)象。

?捕獲到的數(shù)據(jù)幀,“協(xié)議類型或數(shù)據(jù)長度''字段值是什么?

5.參考代碼如下:

/**

*'brief編輯并發(fā)送一個EthernetV2數(shù)據(jù)幀

?

*由學(xué)生完成這個函數(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ā)送失?。?");

return;

)

//將以太網(wǎng)幀頭結(jié)構(gòu)和負(fù)載拷貝到發(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");

)

練習(xí)五:處理EthernetV2輸入數(shù)據(jù)幀功能的實現(xiàn)

本練習(xí)將主機(jī)A、B、C、D、E、F作為一組進(jìn)行實驗。

該練習(xí)需要在前個練習(xí)的基礎(chǔ)匕進(jìn)行。

在實驗中,主機(jī)A將新接口的IP地址設(shè)置為k舊LB使用處于連接狀態(tài)的物

理接口,將新接口的IP設(shè)置為2、主機(jī)C將新接口的IP地址設(shè)置為3、

主機(jī)D使用處于連接狀態(tài)的物理接口,將新接口的IP地址設(shè)置為4,主機(jī)E使用

處于連接狀態(tài)的物理接口,將新接口的IP地址設(shè)置為5、主機(jī)F將新接口的IP地

址設(shè)置為6o所有主機(jī)使用子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān)設(shè)置為0.000。

1.所有主機(jī)編碼實現(xiàn)處理EthernetV2輸入數(shù)據(jù)幀功能

(1)各主機(jī)打開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地址的過程。最后的幾行代碼填充了

負(fù)載緩沖區(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ù)包不滿足條件,則應(yīng)該返回

NETP_PUSH_TO_LWIP交給協(xié)議棧處理。

(3)提取“目的MAC地址”字段值為本接口地址或廣播地址的數(shù)據(jù)幀

通過判斷以太網(wǎng)幀中的“目的MAC地址”字段值是否為本接口MAC地址或廣播地址(目

的MAC地址為全1)來過濾不是發(fā)送給本接口的數(shù)據(jù)幀。如果接收到的數(shù)據(jù)包不滿足條件,

則應(yīng)該返回NETP_PUSH_TO_LWIP交給協(xié)議棧處理。

2.所有主機(jī)調(diào)試并運(yùn)行程序

將netproto_eth_student.h文件中PAYLOAD_DATA定義的內(nèi)容修改為自己要發(fā)送的負(fù)載

信息,例如“【amhostA”。

?你收到的負(fù)載內(nèi)容是什么?

3.參考代碼如下:

/**

*\brief當(dāng)有數(shù)據(jù)幀到達(dá)時,將調(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)幀頭、本機(jī)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;

}

//埴充負(fù)載緩沖區(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ù)蕨,負(fù)載內(nèi)容為%s\n",

TYPE_LENGTH,(char*)payload_buff);

returnIIETP_NO_PUSH_UWP;

思考問題

練習(xí)1:

1.為什么有的主機(jī)會收到ICMP數(shù)據(jù)包而有的主機(jī)收不到ICMP數(shù)據(jù)包?

2.根據(jù)實驗理解集線器(共享設(shè)備)和交換機(jī)(交換設(shè)備)的區(qū)別?

3.說明共享設(shè)備的不安全性。

練習(xí)2:

1.主機(jī)A、B、C、D、F是否可以收到主機(jī)E的廣播幀?

2.說明MAC廣播幀的范圍?

練習(xí)3

1.如何編輯LLC無編號幀和LLC數(shù)據(jù)幀。

2.在協(xié)議分析端捕獲到該幀,幀的長度是多少?由此理解以太網(wǎng)的最短幀長度。

3.為什么1EEE802標(biāo)準(zhǔn)將數(shù)據(jù)鏈路層分割為MAC子層和LLC子層?

4.為什么以太網(wǎng)有最短幀長度的要求?

試驗一以太網(wǎng)幀的構(gòu)成

實驗時間:成績:

實驗角色:同組者姓名:

實驗二地址解析協(xié)議ARP

【實驗?zāi)康摹?/p>

1,掌握ARP協(xié)議的報文格式

2.掌握ARP協(xié)議的工作原理

3.理解ARP高速緩存的作用

4,掌握ARP請求和應(yīng)答的實現(xiàn)方法

5,掌握ARP緩存表的維護(hù)過程

【實驗環(huán)境】

該實驗采用網(wǎng)絡(luò)結(jié)構(gòu)二

【實驗原理】

物理地址與邏輯地址

1.物理地址

物理地址是節(jié)點的地址,由它所在的局域網(wǎng)或廣域網(wǎng)定義。物理地址包含在數(shù)據(jù)鏈路層

的幀中。物理地址是最低一級的地址。

物理地址的長度和格式是可變的,取決于具體的網(wǎng)絡(luò)。以太網(wǎng)使用寫在網(wǎng)絡(luò)接口卡(NIC)

上的6字節(jié)的標(biāo)識作為物理地址。

物理地址可以是單播地址(一個接收者)、多播地址(一組接收者)或廣播地址(由網(wǎng)

絡(luò)中的所有主機(jī)接收)。有些網(wǎng)絡(luò)不支持多播或廣播地址,當(dāng)需要把幀發(fā)送給一組主機(jī)或所

有主機(jī)時,多播地址或廣播地址就需要用單播地址來模擬。

2.邏輯地址

在互聯(lián)網(wǎng)的環(huán)境中僅使用物理地址是不合適的,因為不同網(wǎng)絡(luò)可以使用不同的地址格式。

因此,需要一種通用的編址系統(tǒng),用來惟一地標(biāo)識每一臺主機(jī),而不管底層使用什么樣的物

工電網(wǎng)絡(luò)。

邏輯地址就是為此目的而設(shè)計的。目前Internet上的邏輯地址是32位地址,通常稱為IP

地址,可以用來標(biāo)識連接在Internet上的每?臺主機(jī)。在Internet上沒有兩個主機(jī)具有同樣

的IP地址。

邏輯地址可以是單播地址、多播地址和廣播地址。其中廣播地址有些局限性。在實驗

三中將詳細(xì)介紹這三種類型的地址。

—.ARP協(xié)議簡介

Internet是由各種各樣的物理網(wǎng)絡(luò)通過使用諸如路由器之類的設(shè)備連接在一起組成的。主

機(jī)發(fā)送?個數(shù)據(jù)包到另一臺主機(jī)時可能要經(jīng)過多種不同的物理網(wǎng)絡(luò)。主機(jī)和路由器都是在網(wǎng)

絡(luò)層通過邏輯地址來識別的,這個地址是在全世界范圍內(nèi)是惟一的。然而,數(shù)據(jù)包是通過物

理網(wǎng)絡(luò)傳遞的。在物理網(wǎng)絡(luò)中,主機(jī)和路由器通過其物理地址來識別的,其范圍限于本地網(wǎng)

絡(luò)中。物理地址和邏輯地址是兩種不同的標(biāo)識符。這就意味著將一個數(shù)據(jù)包傳遞到一個主機(jī)

或路由器需要進(jìn)行兩級尋址:邏輯地址和物理地址。需要能將一個邏輯地址映射到相應(yīng)的物

理地址。

ARP協(xié)議(地址解析協(xié)議)是“AddressResolutionProtocol”的縮寫。所謂“地址解析”就是

主機(jī)在發(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位字段,用來定義運(yùn)行ARP的網(wǎng)絡(luò)的類型。每一個局域網(wǎng)基于其

類型被指派給一個整數(shù)。例如,以太網(wǎng)的硬件類型是1。ARP可用在任何網(wǎng)絡(luò)上。

?協(xié)議類型:這是16位字段。用來定義協(xié)議的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論