ieee802 3以太网帧的封装

ieee802 3以太网帧的封装

ID:12964866

大小:33.79 KB

页数:11页

时间:2018-07-19

ieee802 3以太网帧的封装_第1页
ieee802 3以太网帧的封装_第2页
ieee802 3以太网帧的封装_第3页
ieee802 3以太网帧的封装_第4页
ieee802 3以太网帧的封装_第5页
资源描述:

《ieee802 3以太网帧的封装》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、IEEE8023以太网帧的封装一、需求分析通过程序完成以太网帧的封装,首先,要有友好的界面提示用户输入帧的相关信息,包括前导码、帧前定界符、目的MAC地址、源MAC地址、长度字段、数据以及校验字段,它们的长度和顺序见下面:前导码帧前定界符(SFD)目的地址(DA)源地址(SA)长度字段(L)数据字段(LLCPDU)校验字段(FCS)7B1B(2/6B)(2/6B)(2B)(长度可变)(4B)其次,用户以十六进制形式输入帧的每个部分,要严格控制每个字段的长度,界面清晰明了。最后,程序求出数据字段的长度,并通过CRC算法求出校验字段,把帧的每个部分按照

2、规定的字节数封装起来,然后显示在界面上。二、概要设计程序输入的是十六进制的数据,所以首先要把界面提取的帧的信息转换成二进制,即把每一位十六进制数转换成四位二进制码,基本操作就是把每一位进行四次模2运算,得到它的四位二进制。然后对数据部分的处理,如果用户输入的数据不够46个字节,那么程序要在后面补0,补够46个字节。得到数据部分的长度,转换成两个字节的二进制,程序最关键的就是通过CRC算法求帧的校验字段,然后把它补够4个字节,加在帧的末尾。三、详细设计程序的CRC算法的实现:CStringCMyDlg:Fcs(CStringa,CStringb){f

3、or(inti=0;ib.GetLength()-1;i++)a+="0";intm[10000],n[10000];intma=a.GetLength();intmb=b.GetLength();for(i=0;ima;i++){if(a.GetAt(i)=='0')m[i]=0;elseif(a.GetAt(i)=='1')m[i]=1;}for(i=0;imb;i++){if(b.GetAt(i)=='0')n[i]=0;elseif(b.GetAt(i)=='1')n[i]=1;}intd[10000];for(i=0;ima-mb+1;i

4、++){d[i]=m[i];for(intj=1;jmb;j++){if(m[i]==0){m[j+i]=!m[j+i]&0

5、m[j+i]&1;}elsem[j+i]=!m[j+i]&n[j]

6、m[j+i]&!n[j];}}CStringabc="";for(i=ma-mb+1;ima;i++){if(m[i]==0)abc+="0";elseif(m[i]==1)abc+="1";}intdc=abc.GetLength();if(abc.GetLength()8){for(i=0;i8-dc;i++){abc=abc+"0";}}CString

7、ba="";for(i=0;iabc.GetLength();i++){if(abc.GetAt(i)=='0')ba+="0";elseba+="1";if((i+1)%8==0)ba+="";}returnba;}十六进制串转换为二进制串的代码:CStringCMyDlg:change(CStringpt){CStringpp="";for(inti=0;ipt.GetLength();i++){inta=pt.GetAt(i);if(a='0'&&a='9'

8、

9、a='a'&&a='f'

10、

11、a='A'&&a='F'){if(a='0'&&a='

12、9')a=a-48;if(a='a'&&a='f')a=a-87;if(a='A'&&a='F')a=a-55;intb[4];for(intj=0;j4;j++){b[j]=a%2;a=a/2;}for(j=3;j=0;j--){if(b[j]==0)pp+="0";elsepp+="1";}}}returnpp;}响应button按钮然后进行帧封装的函数:voidCMyDlg:Oncreate(){//TODO:AddyourcontrolnotificationhandlercodehereCStringqian="aaaaaaaaaaaaa

13、a";//前导码7个字节CStringding="ab";//帧前定界符1个字节pt="";if(CheckEditBox()){pt+=m_m1+m_m2+m_m3+m_m4+m_m5+m_m6+m_y1+m_y2+m_y3+m_y4+m_y5+m_y6;//目的MAC地址源MAC地址CStringlength="";longlgh=m_data.GetLength()/2;if(lgh1500){MessageBox("数据字段不能超过1500个字符!");m_Data.SetFocus();}else{longlh=lgh;for(inti=

14、0;i16;i++)//把数据长度转换为两个字节(16个二进制位){if(lh%2==0){length="0"+leng

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。