【计算机网络】数据链路层

文章目录

  • 1. 以太网
  • 2. 以太网帧格式
  • 3. 局域网通信原理2
    • 碰撞问题
    • 交换机的使用
  • 4. ARP协议
    • 为什么要使用ARP协议?
    • 概念
    • ARP数据报的格式
    • ARP请求与应答
    • ARP欺骗

1. 以太网

以太网是一种局域网的技术标准


【计算机网络】数据链路层_第1张图片

局域网通信的原理故事版本,在网络基础中讲过了,点击查看:局域网通信原理


所以每个人都要有它的地址
如 :在教室中,每一名同学要进行互相通信时,都需要有一个唯一的名字
每台主机都有一张网卡, 都配有一个 MAC地址,所以每台主机都有自己的名字

2. 以太网帧格式

【计算机网络】数据链路层_第2张图片

mac的报头为 目的地址、源地址、类型、CRC 相加
中间的数据为 mac的有效载荷

目的地址:表示这个数据帧是给谁的
源地址: 表示发送方的mac地址是谁


通过2字节的类型 来保证 将有效载荷向上交付给那一个协议

若类型填充 0800,则表示有效载荷为 IP数据报
若类型填充 0806,则表示有效载荷为 ARP请求或应答

3. 局域网通信原理2

假设有一台主机A,其mac地址 为 macA
主机A 想通过局域网 给 主机B 发送 mac帧
就需要封装mac地址


【计算机网络】数据链路层_第3张图片

主机A就在局域网中构建了一个mac帧,将其从主机A发送到网络中了
因为使用的是同一个局域网,所以主机B、主机C、路由器R 都收到了
此时的收到,只是数据链路层收到


【计算机网络】数据链路层_第4张图片

以B为例,主机B就要进行报头和有效载荷的分离
识别到报头字段,发现数据帧是要去macD,而自己的mac地址为macB
所以主机B会直接将该报文丢弃掉,并不会向上层交付
同理,路由器R、主机C 也会以同样的方式将报文丢弃


【计算机网络】数据链路层_第5张图片

主机B进行报头和有效载荷的分离
识别到报头字段,发现数据帧是要去macD,而自己的mac地址为macD
所以主机D会向上层交付


【计算机网络】数据链路层_第6张图片

主机D可以给主机A做出响应,并将其从主机D发送到网络中了
同样 主机A、 主机B、路由器R、主机C 都收到了对应的保文

在进行报文和有效载荷分离时,发现数据帧是要去macA,而只有主机A的mac地址为macA
主机A会向上层交付


碰撞问题

如:当 老师 向张三询问 作业是否做完时,整个教室乱轰轰的,有相当一部分人在大声聊天,导致张三并没有听见老师的询问


【计算机网络】数据链路层_第7张图片

局域网是一份公享的资源,当主机A给主机B发送消息时,可同时存在 主机C 给主机D发送消息
这两条消息就会发生互相干扰

在局域网中,只能有 一台主机 给另一台主机 发送数据帧,否则可能会发生数据碰撞的问题

把任何一个时刻,只允许一个执行流在进行访问的共享资源,叫做临界资源
所以局域网是一种临界资源

交换机的使用

【计算机网络】数据链路层_第8张图片

在同一个局域网中,当 主机A发送消息时,主机B也在发送消息即两者发生碰撞
由于有 交换机的存在,并不会影响右侧主机C和主机D

交换机的作用为 : 划分碰撞域

4. ARP协议

为什么要使用ARP协议?

【计算机网络】数据链路层_第9张图片

主机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地址

【计算机网络】数据链路层_第10张图片

如:老师在教室里要给学生上课, 要想提问,就必须要知道在座同学的姓名
但学校提供的是一份 学生的 学号列表
所以只好 先在教室中 询问学号是谁,此时在教室中的所有同学全都收到了
同学们都和自己的学号做对比,发现不是自己的,就直接丢弃
此时一名叫张三的同学 对老师进行了应答


