网络之数据链路层
数据链路层
数据链路层目标
TCP/IP提供了一种能力, 将数据可靠的从 B 跨网络送到 C 主机, 这期间是由无数次局域网转发构成的, 比如 主机B 到 路由器F 就是一次局域网通信的问题, 而数据链路层就是研究数据是如何在局域网内部转发的.
也就是说, 应用层是进行数据的处理, 传输层如TCP是为了可靠性保证, 网络层是解决路径选择和路由的问题, 研究出主机 B 为了和主机 C 通信该走哪里的问题.
而数据链路层解决了某一个区间(局域网)内具体的通信问题, 也就是它并不关心我为什么要这么走:
以太网
"以太网"(Ethernet) 不是一种具体的网络, 而是一种技术标准. 在现实网络中, 以太网是最常见的数据链路层协议, 此外数据链路层协议还有令牌环网, 无线LAN等
以太网是一种广播型网络, 它采用 MAC 地址 进行设备寻址, 并使用 CSMA/CD(载波监听多路访问/冲突检测) 机制来控制设备对共享信道的访问。
以太网既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
以太网帧格式
MAC帧有两种格式, 分别是 EtherType 和 IEEE 802.3 . 现代网络主要使用 EtherType, IEEE 802.3 主要用于老旧或特殊应用场景. 下面是EtherType格式:
1. 如何将报头和有效载荷进行分离?
由于MAC帧报头里没有可变的选项, 因此采用的是固定长度的报头, 可以直接进行分离.
类型
2. 数据如何向上交付(分用)?
原理和IP的分用原理一样, 它们的报头中都有帧协议类型字段, 比较常见的有:
0x0800 | IPv4 | 该帧承载 IPv4 数据包 |
0x0806 | ARP | 该帧承载 ARP(地址解析协议)报文 |
0x86DD | IPv6 | 该帧承载 IPv6 数据包 |
0x8100 | 802.1Q VLAN | 该帧使用 VLAN 标签 |