Bootstrap

数据链路层

首先,我们来补充一些前置知识:

一.以太网

        什么是以太网?其不是一种具体的网络,是指一种技术标准,既包含了数据链路层的内
容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等

以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN 等

下面我们来看看以太网的帧格式:

目的地址和源地址指的是Mac地址,千万别认为是IP地址

类型:包含以下三种:IP、 ARP、 RARP

CRC:是指帧尾部校验码



二.MAC和MTU

上面我们已经讲过MAC是链路层的地址,下面我们来详细了解下:

MAC 地址也叫 网卡的硬件地址,长度是 48 位,是在网卡出厂时固化的,用来识别数据链路层中相连的节点,长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示
在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址)
学到这里我们也可以对MAC地址和IP地址进行对比了:

1.在网络传输过程中MAC地址是指一个区间中的起点和终点,而IP地址则是整体的起点和终点

2.IP地址是4字节32位的,而MAC地址是6字节48位的

3.两者所属的层次不同,IP地址主要是网络层方面的,而MAC地址则位于链路层

认识完MAC,下面我们再来了解下MTU,这个之前我们是见识过的:

简单来说:MTU可以看成一种最大限制,即以太网网络传输过程中一次最小为46字节,最大为1500字节,因此1500被认为是以太网中最大传输单元,即MTU,要注意的是:不同的网络的MTU是不同的,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU了,则需要对数据包进行分片

补充:MTU是指整体,非单指有效载荷

下面我们看看MTU对各方面的影响:

1.MTU对IP的影响:

如果IP数据包过大,由于MTU有限,是需要分包的,那么问题来了:分包传输计算机是如何知道数据是否传输完毕?如何判断那些是一个数据包分包的呢?

实际上是将一个个IP数据包的头部IP协议设置为相同的,这样就可以识别为相同的数据包了

在ip协议中存在三个标志位,第二位为0表示为允许分片,当第三位同时为1时,表示分片的最后一个数据包,当到达对端时将这些小包, 会按顺序重组, 拼装到一起返回给传输层,一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负责重新传输数据
2.MTU对UDP的影响:

一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部) - 8(UDP 首部)), 那么就会在网络层分成多个 IP 数据报.这多个 IP 数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就
意味着, 如果 UDP 数据报在网络层被分片, 整个数据被丢失的概率就大大增加了
3.MTU对TCP的影响:

TCP 的一个数据报也不能无限大, 还是受制于 MTU.,TCP 的单个数据报的最大消息长度, 称为 MSS(Max Segment Size),TCP 在建立连接的过程中, 通信双方会进行 MSS 协商,最理想的情况下, MSS 的值正好是在 IP 不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU),双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值,然后双方得知对方的 MSS 值之后, 选择较小的作为最终 MSS,MSS 的值就是在 TCP 首部的 40 字节变长选项中(kind=2)
补充:我们可以通过ifconfig命令来查看ip 地址, mac 地址, 和 MTU



三.ARP协议

以太网中帧除了正常的,其实还有ARP和RARP两种:

下面我们来重点讲解下ARP:

ARP作用:主要是用于不知道目的主机的MAC地址,通过ARP请求和应答来得到目的主机的MAC地址,即得到主机IP和MAC地址的映射关系

主要步骤:发送广播到局域网中每一台主机,如果是所问主机,在链路层存在ARP层,可以处理ARP协议请求,然后返回MAC地址

补充:请求报文中目的MAC地址为FF:FF:FF:FF:FF:FF

每台主机都缓冲了一个ARP表,可任意通过arp -a查看

下面是arp协议格式:

下面我们来讲解下参数:

硬件类型:1指的是以太网

协议类型指要转换的地址类型,0x0800 为 IP 地址
硬件地址长度对于以太网地址为 6 字节
协议地址长度对于和 IP 地址为 4 字节
op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

 

最后,感谢大家的支持!!!

;