从学号转成姓名,先在教室中询问,所有同学收到,只有一名同学处理,其他同学丢弃,
一名同学对比发现自己后,将学号转化为姓名,再将姓名告诉老师
这个过程 叫做 ARP的过程

学号相当于 IP地址 姓名 相当于 mac地址


ARP数据报的格式

【计算机网络】数据链路层_第11张图片

硬件类型 为 数据链路层类型 ,若为1,则是以太网

协议类型 为 要转换的地址类型 , 一般为0x000,表示IP地址

硬件地址长度 对于 以太网地址 为 6字节

协议地址长度 对于IP地址 为 4字节

OP 字段为1时 表示 ARP请求,OP字段为2时,表示 ARP应答

若当前为 ARP请求时,则不知道 目的mac地址,只知道目的IP地址


ARP请求与应答

假设 A为路由器,收到一个IP报文,该保文的 目的IP 为 IPF(想要将报文送到 主机F处)

通过路由器 构建 ARP请求
首先 获取F的mac地址,再根据对方的mac地址 封装 mac帧,发送数据

【计算机网络】数据链路层_第12张图片

由于并不清楚 目的mac地址 ,所以使用 FFFFFF 替代


【计算机网络】数据链路层_第13张图片

ARP在mac帧的上层,所以要向下交给mac帧
就需要添加 mac的报头


【计算机网络】数据链路层_第14张图片

由于不知道目的mac地址,所以设置为FFFFFF


主机A就在局域网中构建了一个mac帧,将其从主机A发送到网络中了
每一台主机都会收到 该数据帧


【计算机网络】数据链路层_第15张图片

以主机D为例,主机D收到数据帧,将报头和有效载荷分离


【计算机网络】数据链路层_第16张图片

发现报头中的目的mac地址为FFFFFF,所以主机C要去处理数据帧
因为帧类型为0806,属于ARP的请求或应答
所以将有效载荷交给自己的ARP层

先看OP ,发现为1,则为ARP的请求
主机D的目的IP地址为 IPD,不是有效载荷中的目的IP,所以就将ARP报文丢弃


【计算机网络】数据链路层_第17张图片

使用同样的方法,将数据帧送到主机F处
先看OP ,发现为1,则为ARP的请求
主机D的目的IP地址为 IPD,是有效载荷中的目的IP
所以主机F会构建 ARP应答


【计算机网络】数据链路层_第18张图片

将ARP应答的数据帧 发送到网络中,主机D依旧会接收到对应的数据帧
通过将报头和有效载荷分离
首先看OP,发现为2,所以是 ARP应答
再发现mac帧的目的mac地址为macA
所以就直接将数据帧丢弃

主机A发现自己的mac地址 与 报头的目的mac地址相同,就由主机A接收到

ARP欺骗

【计算机网络】数据链路层_第19张图片

假设有一个不怀好意的主机M,接入局域网中,其IP为IPM,mac地址为 macM
首先 主机M 向 主机A 构建 假的ARP应答
告诉主机A,我是IPR,我的mac地址是macM

此时主机A 就会构建 IPR和 macM 的 映射关系
因为ARP 的目的mac地址 要保持更新,所以就刷新一下
主机A就认为 两者的对应关系 是 IPR 与 macM
通过目的mac地址 macM 找到了对应的主机M


【计算机网络】数据链路层_第20张图片

主机M 向 路由器R 构建 假的ARP应答
告诉路由器R,我是IPA,我的mac地址是macM

此时路由器R 就会构建 IPA和 macM 的 映射关系
同理,路由器R就认为 两者的对应关系 是 IPA 与 macM
通过目的mac地址 macM 找到了对应的主 机M

主机M就变成了局域网的中间人,整个过程称为 ARP欺骗

你可能感兴趣的:(计算机网络,计算机网络,网络,智能路由器)