数据链路层如何用MAC地址标记每台设备的“身份证“,通过MTU规则限制46-1500字节数据帧大小,ARP协议在广播风暴中精准寻址,解决IP到MAC的“最后一公里“难题
文章目录本篇摘要一.认识以太网二. 以太帧格式三.认识下MTU最大传输单元四.细谈MSS最大段尺寸五.ARP协议ARP数据报格式六.总结几个需要注意的问题七.本篇小结本篇摘要介绍以太网作为技术标准体系涵盖拓扑、MAC方式及速率等解析以太帧结构MAC地址、协议类型等阐述MTU46-1500字节与MSS协商机制说明ARP协议通过请求/应答建立IP-MAC映射并缓存解决局域网通信寻址问题。一.认识以太网以太网的本质以太网并非指某种特定的网络实体而是一套技术标准体系。它不仅涵盖了数据链路层Data Link Layer的相关规定也包含了部分物理层Physical Layer的技术规范。以太网标准内容规定了网络的拓扑结构。定义了介质访问控制MAC方式。明确了网络的传输速率。以太网的技术特性举例通常要求使用双绞线作为传输介质。支持多种传输速率如10Mbps、100Mbps、1000Mbps1Gbps等。以太网的地位与应用是当前应用最为广泛的局域网LAN技术。在局域网技术领域与以太网并列的其他技术还包括令牌环网Token Ring、无线局域网Wireless LAN, WLAN等。二. 以太帧格式IP与MAC地址的核心区别IP地址网络层逻辑地址描述通信的总体起点与终点如从北京到上海的旅程。MAC地址数据链路层物理地址固化在网卡硬件中描述通信每一跳区间的起点与终点如从北京站到天津站、天津站到济南站的具体路段。数据帧的关键结构源/目的MAC地址48位硬件标识符固化在网卡出厂时标识当前链路层的发送端和接收端设备。帧协议类型字段通过特定值区分上层协议类型如IP、ARP、RARP。CRC校验码位于帧末尾用于检测数据帧在传输过程中是否发生错误保障数据完整性。这里有个问题为什么数据链路层这里要求上层传的数据要46-1500?三.认识下MTU最大传输单元MTU的类比MTU相当于发快递时对包裹尺寸的限制该限制由不同数据链路对应的物理层产生。以太网MTU具体数值以太网帧中的数据长度规定最小46字节最大1500字节。ARP数据包长度不够46字节时要在后面补填充位最大值1500称为以太网的最大传输单元MTU 。不同网络类型的MTU不同的网络类型有不同的MTU。MTU与数据包分片如果一个数据包从以太网路由到拨号链路上当数据包长度大于拨号链路的MTU时则需要对数据包进行分片fragmentation。MTU的本质可以理解成这是底层硬件的一种规定如果超过了就必须在IP层进行分片。之前讲过了对于传输层除了报头的数据(UDP【14721500-20-8】/TCP【14601500-20-20】)如果报文过大了就会分片这里就不再说了!可以理解成这是底层硬件的一种规定如果超过了就必须在ip层进行分片在网络层讲过)四.细谈MSS最大段尺寸TCP单个数据报最大消息长度受限于MTU此最大长度称为MSS。TCP建立连接时通信双方会进行MSS协商。最理想状态是MSS值为IP不分片处理的最大长度该长度受限于数据链路层的MTU。双方在发送SYN时会在TCP头部写入自身能支持的MSS值。双方知晓对方MSS值后选择较小的作为最终MSS。MSS的值在TCP首部40字节的变长选项中kind 2。这里的交互MSS就是为了保证双方在数据链路层发送以及接收的时候不会被分片或者拒收以及ip层发现MSS讨大导致拒收引发对面重传等情况!MTU与MSS关系现在我们结合实际情况回答下为什么处于这个范围刚刚说了是由于硬件等规定那么为什么要这么规定局域网就是一个碰撞域一个时刻只能发送一个数据帧 真正在网络物理层上流动的数据 ---- 其实是数据帧这里可以把局域网理解成临界资源每次只能发一个数据帧因此每台主机使用的时间越少越好而发送的数据帧越少越短越好才能对网络更友好这里假设数据帧特别大此时就会传的特别慢占用网络时间长其他主机发的报文就要等待了 — 因此规定最大MTU是1500如果特别小就需要分片的数量就特别大此时一台主机发的数据帧就会特别多此时产生冲突的时间就会延长对网络也是不友好 — 下限就是46这里为什么是这两个数是经过多次测试最优方案此时我们就知道为什么这样规定了也就是结合实际的!使用ifconfig命令,即可查看ip地址, mac地址和MTU:五.ARP协议ARP协议产生背景仅知道目标主机IP地址不知道MAC地址时无法发送数据帧因此需要局域网协议将IP转换为对应的MAC地址即ARP协议。ARP协议层次属性ARP不是单纯的数据链路层协议而是介于数据链路层和网络层之间的协议。ARP协议核心功能建立主机IP地址和MAC地址的映射关系。ARP协议工作流程发送数据帧时先发ARP请求局域网内所有主机可见。若接收方信息不一致则舍弃若目的IP与自身IP一致将自身MAC地址写入并发送应答ARP对方收到后记录MAC地址用于数据发送后续重复时仅匹配的接收不匹配则丢弃 。ARP数据报格式源 MAC 地址和目的 MAC 地址在以太网首部和 ARP 请求中各出现一次在以太网链路层情况中多余其他链路层网络类型可能必要。硬件类型表示链路层网络类型其中 1 代表以太网。协议类型指明要转换的地址类型0x0800 对应 IP 地址。硬件地址长度方面以太网地址为 6 字节。协议地址长度上IP 地址为 4 字节。op 字段取值含义1 表示 ARP 请求2 表示 ARP 应答。那么在数据链路层ARP协议和以太网协议是如何工作?其实就是我们发送ip数据帧的时候首先看下对应ARP协议层有没有对应mac地址没有的话就直接发经过以太网协议包装的ARP请求得到对应mac地址后保存然后再发ip数据帧!这里发送的时候经过哪层协议进行的包装到时候接收的时候它就要进行解析!理解了数据链路层发送的规则但是局域网中任何主机可能收到ARP请求也可能收到ARP应答下面讲一下主机如何进行区分我们说过了局域网是个碰撞域每次都集体发送一个数据帧假设B主机收到了一个ARP数据帧怎么知道是请求还是应答呢首先ARP层拿到对应的数据后可以先看op标志如果是1那么此时就把自己的mac地址填到对应的目的以太网地址里如果是2此时就可以拿到里面的目的以太网地址保存再填充对应ip数据帧!再复盘下对应操作对于第一次给主机发信息首先进行ARP请求(即广播以太网帧首部的硬件地址填FFRFFFRFFF6表示广播)目的主机接收到广播的ARP请求发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机将自己的硬件地址填写在应答包中;然后源机拿到后就可以进行ip数据帧的发送了!每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。两个问题1·为什么要进行缓存如果很长时间给对面主机发信息每次发送ARP请求效率就低了还会带来不必要的网络负担因此需要保存。2·为什么要有过期时间因为ip是动态分配的而且mac地址只要硬件等换了就会更换它们是变化的为了保证有效性需要及时调整等原因导致过期时间动态性适配保证IP - MAC映射关系随设备变化及时更新防止通信失败。资源管理避免缓存表溢出给活跃设备释放空间。安全性增强加大ARP欺骗攻击难度减少长期攻击风险。兼容性适配DHCP等动态IP分配机制支持移动与临时接入设备。六.总结几个需要注意的问题一般对于ARP请求会来到ARP协议层进行分析决定是否舍弃因为它要判断目的ip地址是否和自己的相同而获取目的ip只能在ARP层进行解析。对于ARP应答在MAC帧层就可以决定是否要舍弃如果是发给自己的应答此时在以太网首部就有目的mac如果不是自己的mac地址就直接舍弃。因此当一个主机收到报文的时候首先到达mac帧层如果发现以太网首部目的地址不是全F就是应答按照上面的方式处理如果是全F也就是请求需要交给ARP层进行分析处理七.本篇小结以太网定义局域网通信标准MTU限制数据帧大小保障效率ARP协议通过广播请求与缓存映射实现IP到MAC转换确保链路层数据精准传输。