一、MAC帧结构
MAC帧是数据帧的一种。而所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。
二、MAC帧字节长度的由来
① 目标MAC地址、源MAC地址、协议类型、帧校验序列为固定值
②当数据包最小为46字节时,整个帧大小为64字节,有两个原因:
1)当站点正在发送数据时,发生了冲突,就将未发送的部分丢弃,这样导致了物理线路上的残余帧的LEN可能为0,若MAC的LEN为0是合法的将无法区别;
2)按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512位=64字节,这就是以太网帧最小64字节的原因。
③当数据包最大为1500字节时,整个帧大小为1518字节,这个是为避免单一主机占用信道时间过长。
三、问题来啦
问题1:那我们经常传几十M甚至几个G的文件是怎么传递的?
①在应用程序中我们用到的Data的长度最大是取决于底层限制(1472):
1)在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)—(1500 + 18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),即MTU(Maximum Transmission Unit)为1500;
2)在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20 = 1480;
3)在传输层,对于UDP包的首部要占8字节,所以这的MTU为1480 - 8 = 1472;
②当我们UDP包中的数据多于1472时,发送方的IP层需要分片进行传输,而在接收方IP层则需要进行数据报重组。
问题2:1千兆网络一秒能发多少(N)个最小帧?
帧于帧之间不是无缝相连,需要间隔,也就是帧间隙,共20字节,包括:
1)以太网最小帧间隙 12Byte(IEEE802.3)
2)数据链路层帧 7 Byte前导字符(用于时钟同步)
3)帧开始标识 1Byte(标识帧的开始)
故:
四、wireshark 抓包分析mac帧
第一行是对该数据包的整体介绍,字节大小等描述
第二行在“详细信息”窗口内的“Ethernet II”项目,即是MAC帧的首部信息。双击改项展开,可见MAC帧首部的 详细分析,对应“解析器”窗口中的16进制数据会反蓝显示。单击某个字段,对应的首部字段均会反蓝显示展开后,有目的物理地址,源物理地址,ip类型等
第三行internet protocol,是网络层传输的IP数据包,对应了IP数据包的格式
第四行传输控制协议,里面有本端端口、目的端口、流动索引、TCP字段长度等等。
第五行是传输安全层协议,是内容类型、版本、长度以及数据包。
那么诸位对文章有哪些指正或者对mac相关有什么讨论呢?欢迎留言