模擬以太網(wǎng)幀封裝--課程設(shè)計(jì)_第1頁(yè)
模擬以太網(wǎng)幀封裝--課程設(shè)計(jì)_第2頁(yè)
模擬以太網(wǎng)幀封裝--課程設(shè)計(jì)_第3頁(yè)
模擬以太網(wǎng)幀封裝--課程設(shè)計(jì)_第4頁(yè)
模擬以太網(wǎng)幀封裝--課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目: 模擬以太網(wǎng)幀封裝專 業(yè):信息工程班 級(jí): 姓 名:學(xué) 號(hào):指導(dǎo)教師: 2021年 12 月20日目 錄1設(shè)計(jì)任務(wù)和目的211 課程設(shè)計(jì)任務(wù)212 課程設(shè)計(jì)目的22設(shè)計(jì)原理221 802.3標(biāo)準(zhǔn)幀結(jié)構(gòu)222 CRC的基本實(shí)現(xiàn)33設(shè)計(jì)實(shí)現(xiàn)431 設(shè)計(jì)思路43.1.1 填充幀頭部字段43.1.2填充數(shù)據(jù)字段43.1.3 計(jì)算填充CRC432 流程圖53.2.1 程序流程圖63.2.2 CRC計(jì)算流程圖74程序源碼85運(yùn)行結(jié)果106總結(jié)體會(huì)111.設(shè)計(jì)任務(wù)和目的1.1課程設(shè)計(jì)任務(wù)根據(jù)給出的原始數(shù)據(jù),組裝一個(gè)IEEE802.3格式的幀。默認(rèn)的輸入文件為二進(jìn)制原始數(shù)據(jù)。封裝得到

2、的幀輸出到二進(jìn)制數(shù)據(jù)文件中。1.2課程設(shè)計(jì)目的(1)使學(xué)生掌握網(wǎng)絡(luò)通信協(xié)議的基本工作原理;(2)培養(yǎng)學(xué)生基本掌握網(wǎng)絡(luò)編程的基本思路和方法;(3)能提高學(xué)生對(duì)所學(xué)計(jì)算機(jī)網(wǎng)絡(luò)理論知識(shí)的理解能力;(4)能提高學(xué)生對(duì)所學(xué)知識(shí)的實(shí)際應(yīng)用能力和創(chuàng)新能力;(5)提高學(xué)生的科技論文寫作能力。 2.設(shè)計(jì)原理 2.1 802.3標(biāo)準(zhǔn)幀結(jié)構(gòu)以太網(wǎng)Ethernet幀格式:前序(P)目的地址(SD)源地址(SA)長(zhǎng)度數(shù)據(jù)FCS8 B6B6B2B461500B4B 1. 前序字段前序字段由7個(gè)字節(jié)的交替出現(xiàn)的1和0組成,設(shè)置該字段的目的是指示幀的開始并便于網(wǎng)絡(luò)中的所有接收器均能與到達(dá)幀同步。2.幀起始定界符字段

3、它可以被看作前序字段的延續(xù)。實(shí)際上,該字段的組成方式繼續(xù)使用前序字段中的格式,這個(gè)一個(gè)字節(jié)的字段的前6個(gè)比特位置由交替出現(xiàn)的1和0構(gòu)成。該字段的最后兩個(gè)比特位置是11,這兩位中斷了同步模式并提醒接收后面跟隨的是幀數(shù)據(jù)。3.目的地址字段目的地址字段確定幀的接收者。6個(gè)字節(jié)的源地址和目的地址字段是局域網(wǎng)中的所有工作站必須使用同樣的地址結(jié)構(gòu)。4.源地址字段源地址字段標(biāo)識(shí)發(fā)送幀的工作站。和目前地址字段類似,源地址字段的長(zhǎng)度六個(gè)字節(jié)。5.長(zhǎng)度字段用于IEEE802.3的兩字節(jié)長(zhǎng)度字段定義了數(shù)據(jù)字段包含的字節(jié)數(shù)。從前序 到FCS字段的幀長(zhǎng)度最小必須是64字節(jié)?;谧钚L(zhǎng)為64字節(jié)和使用六字節(jié)地址字段的要

