以太网协议
这个协议即规定了数据链路层,同时也规定了物理层的内容。平时使用到的网线,其实也叫做“以太网线”(遵守以太网协议的网线)。
以太网帧格式
以太网数据帧 = 帧头 + 载荷 + 帧尾。
帧头:目的地址、源地址、类型。但此处的地址不是使用 IP 地址来表示,而是使用 MAC 地址,这是一个物理地址,和 IP 地址是两个独立的地址体系。
MAC 地址是使用 6 个字节来表示的,并且不像 IP 地址是动态分配的,而是在 网卡 出厂的时候就已经设置好的了。在当时大佬研发初代协议栈的时候,研发网络层协议和研发数据链路层协议的大佬是两伙人,结果就各自研发出了一套地址体系(类似牛顿和莱布尼兹都发明了微积分一样)。因此这两套地址就相互配合各司其职,如果使用一套地址体系也能完成这个转发过程。
IP 地址描述的是:从哪来到哪去;MAC 地址描述的是:当前阶段的任务。
类型是0800:表示这是一个普通的以太网数据帧,载荷部分是一个完整的 IP 数据包。
类型是0806:载荷部分表示一个 ARP 报文。ARP 表示数据链路层另外的一个协议:在路由器 / 交换机里建立一个表,里面能够表示出 IP 和 MAC 之间的映射关系(类似于 hash 表)。
类型是8035:载荷部分表示一个 RARP 报文。
认识 MTU
MTU 表示一个数据链路层的数据帧所能承载数据的最大长度(载荷的长度)。
正是这个 MTU 引起了 IP 协议的分包合组包,因为大多数情况下,数据链路层的 MTU 都比 IP 协议的 64KB 要小。这是因为跟使用的物理介质、以及数据链路层使用的协议有很大联系。