数据链路层(以太网):
所有网络层数据都必须封装在链路层以帧为单位进行转发。
链路一般分为两种:
1、点到点链路:即仅支持2个接口的链路,PPP , DHLC,无虚链路层地址区别不同的接口
2、广播型链路(MA多路访问) : 允许链路上存在2个以上的接口,所以需要区别不同的接口,那么规定每个以太网接口都要有一个全球唯一但链路有效的MAC地址。
以太网的MAC地址:
总共48bit组成 分为24 bitsOUI 24bits由供应商分配
MAC地址有两部分组成,分别是供应商代码和序列号。其中前24位 代表该供应商代码,由IEEE管理和分配。剩下的24位序号由厂商自己分配
以太网帧格式
Ethernet_II帧格式
绝对部分应用使用的帧格式
Ethernet_II帧类型值大于等于1536(0x600),以太网数据帧的长度在64-1518字节之间
每一层都把上一层当成自己的数据,链路层则把网络层当成自己的数据,网络层把传输层当自己的数据,以此类推,逐层封装。
帧的大小最小为64字节,最大为1518字节。帧的数据大小为46~1500字节。不能小于这个区间,否则这个数据不能成帧。
IEEE802.3帧格式
用于底层协议使用的帧格式
IEEE802.3帧长度字段值小于等于1500(0x05DC)
帧格式:
Length/Type >= 1536(Ox0600) Ethernet_ll (绝大部分应用传输数据使用的帧格式)
Length/Type <= 1500(Ox05DC) IEEE802.3 (底层协议使用的帧格式)
帧长度字段大于或等于1536的是Ethernet_II的帧格式
帧长度字段小于或等于1500的是IEEE802.3的帧格式
例:
下面就是抓包工具抓出来的数据包,帧的长度是316,所以是IEEE802.3格式的数据帧。(帧长度字段小于或等于1500)
地址解析协议(ARP):
ARP协议:是网络层协议,通过eth II 帧进行工作。
为什么需要ARP地址解析协议?
1、因为我们网络设备在第一次交换数据的时候,没有对方MAC地址。所以我们需要使用ARP来获取MAC地址。
2、发送数据,要在数据链路上转发数据,需要目的的MAC地址。所以我们需要使用ARP来获取目的MAC地址。
3、唯一性,因为IP地址可修改的逻辑地址,仅仅只能做到范围内唯一。而MAC地址,是不可修改的,且是全球唯一性的。
所以,我们要确定数据在网络上转发给唯一的目标设备,就需要IP地址和MAC地址共同作用。英尺我们需要ARP来获取目标MAC地址,来使得我们确定设备的唯一性。
作用:根据已知的IP地址解析获得其对应的MAC地址。没有ARP地址解析协议,互联网就无法正常的工作。
在链路层中,帧的组成需要源MAC地址和目标MAC地址,若没有目标MAC地址,若只知道源IP和目标IP则不能成帧,所以就需要ARP地址解析协议根据已知的IP地址或得相对应的MAC地址,数据帧才能组成,数据才能正常通信。
ARP作用步骤:
请求目标MAC地址
封装内容:
1、硬件类型:以太网
2、协议类型:IPv4(0x0800)
3、操作的动作:请求(1)/回应(2)
4、发送者信息:MAC地址 和 IP地址
5、接受者信息:MAC地址 和 IP地址
ARP代理:解决广播无法到达ARP请求
免费ARP:解决Ip地址冲突的检测技术
免费arp:
1、用于地址冲突检测,当接口地址变更时可以用免费arp做地址冲突检测,测试同广播域是否存在相同的IP地址。
2、用于刷新其他主机的ARP缓存,接口MAC地址变更时发送免费ARP,用于刷新链路其他接口的ARP缓存。
IP地址变化和MAC地址变化,都会触发免费arp的行为。但是处理机制不一样。
原理:当修改接口地址时例如修改成1.1.1.3,该接口就会用arp发送广播问谁是1.1.1.3,若无回应,则代表地址无冲突,若出现回应(应答是单播),就代表该广播域出现相同地址,该IP地址存在冲突。
代理arp:
PC在没有设置网关时,访问其他的网段的主机,对目标地址发起arp请求。
如果路由器开启了arp代理,并拥有DIP(目标地址)的路由信息,则回应arp应答。
目标MAC地址没有怎么办?
1、查自身的ARP缓存表(有缓存时间,时间过了就会清空缓存表),是否存在DIP的对应MAC地址信息
例:ARP缓存表
2、如果不存在目标IP地址对应的MAC信息,则发送ARP请求报文。
以下是ARP请求报文:
3、如果ARP缓存表中存在目标地址(DIP)的MAC地址,则直接发送数据
什么是单播帧?什么是组播数据帧?什么是广播帧?
单播:
DMAC地址第8bit等于0的就是单播帧
一对一有明确的目标叫单播 网络原则 只要不是自己的就不理
组播:
DMAC地址的第8bit等于1就是组播帧
分类过程 只争对特地范围的人访问
广播:
DMAC地址全为1的就是广播帧
知道范围内,不知道目标是谁,发送一份数据 一对多