精华内容
下载资源
问答
  • MAC帧格式

    千次阅读 2020-04-07 22:49:39
    2、MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节 3、无效的MAC帧 ① 帧的长度不是整数个字节 ② 用收到的帧序列FCS查到有差错 ③ 数据段的长度不在46~1500...

    1、以太网最大传输单元MTU=1500

    2、MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节

    3、无效的MAC帧

    ① 帧的长度不是整数个字节

    ② 用收到的帧序列FCS查到有差错

    ③ 数据段的长度不在46~1500字节之间

    ④ 有效的MAC帧长在64~1518之间

    ⑤ 对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧

    以太网的争用期定为51.2us,对于10M/s以太网,51.2us可以发送521bit数据,即64字节,所以也叫以太网的最小帧长

    5、以太网规定帧间最小间隔为9.6μs,对于10M/s以太网,相当于96bit的发送时间

    一个站在检测到总线开始空闲后还要等待9.6μs才能再次发送数据,这样做是为了使刚刚收到数据帧的接受缓存来得及清理,做好接受下一帧的准备

    展开全文
  • MAC帧封装

    千次阅读 2018-11-19 18:04:44
    通过控制台输入一段文字,输出MAC帧的2进制和16进制的字符串,主要是求FCS。这里只考虑单帧的情况,即只考虑输入数据在1字节~1500字节之间的情况,对于更长的数据暂不考虑。 1、MAC帧基本格式  表1 802.3标准的.....

    通过控制台输入一段文字,输出MAC帧的2进制和16进制的字符串,主要是求FCS。这里只考虑单帧的情况,即只考虑输入数据在1字节~1500字节之间的情况,对于更长的数据暂不考虑。

    1、MAC帧基本格式

                                                                                           表1 802.3标准的帧结构

      前导码

      帧前定界符

      目的地址

       源地址

     长度字段

           数据字段

    校验字段

          7B

             1B

         (6B)

         (6B)

        (2B)

       46~1500字节

        (4B)

    具体内容参考:https://blog.csdn.net/icxiaoge/article/details/83420269

    2、内容

    目的地址:8000FF602CDC

    源地址:8000FE853A5F

    生成多项式:{\color{Red}G(x)=x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x+1}

    3、程序思路

    1. 目的地址和源地址是已知的,由于计算CRC检验是2进制形式,可写函数hexToBinary(),将目的地址和源地址转换成2进制

    2. 右生成多项式得到用于CRC检验的除数p为:100000100110000010001110110110111

    3. 数据字段用ASCII编码,写函数dataToBinaryString()将数据转换成2进制字符串

    4. 长度字段由首部尾部18字节与数据字段长度(46字节~1500字节)和的2进制串

    5. 将目的地址、源地址、长度字段、数据字段组成MAC帧的前部分

    6. 利用得到的MAC帧前部分,用函数solveFcs()求出FCS

    4、代码

    主类MacFrameEncapsulation.java如下:

    /*
     * 文件内容:MAC帧封装
     * 文件目标:输入一段不超过1500个字节的数据,输出封装后的MAC帧,
     *        MAC帧包含目的地址、源地址、长度/类型、数据,FCS 共5部分
     *        各部分有单独输出显示,输出为2进制和16进制
     * 时间:2018-11-15
     * 作者:wowpH
     */
    
    import java.util.Scanner;
    
    public class MacFrameEncapsulation {
    	
    	private int LENGTH_FIELD_BYTES = 2;       // 长度字段长度为2 bytes
    	private int MIN_DATA_BYTES_LENGTH = 46;   // 数据字段最小长度46 	bytes
    	private int MIN_DATA_BITS_LENGTH = 368;   // 数据字段最小长度368 bits
    	private int MAX_DATA_BYTES_LENGTH = 1500; // 数据字段最大长度1500 bytes
    	private int FCS_BITS_LENGTH = 32;         // FCS长度(bit)
    	private String DESTINATION_ADDRESS = "8000FF602CDC";            // 目的地址
    	private String SOURCE_ADDRESS = "8000FE853A5F";                 // 源地址
    	private String DIVISOR_P = "100000100110000010001110110110111"; // CRC检验的除数p
    	private String destinationBinaryAddress = ""; // 目的地址二进制
    	private String sourceBinaryAddress = "";      // 源地址二进制
    	private String lengthField = "";   // 长度字段2进制,2 bytes
    	private String data = "";          // 输入的数据部分
    	private String dataBinary = "";    // 输入的数据部分的2进制
    	private String fcs = "";           // CRC检验的FCS二进制
    	private String mac = "";           // MAC帧,包含目的地址、源地址、长度字段、数据字段,FCS共5部分
    	private String macHex = "";        // MAC帧16进制串
    	private String fcsHex = "";        // FCS十六进制串
    	// MAC帧初始长度(byte)为目的地址长度(6bytes)+源地址长度(6bytes)+长度字段(2bytes)+FCS长度(4bytes)
    	private int macByteLength = 18;
    	// 4位的二进制数串,0-15
    	String[] FOUR_BIT_BINARY_TABLE = {
    			"0000", "0001", "0010", "0011",
    			"0100", "0101", "0110", "0111",
    			"1000", "1001", "1010", "1011",
    			"1100", "1101", "1110", "1111"
    	};
    
    	// 开始
    	void begin() {
    		this.input();
    		this.dealWithDestinationAddress();
    		this.dealWithSourceAddress();
    		this.dealWithData();		
    		this.dealWithLengthField();
    		this.mac += this.lengthField; // 将长度字段添加到MAC帧
    		this.mac += this.dataBinary;  // 将数据字段添加到MAC帧
    		this.dealWithFcs();
    		this.dealWithMac();
    	}
    	// 输入数据
    	private void input() {
    		Scanner in = new Scanner(System.in);
    		String data = "";
    		while(data.equals("")) {
    			System.out.println("请输入传输的数据:");
    			data = in.nextLine();
    			this.data = data;
    		}
    		System.out.println("---------------------------------------------------------");
    		in.close();
    	}
    	// 显示信息
    	void output() {
    		System.out.println("MAC帧(2进制)为:");
    		System.out.println(this.mac);
    		System.out.println("目的地址为:");
    		System.out.println(this.destinationBinaryAddress);
    		System.out.println("源地址为:");
    		System.out.println(this.sourceBinaryAddress);
    		System.out.println("长度/类型(2进制)为:");
    		System.out.println(this.lengthField);
    		System.out.println("数据为:");
    		System.out.println(this.dataBinary);
    		System.out.println("FCS(2进制)为:");
    		System.out.println(this.fcs);
    		System.out.println("MAC帧(16进制)为:");
    		System.out.println(this.macHex);
    		System.out.println("FCS(16进制)为:");
    		System.out.println(this.fcsHex);
    		System.out.println("---------------------------------------------------------");
    	}
    	// 处理目的地址
    	private void dealWithDestinationAddress() {
    		this.destinationBinaryAddress = this.hexToBinary(this.DESTINATION_ADDRESS);
    		this.mac += this.destinationBinaryAddress;        // 将目的地址(2进制)添加到MAC帧
    	}
    	// 处理源地址
    	private void dealWithSourceAddress() {
    		this.sourceBinaryAddress = this.hexToBinary(this.SOURCE_ADDRESS);
    		this.mac += this.sourceBinaryAddress;        // 将源地址(2进制)添加到MAC帧
    	}
    	// 处理传输数据
    	private void dealWithData() {
    		int dataByteLength = 0;    // 数据长度(byte)
    		this.dataBinary = this.dataToBinaryString(data);
    		dataByteLength = this.dataBinary.length() / 8;
    		if(dataByteLength < this.MIN_DATA_BYTES_LENGTH) {
    			this.dataBinary = this.fillZero(this.dataBinary, this.MIN_DATA_BITS_LENGTH, false);
    			dataByteLength = this.MIN_DATA_BYTES_LENGTH;
    		} else if(dataByteLength > this.MAX_DATA_BYTES_LENGTH) {
    			System.out.println("输入的数据超过范围!");
    			System.exit(0);
    		}
    		this.macByteLength += dataByteLength;
    	}
    	// 处理长度字段
    	private void dealWithLengthField() {
    		this.lengthField = Integer.toBinaryString(this.macByteLength);
    		this.lengthField = this.fillZero(this.lengthField, this.LENGTH_FIELD_BYTES * 8, true);
    	}
    	// 处理FCS
    	private void dealWithFcs() {
    		String dividend = this.fillZero(this.mac, this.mac.length() + this.FCS_BITS_LENGTH, false);
    		this.fcs = this.solveFcs(dividend, this.DIVISOR_P);
    		this.fcsHex = this.binaryToHex(this.fcs);
    		this.mac += this.fcs;
    	}
    	// 处理MAC帧
    	private void dealWithMac() {
    		this.macHex = this.binaryToHex(this.mac);
    	}
    	/* @return String 返回求解到的FCS串
    	 * @param dividend 被除数,二进制
    	 * @param divisor 除数,二进制
    	 */
    	private String solveFcs(String dividend, String divisor) {
    		String fcs = "";
    		char[] dividendArray = dividend.toCharArray();
    		char[] divisorArray = divisor.toCharArray();
    		// 指向被除数中用于当前运算的数据的首部和尾部,长度和除数相同
    		int head = 0;     // 指向头部下标,第一次是0
    		int tail = head + divisor.length() - 1;  // 尾部下标,第一次是32
    		int i;
    		while(tail < dividend.length()) {
    			if('1' == dividendArray[head]) {
    			    for(i = head; i <= tail; ++i) {
    			    	if(dividendArray[i] == divisorArray[i - head]) {
    			    		dividendArray[i] = '0';
    			    	} else {
    			    		dividendArray[i] = '1';
    			    	}
    				}
    			}
    			++head;
    			++tail;
    		}
    		for(i = head; i < dividendArray.length; ++i) {
    			fcs += dividendArray[i];
    		}
    		return fcs;
    	}
    	/* @return String 二进制字符串
    	 * @param data 字符串
    	 * 将字符串转换成二进制字符串,通过ASCII转换
    	 */
    	private String dataToBinaryString(String data) {
    		char[] stringArray = data.toCharArray();
    		String result = "";
    		String oneBit = "";
    		for (int i = 0; i < stringArray.length; ++i) {
    			oneBit = Integer.toBinaryString(stringArray[i]);
    			oneBit = this.fillZero(oneBit, 8, true);
    			result += oneBit;
    		}
    		return result;
    	}
    	/* @return String 填充0之后的二进制串
    	 * @param data 需要填充0的二进制串
    	 * @param finalBitLength 填充0后的长度(位)
    	 * @param way 填充0。way=true 首部填充0,way=false 尾部填充0
    	 */
    	private String fillZero(String data, int finalBitLength, boolean way) {
    		String result = "";
    		for(int i = data.length(); i < finalBitLength; ++i) {
    			result += '0';
    		}
    		if(true == way) {
    			result += data;
    		} else {
    			result = data + result;
    		}
    		return result;
    	}
    	/* @return String 返回转换后的二进制串
    	 * @param hex 要转换的十六进制串
    	 */
    	private String hexToBinary(String hex) {
    		String binary = "";
    		int hexBitLength = hex.length();
    		for(int i = 0; i < hexBitLength; ++i) {
    			if(hex.charAt(i) >= '0' && hex.charAt(i) <= '9') {
    				binary += this.FOUR_BIT_BINARY_TABLE[hex.charAt(i) - '0'];
    			} else if(hex.charAt(i) >= 'a' && hex.charAt(i) <= 'z') {
    				binary += this.FOUR_BIT_BINARY_TABLE[hex.charAt(i) - 'a' + 10];
    			} else if(hex.charAt(i) >= 'A' && hex.charAt(i) <= 'Z') {
    				binary += this.FOUR_BIT_BINARY_TABLE[hex.charAt(i) - 'A' + 10];
    			}
    		}
    		return binary;
    	}
    	/* @return String 16进制串
    	 * @param binary 需要转换成16进制的2进制串
    	 */
    	private String binaryToHex(String binary) {
    		String hex = "";
    		String fourBits = "";
    		int oneBit = 0;
    		int length = binary.length() / 4;
    		for(int i = 0; i < length; ++i) {
    			fourBits = binary.substring(0, 4);
    			oneBit = Integer.parseInt(fourBits, 2);
    			hex += Integer.toHexString(oneBit);
    			binary = binary.substring(4);
    		}
    		return hex;
    	}
    }
    

    测试类Test.java代码如下:

    public class Test {
    	public static void main(String[] args) {
    		MacFrameEncapsulation f = new MacFrameEncapsulation();
    		f.begin();
    		f.output();
    	}
    }
    

    5、截图

    截图

    展开全文
  • 2、MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节 3、无效的MAC帧 ① 帧的长度不是整数个字节 ② 用收到的帧序列FCS查到有差错 ③ 数据段的长度不在46~1500字节之间...

    以太网最大传输单元MTU=1500 B,以太网为不可靠传输。

    MAC帧格式

    在这里插入图片描述

    MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节

    无效的MAC帧

    ① 帧的长度不是整数个字节

    ② 用收到的帧序列FCS查到有差错

    ③ 数据段的长度不在46~1500字节之间

    ④ 有效的MAC帧长在64~1518之间

    ⑤ 对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧

    MAC地址

    在这里插入图片描述

    I/G ( lndividualGroup)位:如果I/G=0,则是某台设备的MAC地址,即单播地址;如果I/G=1,则是多播地址(组播+广播=多播)。
    G/L( GlobalLocal,也称为UIL位,其中U表示Universal)位:如果G/L=0,则是全局管理地址,由IEEE分配﹔如果G/L=1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。

    以太网的争用期定为51.2us,对于10M/s以太网,51.2us可以发送521bit数据,即64字节,所以也叫以太网的最小帧长

    以太网规定帧间最小间隔为9.6μs,对于10M/s以太网,相当于96bit的发送时间

    一个站在检测到总线开始空闲后还要等待9.6μs才能再次发送数据,这样做是为了使刚刚收到数据帧的接受缓存来得及清理,做好接受下一帧的准备

    展开全文
  • MAC帧封装模拟

    2012-11-14 21:08:36
    计算机网络课程用来模拟MAC帧的封装。实现了CRC-16,CRC-32,CRC-CCITT三种多项式生成FCS冗余码。
  • MAC帧的格式

    万次阅读 多人点赞 2018-10-18 18:29:26
    MAC帧的格式 常用的以太网MAC帧格式有两种标准,一种是DIX Etherent标准,一种是IEEE的802.3标准。两种帧的结构如图所示; 这个以太网V2的前导域为8B,而IEEE802.3的前导域为7B,将空余出来的一个字节用作帧起始...

    MAC帧的格式

    常用的以太网MAC帧格式有两种标准,一种是DIX Etherent标准,一种是IEEE的802.3标准。两种帧的结构如图所示;

    这个以太网V2的前导域为8B,而IEEE802.3的前导域为7B,将空余出来的一个字节用作帧起始分解符,它的位模式为10101011,这样做的目的就是为了和IEEE802.4和IEEE802.5兼容。

    还有的就是IEEE802.3帧规定的第三个字段是“长度/类型域”。当这个字段值大于1500时,表示类型,这个就是和V2以太网一样的标准了;当这个字段值小于1500时,才表示“长度”,这时,接收方无法确定对接收到的帧做如何处理,必须通过在数据部分增加一个小的LLC头部,用它来提供帧类型的信息。

     

    以太网V2的MAC帧由以下五个部分组成,

    前两个字段分别是6B的目的地址和源地址字段

    第三个字段是2B的类型字段(TYPE),它用来标志上一层使用的是什么协议,以便于把收到的MAC帧的数据上交给上一层的这个协议常见的协议类型如图所示;

     

    第四个字段是数据字段,其长度为46~1500B(46B是这样的得出来得;最小帧长64B减去18B的首部地址和尾部就得出数据字段的最小长度),这里要注意的就是如果一个帧的数据部分少于46B,则MAC子层就会在数据字段的后面加入一个整数字节的填充字段(Pad)以保证以太网的MAC地址不小于64B

    第五个字段是4B的帧校验和(Checksum)(使用CRC校验),这个字段只是提供检错功能,并不提供纠错功能。该效验和效验的范围为:目的地址,源地址,类型,数据等字段。CRC效验的生成多项式为:

    G(x)=X(32)+X(26)+X(23)+X(22)+X(16)+X(12)+X(11)+X(10)+X(8)+X(7)+X(5)+X(4)+X(2)+X(1)+1

    这里需要注意以下两点

    1. 在以太网V2的MAC帧中,其首部并没有一个帧长度(或数据长度)的字段,那么MAC子层如何知道从接收到的以太网帧中取出多少字节的数据交给上一层的协议
    2. 当数据字段不足46B时候,必须通过填充字段来扩充数据字段的长度,使其满足最小长度64B的要求,那么接收端的MAC子层在从接收到的帧中剥去首部和尾部后把数据字段交给上一层协议后,上一层协议如何识别有效的数据字段的长度

    回答1的问题:这是因为以太网采用曼彻斯特编码,曼彻斯特编码的一个重要特点是:在曼彻斯特的每一个码元的正中间一定有一次电压的转化(从高到低或者从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元(帧之间有着一定的间隔),这样发送方适配器上的电压就不再变化,于是接收方就可以很容易地找到以太网帧的结束位置,这个位置上往前数4B(效验和),就能确定数据字段的结束位置

    回答2的问题:上一层协议要识别数据帧的数据字段的有效长度,一般是通过上层协议的类似“总长度”字段推断出来的。例如,如果上层协议使用的是IP协议的时候,其IP头中就有一个“总长度字段”,因此“总长度”字段加上填充字段,应当等于MAC帧中数据字段的长度。例如,当IP数据包的总长度为42B时,填充字段共有4B,当MAC帧将46B的数据交给IP层时,IP层就把其中的4B的填充字段丢弃。

    另外,在传输媒介上实际传输的要比MAC帧多8B,该8B的位模式为10101010.这个位模式经过曼彻斯特编码后,会产生一个10MHZ的方波,从而使得接收方与发送方的时钟方便地同步在一起。

    展开全文
  • 802.11 MAC帧详细介绍

    2017-07-11 09:56:37
    详细地介绍了802.11 MAC帧结构
  • 以太网MAC帧格式

    万次阅读 2018-05-06 18:48:10
     常用的以太网MAC帧格式有两种标准 :DIX Ethernet II标准,IEEE 的 802.3 标准。 Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节为包类型,而后者定义的2字节...
  • 以太网的MAC帧(一)

    千次阅读 热门讨论 2020-08-02 18:53:10
    以太网MAC帧格式有两种标准:DIX Ethernet V2标准和IEEE 802.3标准。DIX以太网V2标准的帧格式如图: 前导码: 使接收端与发送端时钟同步,在帧的前面插入的8字节,可再分为两字段:第一个字段共7字节,是前同步码,...
  • 以太网的MAC帧格式

    2019-05-21 20:32:00
    以太网的MAC帧格式 数据字段小于46字节,MAC子层会在数据字段的后面加入一个整字节的填充字段以保证以太网的MAC帧 不小于64字节 通过前同步码判断一帧开始 帧结束:电平的跳变判断 MAC层的硬件地址。硬件...
  • ARP协议与Ethernet MAC帧

    2020-05-14 18:59:06
    MAC帧:理解以太⽹MAC帧 MAC帧字段如图: 抓取ARP包:抓取并分析ARP请求与应答包 使用wireshark进行抓包,抓取结果部分截图: ARP请求 ARP应答 ARP分析:抓取ARP帧并分析 具体分析 上图所示可见,得到的信息由...
  • 在研究WLAN入侵检测技术的基础上,给出一种基于数据链路层的无线局域网入侵检测方法。该方法使用协议分析技术,采用MAC帧分类的方法匹配入侵特征,实现对WLAN的入侵检测。
  • 无效的MAC帧

    千次阅读 2015-12-01 18:24:50
    帧的长度不是整数个字节 用收到的帧检验序列FCS查出有差错 数据字段的长度不在46~1500字节之间 对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧
  • 针对规范导出无法解决的问题,提出了一种基于Libpcap库捕获的IEEE 802.11packet解析的MAC帧解析方法和PHY协议类型检测算法。 介绍了包结构和帧前导的长度(18或26个字节)。 然后给出了转换字节序和解析子字段的...
  • 对LoRaWAN协议栈中的MAC帧进行分解,每个位的作用,在文件里面都有描述。此版本为第二版,后续发现问题后会持续更新,欢迎指出问题。
  • IEEE 802.11 的MAC帧包括三部分:MAC Header,Frame body,FCS IEEE 802.11 MAC帧的最大长度2346个字节。 MAC Header:包含MAC帧的信息。 Frame Body:帧主体,来自网络层的数据,负责在STA间传输上层数据。 ...
  • 以太网 V2 MAC帧的封装,解析,发送

    千次阅读 2018-06-06 20:28:08
    解析帧结构模块 本模块实现了将封装好的MAC帧各字段解析为可阅读的文本的功能。 其中,任意位置的读入失败都抛出文件已到达末尾异常,结束解析。 2. 封装数据帧模块 本模块实现了将用户输入的文本封装为MAC帧的...
  • IEEE802.3 MAC帧

    千次阅读 热门讨论 2018-04-01 21:42:34
    MAC帧是存在于数据链路层的MAC子层中的数据。一、MAC帧格式 (1)前导码字段P占7个字节,每个字节的比特模式为“10101010”。作用:实现收发双方的时钟同步。 (2)帧起始定界符字段SFD占1个字节,比特模式为...
  • PPP帧与MAC帧

    2020-12-23 12:59:18
    PPP在封装方式以以太网的封装方式不同,它没有以太网所要求的MAC地址,它通过自身的协商过程实现点到点的数据传输。 虚拟局域网使用的以太网格式 PPP属于广域网范畴,MAC是局域网范畴,按实际情况和环境就选用...
  • LoRaWAN协议中文版 第4章 MAC帧格式

    万次阅读 2017-01-19 08:48:00
    LoRaWAN协议1.0中文版_第4章_MAC帧格式
  • 以太网中的MAC帧格式

    2019-10-04 18:21:40
    以太网中的MAC帧的格式为:前导码(7字节):使接收器建立比特同步起始定界符SFD(1字节):指示一帧的开始目的地址DA(6字节):指出要接收该帧的工作站源地址SA(6字节):指示发送该帧的工作站地址。数据字段长度...
  • IEEE802.11n MAC帧汇聚机制调度方案设计,向侦林,,IEEE802.11n通过使用帧汇聚机制能使MAC层的数据率达到至少100Mbps,使WLAN能承载更多的应用以及提高用户体验。虽然其定义了A-MSDU和A-MPDU两��
  • 以太网的MAC帧(二)

    千次阅读 2020-08-02 19:09:36
    常用的以太网MAC帧格式有两种标准 :DIX Ethernet II标准,IEEE 的 802.3 标准。 Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节为包类型,而后者定义的2字节为的长度;所幸的是,后者...
  • 交换机是通过转发给他的Mac帧来逐步建立转发表和ARP缓存表进行自学习。交换机是要建立ARP缓存表,它的自学习过程只能学习到发给他的帧的源MAC和端口映射,所以路由器需要改变帧中源MAC为自己的MAC,这样中间的二层...
  • MAC帧类型*数据帧

    千次阅读 2020-06-17 22:48:28
    数据帧MAC头如下 其中Address字段由To DS/From DS位来决定 数据—To DS 与From DS DS(Distribution system)分布式系统是接入点间转发的骨干网络,因此通常就称为骨干网络。一般可以理解为以太网。 ...
  • 以太网MAC帧结构与数据填充

    千次阅读 2017-08-03 11:18:05
    下图是Wiki中的MAC帧结构描述 那么对于软件操作的时候,哪些数据是需要软件写入 哪些不要写呢 通常从MAC的目标地址到冗余校验是软件需要写入的数据。 但是有些MAC控制可以自动添加冗余校验码(FCS),这就不需要...
  • 802.11 MAC帧格式

    千次阅读 2016-07-28 11:38:39
    一般的802.11 MAC帧,通常用到的是3个Address的,所以MAC头24byte。如果增加Address4,MAC头为30byte。 Frame Control字段:  1.Protocol目前为00‘b  2.Type:00’b管理帧,01’b控制帧,10‘b数据帧 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,120
精华内容 31,248
关键字:

mac帧