4、求,意味著每個(gè)數(shù)據(jù)字段的最小長(zhǎng)度為46字節(jié)。如果傳輸數(shù)據(jù)少于46個(gè)字節(jié),應(yīng)將數(shù)據(jù)字段填充至46字節(jié)。不過(guò),填充字符的個(gè)數(shù)不包括在長(zhǎng)度字段值中,數(shù)據(jù)字段的最大長(zhǎng)度為1500字節(jié)。6.數(shù)據(jù)字段數(shù)據(jù)字段的最小長(zhǎng)度必須為46字節(jié)以保證幀長(zhǎng)至少為64字節(jié),這意味著傳輸一字節(jié)信息也必須使用46字節(jié)的數(shù)據(jù)字段:如果填入該該字段的信息少于46字節(jié),該字段的其余部分也必須進(jìn)行填充零。數(shù)據(jù)字段的最大長(zhǎng)度為1500字節(jié)。7. 校驗(yàn)序列字段將計(jì)算出的CRC填入32位的FCS校驗(yàn)字段。幀校驗(yàn)序列字段提供了一種錯(cuò)誤檢測(cè)機(jī)制,包括了地址字段、長(zhǎng)度字段和數(shù)據(jù)字段的循環(huán)冗余校驗(yàn)(CRC)碼。2.2 CRC的基本實(shí)現(xiàn)利用CRC進(jìn)

5、行檢錯(cuò)的過(guò)程可簡(jiǎn)單描述如下:在發(fā)送端根據(jù)要傳送的k位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的r位監(jiān)督碼(CRC碼),附在原始信息的后邊,構(gòu)成一個(gè)新的二進(jìn)制碼序列(共k+r位),然后發(fā)送出去。在接收端,根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進(jìn)行檢驗(yàn),以確定傳送中是否出錯(cuò)。這個(gè)規(guī)則在差錯(cuò)控制理論中稱為“生成多項(xiàng)式”。3.設(shè)計(jì)實(shí)現(xiàn)3.1設(shè)計(jì)思路3.1.1 填充幀頭部字段在這一部分需要向輸出文件寫入前導(dǎo)碼、幀前定界符、目的地址、源地址和長(zhǎng)度字段。寫入前四個(gè)部分相對(duì)簡(jiǎn)單,而寫入長(zhǎng)度字段時(shí)需要計(jì)算輸入文件的長(zhǎng)度。所以計(jì)算輸入文件長(zhǎng)度的方法如下:int length=0;infile.seekg(0,ios

6、:end);/將讀指針移到文件末尾。/計(jì)算指針偏移量,即為輸入文件的長(zhǎng)度length=infile.tellg();/創(chuàng)建字符指針并根據(jù)文件長(zhǎng)度初始化unsigned char* data=new unsigned charlength; infile.seekg(0,ios:beg);/將讀指針移到文件開始。/將文件數(shù)據(jù)讀入到字符指針data中infile.read(data,length); /將data內(nèi)容寫入到輸出文件中file.write(data,length);3.1.2 填充數(shù)據(jù)字段在數(shù)據(jù)字段中,數(shù)據(jù)字段的最小長(zhǎng)度為46B。如果幀的LLC數(shù)據(jù)少于46B,則應(yīng)將數(shù)據(jù)字段填充至46

