以太网协议是通过网线/光纤进行通信。这和通过wifi(无线),通过移动流量(4G/5G)通信不一样。以太网,横跨数据链路层和物理层
一.以太网数据帧格式
包括了帧头+载荷(IP数据报)+帧尾。
1.目的地址 源地址
分别都是六个字节。这里的地址不是IP地址,而是mac地址。由于mac地址是6个字节,所以比IP地址大了2^16倍,所以即使IP地址不够用了,mac地址也是充足的。一般来说,每一格网卡出厂时,其中的mac地址就写死了,不能够修改。所以mac地址也可以作为一台网络设备的身份标识。一个网卡对应一个mac地址
cmd中查看mac地址,通常是用16进制表示的,每个字节之间用-或:来分割
mac和IP的各自用途
IP协议立足全局,完成整个通信路径的规划过程
以太网关注局部,强调响铃两个设备之间的通信过程
比如我要回老家,就是从A到B。传输层关注的就是A和B这两个起始位置;网络层关注的是A->C->B还是A->D>B,也就是要选择哪一条路径,但是无论选哪条,IP数据报中的源IP和目的IP都是不变的;数据链路层则关注相邻节点如何转发。假设在网络层选择了A>C>B这条路,那么数据链路层就会确定下来:A>C做飞机,C>B坐火车。
然后在A>C过程中,数据报的源IP目的IP分别是AB,而原mac目的mac则是A C;在C>B过程中数据报的源IP目的IP分别是AB,而原mac目的mac则是C B
2.类型
类型描述了载荷中的数据是啥样的数据。类型字段占两个字节
也就是描述了上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。若字段为0x0806,表示ARP协议;字段为0x8035,表示RARP
ARP与RARP两种协议不是传输业务数据的,而是辅助转发的协议。我们知道,像交换机这样的设备,收到以太网数据帧后,要进行转发(就是刚才举的例子,A>c>B,到了C之后要进行转发),此过程需要能够根据mac地址来判断走哪个网口(这个网口指的就是物理意义上插网线的扣,而不像IP协议中路由器走哪个网络接口是抽象概念)。那么具体如何转发?交换机内部就有一个数据结构转发表(就相当于是一个简单的hash表),表如何构造?就是通过ARP协议来生成的
3.数据
放的就是要传输的有效数据
4.CRC
其实就是校验和。
二.MTU
1.认识MTU
MTU相当于发快递时对包裹尺寸的限制,这个限制时不同的数据链路对应的物理层产生的限制。
以太网帧中的数据长度最小规定为46字节,最大不超过1500字节。
然而ARP数据报的长度不够46字节,只有28个字节,所以要在后面补填充位18个字节
同理RARP也是28字节,也要补18位。
如果一个数据包从以太网路由到拨号链路上,数据包的长度大于拨号链路的MTU了,就需要对数据包进行分片
不同的数据链路层标准的MTU是不同的
2.MTU对IP协议的影响
由于数据链路层MTU的限制(最小就得是46字节,最大也就1500字节),就要对较大的IP数据包进行分包(因为IP协议中数据上限是64kb,也就是1024*64=2^16字节,所以大的IP数据包会远超1500字节)。
分包就是将一个大的数据包分为若干个小的数据包,每个小包的16位标识(id)都是相同的;
每个小包的三位标志位字段中,第二位是0标识允许分片,第三位表示结束标记(0就是说当前不是最后一个包,1表示当前就是最后一个包);
到达对端后就会对这些小包进行重组,拼装到一起后再返回给传输层;