目录
- 前言
- 7.1 链路层概述
- 7.2 MAC地址的基本概念
- 7.3 以太网帧结构
- 7.4 以太网帧结构
- 7.5 以太网帧报文数据结构
- 7.6 发送以太网数据帧
- 7.7 接收以太网数据帧
- 7.8 虚拟局域网VLAN源码分析
- 7.8.1 以太网标准帧和VLAN帧的区别
- 7.8.2 以太网发送带VLAN数据帧
- 7.8.3 以太网接收带VLAN数据帧
- 7.8.4 开启VLAN功能ETHARP_SUPPORT_VLAN
- 7.9 一个硬件映射到多个IP
ethernet.c
和ethernet.h
文件 。原文:李柱明博客园7.1 链路层概述简单概述 。
相关术语:
- 结点(node):运行链路层协议的设备 。如主机、路由器、交换机和WiFi接入点 。
- 链路(link):沿着通信路径连接相邻结点的通信信道 。
- 数据帧:链路层每一帧数据包size有限,如果上层传递下来的数据报size超出链路层每帧能接收的数据size极限,就会分片 。(这里不细说)
- 为IP模块发送和接收IP数据报;
- 为ARP模块发送ARP请求和接收ARP应答;
- 为RARP发送RARP请求和接收RARP应答 。
数据报从源主机传输到目标主机时,数据报必须通过端到端路径上的各段链路才能达到目标主机 。
各种端到端的链路层协议由具体的端到端决定,链路层设备只需要把数据报封装在自己的链路层帧并转发到下一个端设备即可 。
7.2 MAC地址的基本概念MAC Address(Media Access Control Address),亦称为EHA(Ethernet Hardware Address)、硬件地址、物理地址(Physical Address) 。
在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC位址 。
所以一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC位址 。
MAC地址组成(48字节):前3个字节表示组织唯一标志符(OUI)+后3个字节由厂家自行分配的扩展标识符 。
7.3 以太网帧结构IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)参考图:
7.4 以太网帧结构IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)参考图:
文章插图
目标MAC地址(6字节):这个字段包含目标网卡的MAC地址,当一个网卡收到一个以太网数据帧 。
- 如果该数据帧的目标地址是网卡自身的MAC地址或者是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;
- 如果收到了其他MAC地址的帧,则将该数据帧丢弃 。
- 0x0800:表示当前数据帧中装载的数据为IPV4数据报 。
- 0x0806:表示当前数据帧中装载的数据为ARP数据报 。
- 0x0835:表示当前数据帧中装载的数据为RARP数据报 。
- 注意:
- Ethernet II和IEEE802.3的帧格式主要的不同点在于前者定义的2字节的类型,而后者定义的是2字节的长度 。类型字段和长度字段互斥,但是类型值和长度值是不相同的,以此来区别两种帧格式 。
- 如果该字段值大于等于0x0600时,表示数据包中的协议类型,反之表示长度 。
- 长度字段表示它后续数据的字节长度,但不包括CRC校验码 。
经验总结扩展阅读
- 梅花北服务区在哪个省
- 西瓜汁弄到衣服上能洗掉吗
- 埃菲尔铁塔和胡夫金字塔谁高
- 白茶有哪些品种 中国白茶五大知名品种排行榜
- 硫磺皂可以洗头发吗
- 新鲜香菇怎样算变质
- 一个泡芙的热量等于几碗饭
- 晚立秋热死牛有科学依据吗
- 卧鸡蛋怎么才能不飞
- 金铲铲之战黯灵龙技能是什么