7、B。填充字符是任意的,不計(jì)入長(zhǎng)度字段值中。在程序中是用一下方法實(shí)現(xiàn)的:/如果輸入文件長(zhǎng)度不足46B,則用補(bǔ)足46Bif(length<46) for(int j=length;j<46;j+) file.put(char(0x00); 3.1.3計(jì)算填充CRC 幀封裝的最后一步就是對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),并將校驗(yàn)結(jié)果記入幀校驗(yàn)字段。本程序中實(shí)現(xiàn)的是CRC-8校驗(yàn)算法,即多項(xiàng)式G(x)=x8+x2+x+1,方法如下所示:file.put(char(0x00);/數(shù)據(jù)后補(bǔ)1B的0,用于crc計(jì)算 file.seekg(8,ios:beg);/將讀指針指向目的地址字段,從此處開始CRC計(jì)算 un

8、signed char ch;/ch用來(lái)保存讀入的字符。 unsigned char crc=char(0x00);/余數(shù)初始值為。unsigned char crc=0;/初始余數(shù)為0 while(total-) unsigned char temp; file.get(temp);/讀1B的數(shù)據(jù)/多項(xiàng)式G(x)=x8+x2+x+1即以下模擬數(shù)據(jù)除以100000111的二進(jìn)制除法過(guò)程for(unsigned char i=(unsigned char)0x80;i>0;i>>=1) if(crc&0x80) crc<<=1; if(temp&i)

9、 crc=0x01;/將輸入數(shù)據(jù)相應(yīng)位的值遞補(bǔ)到余數(shù)末位crc=0x07;/進(jìn)行除法運(yùn)算(即減去除數(shù)的低8位:00000111) else crc<<=1; if(temp&i) crc=0x01;/將輸入數(shù)據(jù)相應(yīng)位的值遞補(bǔ)到余數(shù)末位 3.2程序流程圖3.2.1程序流程圖 3.2.2 CRC計(jì)算流程圖4.程序源代碼(主要代碼)CString str;void CEx3Dlg:OnButton2() CString filter;filter="文本文件(*.txt)|*.txt|c+文件(*.h,*.cpp)|*.h,*.cpp|"CFileDialog

10、 dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);if(dlg.DoModal()=IDOK)str=dlg.GetPathName();/AfxMessageBox(str);MessageBox("文件選擇成功");/int nIndex=m_edit.AddString(str);/m_edit.SetItemDataPtr(nIndex,0);void CEx3Dlg:OnButton1() fstream file;/打開指定輸出文件,讀寫方式為以二進(jìn)制方式可讀可寫,如文件存在則清除其內(nèi)容file.open("D:

11、out.txt",ios:in|ios:out|ios:binary|ios:trunc);for(int i=0;i<7;i+) file.put(char(0xaa);/寫入7B前導(dǎo)碼file.put(char(0xab);/寫入1B幀前界定符long pCrcs=file.tellp();/獲得當(dāng)前文件指定指針位置,計(jì)算CRC時(shí)從這里開始char dst_addr6=char(0xff),char(0xff),char(0xe4),char(0x86),char(0x30), char(0xd0);file.write(dst_addr,sizeof(dst_addr);

12、/寫入6B目的地址char src_addr6=char(0xff),char(0xff),char(0x80),char(0x1a),char(0xe6), char(0x09); file.write(src_addr,sizeof(src_addr);/寫入6B源地址ifstream infile;infile.open(str,ios:binary); infile.seekg(0,ios:end);/將文件讀指針移到末尾short length=(short)infile.tellg();/獲得位置偏移量,即為輸入文件長(zhǎng)度f(wàn)ile.put(char(length/256);/將該長(zhǎng)度

13、寫入數(shù)據(jù)長(zhǎng)度字段(2B)file.put(char(length%256); char* data=new charlength; infile.seekg(0,ios:beg); infile.read(data,length);/從輸入文件中讀出所有數(shù)據(jù)至data中file.write(data,length);/將data中數(shù)據(jù)寫入輸出文件infile.close();delete data;if(length<46) for(int i=0;i<46-length;i+) file.put(char(0x00);/數(shù)據(jù)字段不足46B的部分用0填充long pCrc=file

14、.tellp();/獲得當(dāng)前位置,計(jì)算后的CRC碼將寫到這個(gè)位置file.put(char(0x00);/數(shù)據(jù)后補(bǔ)1B的0,用于crc計(jì)算short total=short(file.tellp()-(short)pCrcs;/需要進(jìn)行計(jì)算的數(shù)據(jù)長(zhǎng)度f(wàn)ile.seekg(pCrcs,ios:beg);/將讀指針指向目的地址字段,從這里開始crc計(jì)算unsigned char crc=0;/初始余數(shù)為0 while(total-) unsigned char temp; file.get(temp);/讀1B的數(shù)據(jù)/多項(xiàng)式G(x)=x8+x2+x+1即以下模擬數(shù)據(jù)除以100000111的二進(jìn)制除

15、法過(guò)程for(unsigned char i=(unsigned char)0x80;i>0;i>>=1) if(crc&0x80) crc<<=1; if(temp&i) crc=0x01;/將輸入數(shù)據(jù)相應(yīng)位的值遞補(bǔ)到余數(shù)末位crc=0x07;/進(jìn)行除法運(yùn)算(即減去除數(shù)的低8位:00000111) else crc<<=1; if(temp&i) crc=0x01;/將輸入數(shù)據(jù)相應(yīng)位的值遞補(bǔ)到余數(shù)末位 file.seekp(pCrc,ios:beg); length=sizeof(crc); switch(length) /若

16、CRC不足4B,將CRC補(bǔ)位至4B case 1: file.put(char(0x00); file.put(char(0x00); file.put(char(0x00); file.put(crc); break; case 2: file.put(char(0x00); file.put(char(0x00); file.put(crc); break; case 3: file.put(char(0x00); file.put(crc); break; MessageBox("幀文件封裝完成,封裝后文件為D:out.txt");file.close(); 5.運(yùn)行

17、結(jié)果(1)輸入數(shù)據(jù)和幀封裝:(2)源文件如下:(3)被封裝后的文件如下:6.總結(jié)與體會(huì)本次課程設(shè)計(jì)重點(diǎn)學(xué)習(xí)了幀封裝。在查閱了很多幀的封裝的知識(shí)后,對(duì)幀及其封裝的方法有了一定程度的了解和掌握。在對(duì)幀的學(xué)習(xí)后,有了很大的收獲,并且使幀的封裝得以實(shí)現(xiàn)。在設(shè)計(jì)中實(shí)現(xiàn)了幀的封裝,主要是將幀的七個(gè)部分-前導(dǎo)碼、幀前定界符、目的地址、源地址、長(zhǎng)度字段、數(shù)據(jù)字段和校驗(yàn)字段,按順序封裝的,最后形成一個(gè)完整的幀結(jié)構(gòu)。同時(shí),在編寫程序的過(guò)程中,用到了很多的函數(shù),這些函數(shù)的運(yùn)用使得程序簡(jiǎn)便而且正確的運(yùn)行出來(lái)。為了正確的實(shí)現(xiàn)這些函數(shù),我查閱了很多相關(guān)的資料,從中獲得了大量的有用的信息,收獲也頗豐富。近一周的課程設(shè)計(jì)中,

18、我的動(dòng)手能力得到了很大的提高,而且將這學(xué)期所學(xué)的網(wǎng)絡(luò)的知識(shí)和以前所學(xué)的編程的知識(shí)充分的聯(lián)系起來(lái),對(duì)這門課的認(rèn)識(shí)又提高了一層。除此之外,在做課程設(shè)計(jì)的時(shí)候也遇到了很多的問(wèn)題,最后在同學(xué)的幫助下正確的解決了。從最開始的遇到問(wèn)題到最后的正確解決問(wèn)題,我懂得了正確出來(lái)問(wèn)題的方法,也知道了自己的不足之處,收獲頗多。 論大學(xué)生寫作能力 寫作能力是對(duì)自己所積累的信息進(jìn)行選擇、提取、加工、改造并將之形成為書面文字的能力。積累是寫作的基礎(chǔ),積累越厚實(shí),寫作就越有基礎(chǔ),文章就能根深葉茂開奇葩。沒(méi)有積累,胸?zé)o點(diǎn)墨,怎么也不會(huì)寫出作文來(lái)的。寫作能力是每個(gè)大學(xué)生必須具備的能力。從目前高校整體情況上看,大學(xué)生的寫作能力較

19、為欠缺。一、大學(xué)生應(yīng)用文寫作能力的定義那么,大學(xué)生的寫作能力究竟是指什么呢?葉圣陶先生曾經(jīng)說(shuō)過(guò),“大學(xué)畢業(yè)生不一定能寫小說(shuō)詩(shī)歌,但是一定要寫工作和生活中實(shí)用的文章,而且非寫得既通順又扎實(shí)不可?!?對(duì)于大學(xué)生的寫作能力應(yīng)包含什么,可能有多種理解,但從葉圣陶先生的談話中,我認(rèn)為:大學(xué)生寫作能力應(yīng)包括應(yīng)用寫作能力和文學(xué)寫作能力,而前者是必須的,后者是“不一定”要具備,能具備則更好。眾所周知,對(duì)于大學(xué)生來(lái)說(shuō),是要寫畢業(yè)論文的,我認(rèn)為寫作論文的能力可以包含在應(yīng)用寫作能力之中。大學(xué)生寫作能力的體現(xiàn),也往往是在撰寫畢業(yè)論文中集中體現(xiàn)出來(lái)的。本科畢業(yè)論文無(wú)論是對(duì)于學(xué)生個(gè)人還是對(duì)于院系和學(xué)校來(lái)說(shuō),都是十分重要的

20、。如何提高本科畢業(yè)論文的質(zhì)量和水平,就成為教育行政部門和高校都很重視的一個(gè)重要課題。如何提高大學(xué)生的寫作能力的問(wèn)題必須得到社會(huì)的廣泛關(guān)注,并且提出對(duì)策去實(shí)施解決。二、造成大學(xué)生應(yīng)用文寫作困境的原因: (一)大學(xué)寫作課開設(shè)結(jié)構(gòu)不合理。 就目前中國(guó)多數(shù)高校的學(xué)科設(shè)置來(lái)看,除了中文專業(yè)會(huì)系統(tǒng)開設(shè)寫作的系列課程外,其他專業(yè)的學(xué)生都只開設(shè)了普及性的大學(xué)語(yǔ)文課。學(xué)生寫作能力的提高是一項(xiàng)艱巨復(fù)雜的任務(wù),而我們的課程設(shè)置僅把這一任務(wù)交給了大學(xué)語(yǔ)文教師,可大學(xué)語(yǔ)文教師既要在有限課時(shí)時(shí)間內(nèi)普及相關(guān)經(jīng)典名著知識(shí),又要適度提高學(xué)生的鑒賞能力,且要教會(huì)學(xué)生寫作規(guī)律并提高寫作能力,任務(wù)之重實(shí)難完成。 (二)對(duì)實(shí)用寫作的普

21、遍性不重視。 “大學(xué)語(yǔ)文”教育已經(jīng)被嚴(yán)重地“邊緣化”。目前對(duì)中國(guó)語(yǔ)文的態(tài)度淡漠,而是呈現(xiàn)出全民學(xué)英語(yǔ)的大好勢(shì)頭。中小學(xué)如此,大學(xué)更是如此。對(duì)我們的母語(yǔ)中國(guó)語(yǔ)文,在大學(xué)反而被漠視,沒(méi)有相關(guān)的課程的設(shè)置,沒(méi)有系統(tǒng)的學(xué)習(xí)實(shí)踐訓(xùn)練。這其實(shí)是國(guó)人的一種偏見。應(yīng)用寫作有它自身的規(guī)律和方法。一個(gè)人學(xué)問(wèn)很大,會(huì)寫小說(shuō)、詩(shī)歌、戲劇等,但如果不曉得應(yīng)用文寫作的特點(diǎn)和方法,他就寫不好應(yīng)用文。 (三)部分大學(xué)生學(xué)習(xí)態(tài)度不端正。 很多非中文專業(yè)的大學(xué)生對(duì)寫作的學(xué)習(xí)和訓(xùn)練都只是集中在大學(xué)語(yǔ)文這一門課上,大部分學(xué)生只愿意被動(dòng)地接受大學(xué)語(yǔ)文老師所講授的文學(xué)經(jīng)典故事,而對(duì)于需要學(xué)生動(dòng)手動(dòng)腦去寫的作文,卻是盡可能應(yīng)付差事,這樣勢(shì)

22、必不能讓大學(xué)生的寫作水平有所提高。 (四)教師的實(shí)踐性教學(xué)不強(qiáng)。 學(xué)生寫作能力的提高是一項(xiàng)艱巨復(fù)雜的任務(wù),但在教學(xué)中有不少教師過(guò)多注重理論知識(shí),實(shí)踐性教學(xué)環(huán)節(jié)卻往往被忽視。理論講了一大堆,但是實(shí)踐卻幾乎沒(méi)有,訓(xùn)練也少得可憐。閱讀與寫作都需要很強(qiáng)的實(shí)踐操作,學(xué)習(xí)理論固然必不可少,但是閱讀方法和寫作技巧的掌握才是最重要的。 由于以上的原因,我們的大學(xué)生的寫作水平著實(shí)令人堪憂,那么如何走出這一困境,筆者提出一些建議,希望能對(duì)大學(xué)生寫作水平的提高有所幫助。 三、提高大學(xué)生應(yīng)用寫作能力的對(duì)策 (一)把應(yīng)用寫作課設(shè)置為大學(xué)生的必修課。 在中國(guó)的每一所大學(xué),應(yīng)用寫作應(yīng)該成為大學(xué)生的必修課。因?yàn)樵谶@個(gè)被某些人形容為實(shí)用主義、功利主義甚囂塵上的時(shí)代,也是個(gè)人生存競(jìng)爭(zhēng)最激烈的時(shí)代,人們比任何時(shí)代都更需要學(xué)會(huì)寫作實(shí)用性的文章,比如職場(chǎng)競(jìng)爭(zhēng)中的求職信,生活中的財(cái)經(jīng)文書、法律文書等,以提高個(gè)人的生存競(jìng)爭(zhēng)能力。 (二)端正大學(xué)生的學(xué)習(xí)態(tài)度。 首先,要讓大學(xué)生充分認(rèn)識(shí)到實(shí)用寫作課的重要性,這門課關(guān)乎到他人生的每一個(gè)方面,諸如就職,求愛,理財(cái),人際交往等,是他終生都需要使用的一些基礎(chǔ)性的知識(shí),也是他必備的一項(xiàng)生存技能。其次,實(shí)用寫作有它自身的規(guī)律和方法。它不是你想怎樣寫都行的,它有嚴(yán)格的格式性的要求,所以需要系

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論