精华内容
下载资源
问答
  • 帧校验序列

    2011-12-07 22:51:09
    帧校验序列详细说明,FCS,网络常校验方式。
  • HDLC/SDLC数据通信链路规程是目前广泛采用的串行通信规程,但当前大多数文献资料就HDLC/SDLC规程帧校验序列的生成都未给出准确的定义,因而常常给用户造成一些概念上的模糊或误解。本文依据HDLC规程的原始定义给出...
  • C#学习之帧校验序列码FCS

    千次阅读 2017-04-24 09:38:18
    在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。  帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性...

      在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。


       帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性设置的。将每一帧中的第一个字符@到该帧中正文的最后一个ASCII 字符作“异或”运算(这里可能这样说更容易理解:从每一帧的第二位开始(第一位就是原始值),将后一位与前一位的异或值进行异或运算,得到的异或值就是异或结果), 并将异或的结果转换为两个ASCII码, 便得到了FCS , 它作为帧的一部分发送到接收端。接收端计算出收到的帧的FCS , 如果与发送端传送过来的FCS 不同, 可以判定通信有误。

       由于近段一直在做上位机与PLC有关的通信,了解了一种FCS算法,在此提供代码供大家交流学习:

       public static string tobcc(string s)  //帧校验函数FCS

            {

                //获取s对应的字节数组
                byte[] b = Encoding.ASCII.GetBytes(s);
                // xorResult 存放校验结果。注意:初值去首元素值!
                byte xorResult = b[0];
                // 求xor校验和。注意:XOR运算从第二元素开始
                for (int i = 1; i < b.Length; i++)
                {
                    //**进行异或运算,^=就是异或运算符,具体可查阅异或运算
                    //**异或运算:两个二进制数的每一位进行比较,如果相同则为0,不同则为1,如下面2个10进制数37、     48的二进制值异或结果为21
                    //**  37(10)       100101(2)
                    //**  48(10)       110000(2)
                    //**  21(10)       010101(2)
                    //**这里的意思是:如a^=b,就是a与b先进行异或比较,得出的结果赋值给a;
                    xorResult ^= b[i];             
                }
                //**Convert.ToString(xorResult, 16):将当前值转换为16进制;ToUpper():结果大写;
                //**这里的意思是:将xorResult转换成16进制并大写;

               //**(//**返回的结果为一个两个ASCII码的异或值
                return Convert.ToString(xorResult, 16).ToUpper();

             }   

          (注:1、本案例是C#与松下PLC通信,采用TCP/IP通信方式;

              2、松下通信协议可查看MEWTOCOL)

    展开全文
  • 帧校验序列码FCS

    2010-09-10 22:32:00
    在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。 帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性...

       在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。

       帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性设置的。将每一帧中的第一个字符@到该帧中正文的最后一个ASCII 字符作“异或”运算, 并将异或的结果转换为两个ASCII码, 便得到了FCS , 它作为帧的一部分发送到接收端。接收端计算出收到的帧的FCS , 如果与发送端传送过来的FCS 不同, 可以判定通信有误。

       由于近段一直在做上位机与PLC有关的通信,了解了一些版本语言的FCS算法,在此提供一些代码供大家交流学习。

    首先是VB写的FCS校验:

    Function fcs(ByVal inputstr As String) As String
    Dim slen, i, xorresult As Integer
    Dim tempfes As String
    slen = Len(inputstr) '求输入字符串长度
    xorresult = 0
    For i = 1 To slen
    xorresult = xorresult Xor Asc(Mid$(inputstr, i, 1))     '按位异或
    Next i
    tempfes = Hex$(xorresult) '转化为16进制
    If Len(tempfes) = 1 Then tempfes = "0" + tempfes
    fcs = tempfes
    End Function   
    

     

    由于我们的项目是c#写的,把VB版本的修改成c#了,代码如下:

            static string fcs(string data)
            {
                int xorresult = 0;
                string tempfes = "";
                for (int i = 0; i < data.Length; i++)
                {
                    xorresult = xorresult ^ Convert.ToInt32(data[i]);
                }
                tempfes = Convert.ToString(xorresult, 16);
                if (tempfes.Length == 1)
                {
                    tempfes = "0" + tempfes;
                }
                return tempfes;
            }
    

     

     

    转载于:https://www.cnblogs.com/lovetsfuer/archive/2010/09/10/1823661.html

    展开全文
  • 本研究对FCS的几种主要实现方式及其检错性能进行了数学分析及研究。并对数据比特长度与检验比特长度的关系进行了讨论。
  • 全称:Frame Check Sequence,中文名:检验序列 这个东西是用来检验我们的数据是否在传输的过程中被破坏(不一定是收到攻击,也可能是一些物理干扰),以更好的安排重发。 而其中最常用的,也是检错能力很强的,...

    我们知道在以太网帧的末尾有一个叫FCS的东西。
    全称:Frame Check Sequence,中文名:帧检验序列
    这个东西是用来检验我们的数据是否在传输的过程中被破坏(不一定是收到攻击,也可能是一些物理干扰),以更好的安排重发。
    而其中最常用的,也是检错能力很强的,就是CRC,循环冗余校验码。

    操作流程

    一个小背景知识

    模二除法,或者说在数域{1,0}上的除法。
    与普通除法类似,它也可以列竖式计算,但是唯一不同的,是相减的那一步。
    我们这里的除法,在相减时,遵循一下规则:

    1. 1-1=0
    2. 1-0=1
    3. 0-1=1
    4. 0-0=0
    5. 不进位,也不借位

    举个例子。
    模2除法
    我相信应该很清楚了。(手画的,不容易)

    生成

    首先,我们需要一个除数,这个除数可以按照某个行业标准来,比如:

    IBM的SDLC(同步数据链路控制)规程中使用的CRC-16为:11000000000000101,在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16为:11000000000100001。

    当然这里做个实验,我们也可以随机生成,但是有一点要求,最高位和最低为必须为1,这一点需要注意。

    接下来,我们把数据左移(k-1)位,补零,这就是我们的被除数。
    然后用这个被除数和除数做模二除法得到余数。
    这个余数(k-1位,不足的话,左侧补零),就是加在数据末尾的FCS。
    然后我们把它加在数据末尾即可。

    校验

    那么我们如何校验呢?
    直接把我们得到的串(包含FCS),对除数再做一次模二除法,如果余数是零,则说明数据完好。如果不为0,则说明数据遭到破坏,需要安排重发。

    代码实现

    相信看了上面的内容,应该很容易实现代码,下面给出我写的代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<ctime>
    using namespace std;
    struct bin{//二进制数据 
    	int num[100000];
    	int len;
    	void init(){//初始化为0 
    		len=1;
    		memset(num,0,sizeof(num));
    	}
    	void read(){//读入数字 
    		char c[100000];
    		scanf("%s",c);
    		len=strlen(c);
    		for(int i=0;i<len;i++){
    			num[i]=c[len-i-1]-'0';
    		}
    	}
    	void clean(){//清除前导0 
    		for(int i=99999;i>=0;i--){
    			if(num[i]==1){
    				len=i+1;
    				return;
    			}
    		}
    		len=1;
    	}
    	void gen(int k){//随机生成 
    		len=k;
    		num[len-1]=num[0]=1;
    		for(int i=1;i<len-1;i++){
    			num[i]=rand()%2;
    		}
    	}
    	bin operator =(bin b){//赋值符号 
    		len=b.len;
    		for(int i=0;i<len;i++){
    			num[i]=b.num[i];
    		}
    		return *this;
    	}
    	bin operator +(bin b){//加法 
    		bin c;
    		c.init();
    		c.len=max(b.len,len);
    		for(int i=0;i<c.len;i++){
    			c.num[i]=num[i]+b.num[i];
    		}
    		return c;
    	}
    	bin operator <<=(int b){//左移 
    		for(int i=len-1;i>=0;i--){
    			num[i+b]=num[i];
    			num[i]=0;
    		}
    		len+=b;
    		return *this;
    	}
    	bin operator /(bin b){//除法取余数(返回值为余数) 
    		bin c;
    		c.init();
    		c=*this;
    		for(int i=c.len-1;i>=0&&i>=(b.len-1);i--){
    			if(!c.num[i]){
    				continue;
    			}
    			for(int j=i;j>i-b.len;j--){
    				c.num[j]-=b.num[j-i+b.len-1];
    				if(c.num[j]<0){
    					c.num[j]=1;
    				}
    			}
    		}
    		c.clean();
    		return c;
    	}
    	int operator ==(bin b){//等于号 
    		if(b.len!=len){
    			return 0;
    		}
    		for(int i=0;i<len;i++){
    			if(num[i]!=b.num[i]){
    				return 0;
    			}
    		}
    		return 1;
    	}
    	void print(){//打印 
    		for(int i=len-1;i>=0;i--){
    			printf("%d",num[i]);
    		}
    		printf("\n");
    	}
    };
    int main(){
    	//设定k值 
    	int k=5;
    	srand(time(0));
    	//定义各种量 
    	bin text,key,div,txt,zero;
    	//初始化 
    	div.init();
    	key.init();
    	txt.init();
    	zero.init();
    	text.init();
    	//生成 
    	text.read();//读入数据 
    	key.gen(5);//生成除数 
    	txt=text; 
    	txt<<=(k-1);//数据左移 
    	div=txt/key;//取余数 (FCS) 
    	txt=txt+div;// 合成 
    	//模拟破坏  
    //	txt.num[txt.len/2]^=1;
    	//校验
    	txt=txt/key;
    	if(txt==zero){
    		printf("The data are OK!");
    	} else{
    		printf("The data are fault!");
    	}
    	return 0;
    } 
    

    还可以完善的,我就不进一步完善了。

    一些数学原理

    之前有说数学背景,但是那只是为了能理解其过程,但并不能让我们明白为什么是这样。
    所以这里扩展了一块内容,根据兴趣阅读一下吧!

    生成多项式

    不知道怎么说,就举例说明吧。

    在这里插入图片描述
    其对应的除数分别为:

    1. 11000000000000101
    2. 10001000000100001
    3. 100000100110000010001110110110111

    我相信你应该明白了。

    为什么余数为0

    我们刚刚介绍了模二除法。
    这里我们再说一个模二加法。

    1. 1+1=0
    2. 1+0=1
    3. 0+0=0
    4. 不进位

    为什么是这样定义?
    因为模二。
    所以你只要让结果对2取模,你就知道为什么会这样了。
    我们设原数据左移后为t,除数为a,商为s,余数为r。
    所以有:t=as+r
    而我们传递的是t+r
    即t+r=a
    s+r+r
    有什么问题?
    我们看一下r+r
    注意这里是模二加法,不进位,且1+1=0+0=0,
    而r和r是一样的,所以模二相加后,就是0!
    所以式子变为:t+r=a*s
    这样的话(t+r)模二除以a,自然余数为0。
    这就是为什么我们可以这么做。

    校验成功一定没错吗?

    不一定!
    有可能会出现某几位错了,但是判断结果是对的。
    那么概率是多少呢?
    假设FCS为32位(4字节)
    数据我们取为8000位(1000字节,此处数据大小取了一个中值,以太网帧中的数据通常为46~1500字节)(当然了,其实从后面的结果可以知道此处并无影响)
    8000位数据,最大为8000个1,最小为1(7999个0)。
    进行二进制除法,商最大为7969位,总共有27969个可能的商。
    总共可能破坏的结果为28000.
    所以误判的概率为P=(27969-1)/28000
    也就约为1/231,即1/2,147,483,648
    这概率是多大呢?
    差不多是生一个六胞胎的概率吧。
    想一想,你身边有几个六胞胎?你听过几个六胞胎?
    因此,其检错能力是很强的。重点是算法也很简单,方便实际应用。

    结束语

    这就是今天对CRC的探究,喜欢的话点一个赞呗!
    有什么问题也欢迎与我讨论!

    展开全文
  • 一、以太网 所有的以太网(802.3)都基于一个共同的格式。在原有规范的基础上,格式已被改进以支持额外功能 以太网格式 下图显示了当前的以太网格式,以及它与IEEE提出的一个相对新的术语IEEE分组(一个...

    一、以太网帧

    • 所有的以太网(802.3)帧都基于一个共同的格式。在原有规范的基础上,帧格式已被改进以支持额外功能

    以太网帧格式

    • 下图显示了当前的以太网帧格式,以及它与IEEE提出的一个相对新的术语IEEE分组(一个在其他标准中经常使用的术语)的关系

    • 以太网帧开始是一个前导字段,接收器电路用它确定一个帧的到达时间,并确定编码位 (称为时钟恢复)之间的时间量。由于以太网是一个异步的局域网(即每个以太网接口卡中不 保持精确的时钟同步),从一个接口到另一个接口的编码位之间的间隔可能不同。前导是一 个公认的模式(典型值为0xAA),在发现帧起始分隔符(SFD)时,接收器使用它“恢复时钟”
    • SFD的固定值为0xAB
    • 这个基本的帧格式包括48位(6字节)的目的地址(DST)和源地址(SRC)字段。这些地址有时也采用其他名称,例如“MAC地址”、 “链路层地址”、 “802地址”、 “硬件地址” 或“物理地址”。以太网帧的目的地址也允许寻址到多个站点(称为“广播”或“组播”)。广播功能用于ARP协议,组播功能用于ICMPv6协议,以 实现网络层地址和链路层地址之间的转换
    • 源地址后面紧跟着一个类型字段,或一个长度字段。在多数情况下,它用于确定头 部后面的数据类型。TCP/IP网络使用的常见值包括IPv4 (0x0800)、 IPv6 (0x86DD)和 ARP (0x0806)。0x8100表示一个Q标签帧(可携带一个“虚拟局域网”或802.1q标准 回 VLAN ID)。一个以太网帧的基本大小是1518字节,但最近的标准将该值扩大到2000字节
      • 注意:最初的IEEE (802.3)规范将长度/类型字段作为长度字段而不是类型字段使用。困此,这个字段被重载(可用于多个目的)。关键是看字段值。目前,如果字段值大于或等于1536,则该字段表示类型,它是由标准分配的超过1536的值。如果字 段值等于或小于1500,则该字段表示长度。 [ETHERTYPES]给出了类型的完整列表
    • 在上述字段之后,[802.3-2008]提供了多种标签包含由其他IEEE标准定义的备种协议字段。其中,最常见的是那些由802.1p和802.1q使用的标签,它提供虚拟局域网和一些服务质量(Qos)指示符
      • 注意:当前的[802.3-2008]标准采用修改后的802.3帧格式,提供最大为482字节 的“标签”,它携带在每个以太网帧中。这些较大的帧称为信封帧,长度最大可能达到2000字节。包含802.1p/q标签的帧称为Q标签帧,也是信封帧。但是,并非 所有信封帧必然是Q标签帧
    • 在这些讨论过的字段之后,是帧的数据区或有效载荷部分。这里是放高层PDU(例如IP数据报)的地方。传统上,以太网的有效载荷一直是1500字节,它代表以太网的MTU。目 前,大多数系统为以太网使用1500字节的MTU,虽然在必要时它也可设置为一个较小的值。有效载荷有时被填充(添加)数个0,以确保帧总体长度符合最小长度要求

    二、帧校验序列/循环冗余校验

    • 在以太网帧格式中,有效载荷区域之后的最后字段提供了对帧完整性的检查。循环冗余校验(CRC)字段位于尾部,有32位,有时称之为IEEE/ANSI标准的CRC32 [802.3- 2008]。要使用一个″位CRC检测数据传输 错误,被检查的消息首先需要追加″位0形成一个扩展消息。然后,扩展消息(使用 模2除洼)除以一个(乃十1)位的值,这个 作为除数的值称为生成多项式。放置在消息 的CRC字段中的值是这次除法计算中余数 的二进制反码(商被丢弃)。生成多项式已 被标准化为一系列不同的″值。以太网使用 ″=32,CRC32的生成多项式是33位的二 进制数100000100110000010001Ⅱ0110110111。 为了理解如何使用(mod 2 )二进制除法计算 余数,我们看一个CRC4的简单例子。国际 电信联盟(ITU)将CRC4的生成多项式值 标准化为10011,这是在G.704 [G704]标 准中规定的。如果我们要发送16位的消息 1001111000101111,首先开始进行下图所示的(mod2)二进制除法
    • 在该图中,我们看到这个除法的余数 是4位的值ⅡⅡ。通常,该余数的反码 (0000)将放置在帧的CRC或帧校验序列 (FCS)字段中。在接收到数据之后,接收方 执行相同的除法计算出余数,并判断该值与FCS字段的值是否匹配。如果两者不匹配,帧可能在传输过程中受损,通常被丢弃。CRC功 能可用于提示信息受损,因为位模式的任何改变极可能导致余数的改变

    三、帧大小

    • 以太网帧有最小和最大尺寸

    最小尺寸

    • 最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节
    • 当有效载荷较小时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度

    最大尺寸

    • 传统以太网的最大帧长度是1518字节(包括4字节CRC和14字节头部)。选择这个值 出于一种折中:如果一个帧中包括一个错误(接收到不正确的CRC校验),只需重发1.5kB 以修复该问题
    • 另一方面,MTU大小限制为1500字节。为了发送一个更大的消息,则需要多个帧(例如,对于TCP/IP网络常用的较大尺寸64KB,需要至少44个帧)
    • 由多个以太网帧构成一个更大的上层PDU的后果是,每个帧都贡献了一个固定开销(14字节的头部和4字节的CRC)。更糟的是,为了允许以太网硬件接收电路正确恢复来 自网络的数据,并为其他站提供将自已的流量与已有流量区分开的机会,以太网帧在网络中 不能无缝地压缩在一起。Ethernet Ⅱ规范除了在帧开始处定义了7字节前导和1字节SFD之 外,还指定了12字节的包间距(IPG)时间( 10Mb/s为9.6us,100Mb/s为960ns,1000Mb/s为 96ns,10000Mb/s为9.6ns)。因此, Ethernet Ⅱ的每帧效率最多为1500/(12 + 8+14+ 1500+4)= 0.975293,约98%。一种提高效率的方式是,在以太网中传输大量数据时,尽量使帧尺寸更大 一些。这可采用以太网巨型帧吓]来实现,它是一种非标准的以太网扩展(主要在1000Mb/s以 太网交换机中使用),通常允许帧尺寸高达9000字节。有些环境使用的帧称为超级巨型帧,它 们通常超过9000字节。在使用巨型帧时要谨慎,这些较大的帧无法与较小的1518字节的帧 互操作,因为它们无法由大多数传统以太网设备处理

    四、MTU和MTU路径

    • 我们从最上面的帧格式图可以看到,在很多链路层网络(例如以太网)中,携带高层协议PDU的帧大小是有限制的。以太网有效载荷的字节数通常被限制为1500,PPP通常采用相同大小以保持与以太网兼容。链路层的这种特征被称为最大传输单元(MTU)
    • 大多数的分组网络(例如以太网)都有固定的上限。大多数的流类型网络(串行链路)提供可设置的上限,它可被帧协议(例如PPP)所使用。如果IP需要发送一个数据报,并且这个数据报比链路层MTU大,则IP通过分片将数据报分解成较小的部分,使每个分片都小于MTU(我们会在后面Internet协议文章和UDP文章中讨论IP分片)
    • 路径MTU:
      • 当同一网络中的两台主机之间通信时,本地链路的MTU在会话期间对数据报大小有直接影响。当两台主机之间跨越多个网络通信时,每条链路可能有不同大小的MTU
      • 在包含所有链路的整个网络路径上,最小的MTU称为路径MTU
    • 任何两台主机之间的路径MTU不会永远不变,这取决于当时使用的路径。如果网络中的路由器或链路故障,MTU可能改变。另外,路径通常不对称(主机A到B路径可能不是 B到A的反向路径),路径MTU不需要在两个方向上相同
    • [RFCl191]规定了IPv4路径MTU发现(PMTUD)机制,[RFC1981]描述了用于IPv6 的相应机制。 [RFC4821]描述了一个补充方案,以解决这些机制中的一些间题。PMTUD用于确定某个时间的路径MTU,它在IPv6实现中是需要的。在后面的文章中,针对前面描述的ICMP和IP分片,我们将观察这个机制如何运行。我们在讨论TCP和UDP时,也会讨论它对传输性能的影响
    展开全文
  • 检验序列(FCS)

    千次阅读 2019-11-27 13:32:26
    在数据链路层要解决数据传输的三个问题: 封装成帧 ...帧校验序列(FCS)是指特别的检测码字符被添加到在一个通信协议中的帧中进行检错和纠错。发送主机在整个帧中有一个检测码随着发送。接收主机...
  • 检测序列错误(FCS)

    千次阅读 2014-05-19 15:08:07
    帧校验序列(FCS)是指特别的检测码字符被添加到在一个通信协议中的帧中进行检错和纠错。发送主机在整个帧中有一个检测码随着发送。接收主机在整个帧中的检测码使用相同的运算法则,并将它与接收到的 FCS 相比较。...
  • python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)检验序列FCS 想弄明白这里要看多几遍,配合下面的例子能更快理解。 第一、CRC-16校验码计算方法: 常用查表法和计算法。计算方法一般都是: (1)、预置1个...
  • 16位帧校验 (pppfcs)

    千次阅读 2018-01-18 18:38:24
    帧校验需要一个校验表,然后传入参数为需要校验的数组的首地址以及长度,返回16位校验值。 U16 fcstab[256]={ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0...
  • 循环冗余检验(CRC)求检验序列(FCS)

    千次阅读 2015-04-14 15:07:57
    * 循环冗余检验(CRC),求检验序列(FCS) * 参数:M是待传送的数据 * p是除数 * 返回:检验序列(FCS) * 说明:都是从0开始编号。 */ uint32_t getFCS(uint32_t M, uint32_t p) { uint32_t tmp; uint8_t ...
  • 循环冗余检验算法(CRC)与检验序列(FCS)

    万次阅读 多人点赞 2018-01-22 13:04:25
    这里,重点讨论一下差错检测里面最常用的一种检测算法,循环冗余算法(CRC)以及通过这个算法生成的检验序列(FCS)首先,我们知道,数据在传输过程中可能会因为外界的电磁干扰从而使数据产生差错。使原来的0变为1...
  • //这是一个完整的以太网。最后四个字节 8b 6b f5 13是其FCS字段,用于与后面生成的CRC32对照 alt_u8 tx_data[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1f, //8 0x29, 0x00, 0xb5, 0xfa, 0x08, 0x...
  • 以太网结构以及CRC校验

    万次阅读 2017-05-27 14:25:57
    MAC报文结构 ...以太由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。 结构图:说一下各个字段的作用: 前同步码:第一个字段是7个字节的前同步码,1和0交替,作用是用来使接收端的适配器在接
  • 我们知道数据链路层广泛使用循环冗余检验CRC的检验技术 现在我们知道要发送的数据M=101001(长度为k=6) 在我们每次发送数据的时候需要在M后面添加一个N位的冗余码,一共发送(k+N)位数据 这N位冗余码的计算方法...
  • ——尾的作用

    2011-05-24 10:26:47
    数据链路层协议将帧尾添加到各帧结尾处...帧校验序列 (FCS) 字段用于确定帧的传输和接收过程有无发生错误。之所以在数据链路层中添加错误检测,是因为数据是通过该层的介质传输的。对于数据而言,介质是个存在潜在不...
  • CRC 循环冗余校验

    2017-07-02 12:14:26
    在mac帧中,将原始数据处于除数(生成多项式)把得到的余数叫做FCS(帧校验序列FCS)加到mac帧的尾部。CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到...
  • 目的地址 源地址 类型 数据 帧校验序列 前导码(7字节):使接收器建立比特同步 其实定界符SFD(1字节):指示一帧的开始 目的地址DA(6字节):指出要接收该帧的工作站 源地址SA(6字节):指示发送该帧的工作站...
  • MAC格式

    千次阅读 2020-04-07 22:49:39
    2、MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节 3、无效的MAC帧 ① 帧的长度不是整数个字节 ② 用收到的帧序列FCS查到有差错 ③ 数据段的长度不在46~1500...
  • Cyclic Redundancy Check 1、 选择 k位二进制比特串 表示方式:多项式 (所以CRC又称为多项式编码方式) ...余数:k-1位 即改CRC校验码,也称FCS(帧校验序列) 余数的位数必须为k-1位,全为0也不能省略。 example
  • 目的地址 源地址 vlan标签(tag) 类型 数据 帧校验序列 vlan标签(tag): 12bit来表示,取值范围0-4096 vlan封装协议:ieee802.1q
  • 以太网和一些标准

    2021-01-13 09:22:33
    链路层3.2.2 以太网帧格式帧校验序列/循环冗余校验帧大小802.1p/q:虚拟局域网和Oos标签802.1AX :链路聚合(以前的802.3ad) 3.2.2 以太网帧格式 48位(6字节)的目的地址(DST)和源地址(SRC)字段 他们也叫MAC地址...
  • 即在发送端将一个以太网帧拆分成若干个小的数据包进行传输,在接收端将小数据包组合成以太网帧,并对丢失或损坏的数据进行一定的处理,最后对接收到的数据帧重新计算帧校验序列(FCS)。该方法有效利用了丢失部分数据的...
  • 以太网MAC格式

    2019-05-21 17:13:00
    以太网中的MAC帧的格式与各...数据字段长度长度(2字节):指示其后的逻辑链路控制(LLC)数据字节的长度逻辑链路控制帧LLC:携带的用户数据填充字段PAD:以保证帧有足够长度来适应碰撞检测的需要帧校验序列FCS(4...
  • IEEE802.15.4 格式

    千次阅读 2016-03-23 15:06:50
    帧 尾(MFR)组成: FCS(16位帧校验序列) MSDU(MAC服务数据单元): 超帧说明GTS域 帧载荷 由以上三部分组成的数据单元称为MPDU(MAC协议数据单元) 物理层: 帧头(PHR) 帧尾(FHR) MPDU在物理层被称为PSDU(物理层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,813
精华内容 5,525
关键字:

帧校验序列