数据链路层的作用是互联设备之间传送和识别的数据帧.代表性协议有:以太网,MTU,ARP.
目录
1. 认识以太网
数据链路层的封装,分用,是基于以太网的数据格式(包含了源mac和目的mac).
认识MAC地址:
- 硬件的网络传输数据,必须使用mac地址表示下一个设备,体现为网络传输时,每一跳都会使用mac地址.
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
2. MTU
1)概念
处于数据链路层的一个规定,超过一定数据大小的数据包,要进行分片(分包)之后,再进行发送.
2)对IP协议的影响
基于IP协议的三个字段:
如果数据报超过规定大小,封装时,分片(设置三个字段的值),分用时基于以上三个字段还原.
3)对UDP协议的影响
这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.
分片后,任意一个丢失,整个udp的数据报就丢包了.
4)对TCP协议的影响
分片后,任意一个丢失,整个tcp的数据报就丢包,但是发送端有超时重传机制可以重发.相对udp来说,对TCP的影响是有限的,因为TCP是可靠传输.
了解MSS: MSS是TCP的单个数据的最大消息长度. MTU规定了具体的大小,但包含了IP和TCP首部的大小,MSS去掉了首部,只是真实的数据大小.
3. ARP协议
1)作用
主机和路由器中都有一个ARP缓存表,记录了IP和MAC的映射关系,可以通过IP找MAC.
2)以源主机浏览器请求www.baidu.com为例:
源主机发送时的封装: 源IP,目的IP; 源端口,目的端口; 源MAC,目的MAC.
目的ip和目的端口我们知道,但是如何确定目的MAC呢? 先要知道发送数据到下一个设备是哪个?
- ①判断目的地是否为一个网段?使用子网掩码,分别和源ip,目的ip位与运算,得出是否为同一个网段.
- ②不在一个网段,我(源主机不知道如何发,交给路由器)
- ③源主机通过本机ARP缓存表,查找基于路由器IP找对应的MAC
- ④发送的数据报目的MAC:路由器MAC