企业网站备案那么麻烦吗,公司广告牌制作,世界十大著名服装设计师,wordpress ftp账户文章目录 1. 认识以太网2. MAC协议MAC帧的格式MAC地址和IP地址的区别MTU 3. 局域网通信原理碰撞检测和避免 4. ARP协议ARP数据报的格式ARP缓存 1. 认识以太网 网络层解决的是跨网络点到点传输的问题#xff0c;数据链路层解决的是同一网络中的通信。 数据链路层负责在同一局域… 文章目录 1. 认识以太网2. MAC协议MAC帧的格式MAC地址和IP地址的区别MTU 3. 局域网通信原理碰撞检测和避免 4. ARP协议ARP数据报的格式ARP缓存 1. 认识以太网 网络层解决的是跨网络点到点传输的问题数据链路层解决的是同一网络中的通信。 数据链路层负责在同一局域网同一链路中两台设备的通信。 局域网的种类有很多如以太网、令牌环网。以太网是最常见的局域网技术广泛用于家庭、企业和数据中心网络。 “以太网” 不是一种具体的网络而是一种技术标准既包含了数据链路层的内容也包含了一些物理层的内容。例如规定了网络拓扑结构访问控制方式传输速率等以太网中的网线必须使用双绞线传输速率有10M100M1000M等。 2. MAC协议 数据链路层的MAC协议规定同一链路中数据以MAC帧的格式传输。 不同局域网类型的MAC协议不同这里介绍的是以太网MAC协议。 MAC帧的格式 目的MAC地址和源MAC地址 标识该数据帧的目的主机和源主机
类型 指的是封装上层数据的协议类型有三种类型IP, ARP, RARP分别对应数字0800, 0806, 8035。
CRC校验码 判断该数据帧的正确性。 MAC地址和IP地址的区别
MAC地址用于标识同一链路相互连接的不同主机在通信过程中描述路途上每一个区间的起点和终点。 MAC地址的长度为6字节48位一般用16进制数字加上冒号的形式来表示例如: 08:00:27:03:fb:19。MAC地址通常是唯一的在网卡出厂时就设定了不能修改。IP地址用于标识网络中的不同主机在通信中描述全过程的起点和终点。 MTU
MTUMaximum Transmisson Unit最大传输单元指数据链路层中一个数据帧有效载荷的最大长度。
不同数据链路对于数据帧的长度限制不同以太网MAC帧数据部分的长度规定最小是46字节最大是1500字节。如果数据长度小于46字节要求在数据部分后面填充额外的空白字节以满足最小长度要求。最大是1500字节这就是MTU。
为什么要设置MTU
提高网络传输的效率降低碰撞概率减少碰撞后重传的成本。大数据帧传输时间长增加碰撞的风险碰撞避免的成本很高。(关于数据碰撞后面详谈) 数据帧长度过小也不合理小数据帧传输速度快时间短碰撞检测可能在碰撞发生前触发会导致碰撞检测失败。因此为了在网络效率和碰撞检测之间取得平衡通常设置帧数据部分长度范围在46~1500字节比较合理。 MTU对上层的影响 MTU的限制决定了上层不应该传递过大数据给数据链路层 对于IP协议采用分片与组织的策略在我的另外一篇文章已详细介绍详见 对于TCP协议不想让IP发生过多分片因此引入了MSS规定了TCP数据部分的最大长度。TCP在三次握手发送SYN的时候会进行MSS协商在首部变长的选项字段中携带MSS长度取双方MSS最小值作为传输所用的MSS。 对于UDP协议如果UDP单个报文的数据长度大于1472MTU - IP报头长度 - UDP报头长度就会被IP分成多个分片提高丢包率一片丢就相当于整个丢了。因为UDP没有可靠性机制丢包报文不会重传。 MSS与MTU的关系 通常情况下
MSS MTU(1500byte) - IP报头长度(20byte) - TCP报头长度(20byte) 1460byte 3. 局域网通信原理 局域网采用“广播”的策略进行数据通信即在同一链路中主机A向主机B发送数据并不是直接向B转发而是群发到同一链路的所有主机中由接收主机辨认数据包是否是发给自己的。 在同一链路上每台主机有一个MAC地址用于标识了该主机在链路中的唯一性。 每个发出的数据帧都携带源MAC地址和目标MAC地址。当主机A向主机B发送消息时同链路所有主机都收到这个消息并在数据链路层查看消息的目标MAC地址是否为本主机MAC地址不是则在MAC层将消息丢弃是则向上交付。 碰撞检测和避免 如果多个主机同时向链路中发送数据可能会发生数据碰撞。 在同一物理媒介如电缆、无线信道中发生光电信号的交叉碰撞会导致数据的损坏。因此数据链路层引入了碰撞检测与碰撞避免机制。 碰撞检测 数据链路层的碰撞检测机制通俗理解因为主机以广播的形式向同一链路的目标发送数据所以发送方自己也能收到自己发出去的数据。碰撞检测就是在链路中收取自己发送的数据帧通过CRC校验等方式检测数据是否损坏。 碰撞避免 碰撞避免就是当检测到发生数据碰撞发送方的数据链路层会随机等待一段时间再尝试重传数据帧。这个等待时间是为了避免多个设备在同一时间重新发送数据从而减少再次发生碰撞的可能性。因此不仅TCP有重传机制数据链路层也有只不过机制比较简单。
另外的同一链路中设备越多数据碰撞的概率越高。因此数据链路层引入了 交换机Switch 以解决这个问题。
交换机是工作在数据链路层的设备其主要作用是划分碰撞域如下 主机A-F处于同一个局域网只不过这个局域网被交换机分成了左右两个区间。左右两边完全可以正常通信只需要由交换机转发即可。交换机的主要作用是 当主机A和主机B同时向链路中发送数据时发生碰撞此时交换机识别到数据碰撞不会将碰撞产生的垃圾数据转发到右边这样一来右边的通信就不会受到左边碰撞的影响大大降低了碰撞率。 当左边的主机A和主机B正常通信时交换机检测到通信的数据与右边无关也不会转发到右边从而减少右边链路的载荷降低碰撞率。 4. ARP协议 通信前发送方通常只知道目标主机的IP地址和端口号不知道同一局域网下目标设备的MAC地址而在同一链路中通信必须清楚对端的MAC地址。因此在查路由表得到下一跳的IP地址后要先进行一个IP地址转MAC地址的过程再向同一局域网中的下一跳主机发送消息。 ARP协议Address Resolution Protocol就是用于IP地址转换MAC地址。 ARP通俗来讲就是一个“询问”的过程知道目标IP在局域网中群发询问目标IP对应的MAC地址与IP对应的目标主机会返回它的MAC地址。 这就像老师知道张三同学的学号但不知道他的名字要通过学号得知这位同学的名字就在班级群里问“哪位同学的学号是XXX你的名字是什么?”其它同学对比自己的学号不匹配就不回答张三同学比对后学号匹配就会回答“老师我是张三”。 ARP协议也是数据链路层协议但在MAC协议之上。
ARP数据报的格式
ARP是MAC帧的一种类型MAC帧报头的类型字段填为0806只不过规定了MAC数据部分的字段格式。 各个字段解释
硬件类型指链路层网络类型1表示以太网协议类型指要转换的地址类型0x0800表示IP地址硬件地址长度物理地址长度以太网MAC地址是6字节协议地址类型要转换的地址长度IP地址是4字节opop字段为1表示ARP请求op字段为2表示ARP应答。
一次ARP的过程主机A想要得知主机C的MAC地址 主机A向主机C发送ARP请求格式如下图此时主机A并不知道主机C的MAC地址只知道其IP地址因此将目的MAC地址设为全1目的IP设为ipC。帧类型ARP的0806, op是1表示ARP请求 主机A的ARP请求广播到局域网中所有主机都会收到。 对于其它非目标的主机收到这个MAC数据帧后发现MAC报头的类型字段为0806得知该数据帧是ARP数据帧便由MAC协议交付给上层的ARP协议。ARP协议解开报头查看op字段确定为ARP请求这是固定过程每个主机都可能会收到ARP请求或应答必须先判断是请求还是应答再作进一步处理。然后判断目标IP是否为本机的IP地址检测到不是在APR层丢弃数据包。对于主机C收到数据帧判断是ARP请求在ARP层判断目标IP为本机IP则表示这个ARP请求想要获取本机的MAC地址。紧接着进行应答的构建 主机C构建ARP应答格式如下图然后广播到链路中 主机A收到ARP数据帧其它主机丢弃应答这里MAC报头中的目标地址已经确定主机通过判断MAC报头中的目标地址决定是否在MAC层丢弃而不用交付给ARP层。主机A收到了一个发送给自己的ARP应答提取源MAC地址macC和源IP地址ipC得到了一组IP地址和MAC地址的映射关系。主机A终于得到了主机C的MAC地址可以正常通信了
细节 ARP层收到一个ARP数据帧解开报头后第一步必然是查看op字段。 op为1表示该帧为ARP请求执行动作判断目标IP是否为本机IP是则表示该ARP请求想要获取本机的MAC地址紧接着构建并发送应答否则在APR层丢弃该请求。op为2表示该帧为ARP应答不用考虑是否丢弃因为已经再MAC层完成执行动作提取源MAC地址和源IP地址得到一组IP和MAC地址映射关系 ARP请求的丢弃发生在ARP层ARP应答的丢弃发生在MAC层。
ARP缓存 如果每次发送数据时都要进行ARP映射MAC地址不仅效率低还会导致链路中存在大量的ARP数据帧增加链路的负担因此就有了ARP缓存。 每个主机都会维护一张ARP缓存表用于存储历史建立的IP与MAC地址的映射关系。 数据链路层收到IP数据包后根据目标IP地址查看ARP缓存表若表中存在与目标IP地址对应的映射关系则直接打包MAC帧发往目标主机否则进行ARP过程。缓存表中的表项有过期时间(一般为20分钟)如果20分钟内没有再次使用某个表项则该表项失效下次还要发ARP请求来获得目的主机的硬件地址。
Linux下通过arp指令查看ARP缓存表。 ENDING…