以太网是一种局域网的技术标准
局域网通信的原理故事版本,在网络基础中讲过了,点击查看:局域网通信原理
所以每个人都要有它的地址
如 :在教室中,每一名同学要进行互相通信时,都需要有一个唯一的名字
每台主机都有一张网卡, 都配有一个 MAC地址,所以每台主机都有自己的名字
mac的报头为 目的地址、源地址、类型、CRC 相加
中间的数据为 mac的有效载荷
目的地址:表示这个数据帧是给谁的
源地址: 表示发送方的mac地址是谁
通过2字节的类型 来保证 将有效载荷向上交付给那一个协议
若类型填充 0800,则表示有效载荷为 IP数据报
若类型填充 0806,则表示有效载荷为 ARP请求或应答
假设有一台主机A,其mac地址 为 macA
主机A 想通过局域网 给 主机B 发送 mac帧
就需要封装mac地址
主机A就在局域网中构建了一个mac帧,将其从主机A发送到网络中了
因为使用的是同一个局域网,所以主机B、主机C、路由器R 都收到了
此时的收到,只是数据链路层收到
以B为例,主机B就要进行报头和有效载荷的分离
识别到报头字段,发现数据帧是要去macD,而自己的mac地址为macB
所以主机B会直接将该报文丢弃掉,并不会向上层交付
同理,路由器R、主机C 也会以同样的方式将报文丢弃
主机B进行报头和有效载荷的分离
识别到报头字段,发现数据帧是要去macD,而自己的mac地址为macD
所以主机D会向上层交付
主机D可以给主机A做出响应,并将其从主机D发送到网络中了
同样 主机A、 主机B、路由器R、主机C 都收到了对应的保文
在进行报文和有效载荷分离时,发现数据帧是要去macA,而只有主机A的mac地址为macA
主机A会向上层交付
如:当 老师 向张三询问 作业是否做完时,整个教室乱轰轰的,有相当一部分人在大声聊天,导致张三并没有听见老师的询问
局域网是一份公享的资源,当主机A给主机B发送消息时,可同时存在 主机C 给主机D发送消息
这两条消息就会发生互相干扰
在局域网中,只能有 一台主机 给另一台主机 发送数据帧,否则可能会发生数据碰撞的问题
把任何一个时刻,只允许一个执行流在进行访问的共享资源,叫做临界资源
所以局域网是一种临界资源
在同一个局域网中,当 主机A发送消息时,主机B也在发送消息即两者发生碰撞
由于有 交换机的存在,并不会影响右侧主机C和主机D
交换机的作用为 : 划分碰撞域
主机B想要到达路由器G
若从主机B到路由器F,再从路由器F到路由器G
从主机B到路由器F,源mac地址 是 主机B 目的mac地址是路由器F
从路由器F到路由器G,源mac地址 是 路由器F 目的mac地址是路由器G
在这个过程中,源mac地址和 目的mac地址 是不同的
IP地址不变的,只知道对方的IP地址,如何根据对方的IP地址 转化成对方的mac地址 就需要借助 ARP协议
ARP协议在数据链路层
作用为 根据IP地址 转化为 对应的mac地址
如:老师在教室里要给学生上课, 要想提问,就必须要知道在座同学的姓名
但学校提供的是一份 学生的 学号列表
所以只好 先在教室中 询问学号是谁,此时在教室中的所有同学全都收到了
同学们都和自己的学号做对比,发现不是自己的,就直接丢弃
此时一名叫张三的同学 对老师进行了应答
从学号转成姓名,先在教室中询问,所有同学收到,只有一名同学处理,其他同学丢弃,
一名同学对比发现自己后,将学号转化为姓名,再将姓名告诉老师
这个过程 叫做 ARP的过程
学号相当于 IP地址 姓名 相当于 mac地址
硬件类型 为 数据链路层类型 ,若为1,则是以太网
协议类型 为 要转换的地址类型 , 一般为0x000,表示IP地址
硬件地址长度 对于 以太网地址 为 6字节
协议地址长度 对于IP地址 为 4字节
OP 字段为1时 表示 ARP请求,OP字段为2时,表示 ARP应答
若当前为 ARP请求时,则不知道 目的mac地址,只知道目的IP地址
假设 A为路由器,收到一个IP报文,该保文的 目的IP 为 IPF(想要将报文送到 主机F处)
通过路由器 构建 ARP请求
首先 获取F的mac地址,再根据对方的mac地址 封装 mac帧,发送数据
由于并不清楚 目的mac地址 ,所以使用 FFFFFF 替代
ARP在mac帧的上层,所以要向下交给mac帧
就需要添加 mac的报头
由于不知道目的mac地址,所以设置为FFFFFF
主机A就在局域网中构建了一个mac帧,将其从主机A发送到网络中了
每一台主机都会收到 该数据帧
以主机D为例,主机D收到数据帧,将报头和有效载荷分离
发现报头中的目的mac地址为FFFFFF,所以主机C要去处理数据帧
因为帧类型为0806,属于ARP的请求或应答
所以将有效载荷交给自己的ARP层
先看OP ,发现为1,则为ARP的请求
主机D的目的IP地址为 IPD,不是有效载荷中的目的IP,所以就将ARP报文丢弃
使用同样的方法,将数据帧送到主机F处
先看OP ,发现为1,则为ARP的请求
主机D的目的IP地址为 IPD,是有效载荷中的目的IP
所以主机F会构建 ARP应答
将ARP应答的数据帧 发送到网络中,主机D依旧会接收到对应的数据帧
通过将报头和有效载荷分离
首先看OP,发现为2,所以是 ARP应答
再发现mac帧的目的mac地址为macA
所以就直接将数据帧丢弃
而主机A发现自己的mac地址 与 报头的目的mac地址相同,就由主机A接收到
假设有一个不怀好意的主机M,接入局域网中,其IP为IPM,mac地址为 macM
首先 主机M 向 主机A 构建 假的ARP应答
告诉主机A,我是IPR,我的mac地址是macM
此时主机A 就会构建 IPR和 macM 的 映射关系
因为ARP 的目的mac地址 要保持更新,所以就刷新一下
主机A就认为 两者的对应关系 是 IPR 与 macM
通过目的mac地址 macM 找到了对应的主机M
主机M 向 路由器R 构建 假的ARP应答
告诉路由器R,我是IPA,我的mac地址是macM
此时路由器R 就会构建 IPA和 macM 的 映射关系
同理,路由器R就认为 两者的对应关系 是 IPA 与 macM
通过目的mac地址 macM 找到了对应的主 机M
主机M就变成了局域网的中间人,整个过程称为 ARP欺骗