当前位置: 首页 > article >正文

计算机网络•自顶向下方法:链路层编址、ARP协议、以太网

链路层编址

MAC地址(Media Access Control Address)

  • MAC地址是链路层编址的标准,广泛应用于以太网、Wi-Fi等网络技术。

  • 它是一个48位的地址,通常用12个十六进制数字表示,格式如下:

    00:1A:2B:3C:4D:5E

  • MAC地址分为两部分:

    • 前24位(前6个十六进制字符):表示制造商识别码(OUI,Organizationally Unique Identifier),由IEEE分配给设备制造商
    • 后24位(后6个十六进制字符):表示该设备在其制造商分配的MAC地址池中的唯一序号

每个适配器有一个MAC地址

在这里插入图片描述

MAC地址类型

帧的目的MAC地址有三种类型:

  • 单播地址:适配器的MAC地址,地址最高比特为0
  • 多播地址:标识一个多播组的逻辑地址,地址最高比特为1
  • 广播地址:ff:ff:ff:ff:ff:ff

网络适配器仅将发送给本节点的帧交给主机:

  • 目的地址为适配器MAC地址的单播帧
  • 所有广播帧
  • 指定接收的多播帧

若将适配器设置成混收模式,适配器将收到的所有帧交给主机

MAC地址和IP地址

世界上先有MAC地址,后有IP地址

在TCP/IP(互联网)出现之前,只使用MAC地址在单个的物理网络中寻址

为什么有了MAC地址,还需要IP地址?

  • MAC地址是扁平结构的,无法在因特网范围内快速确定接口的位置
  • IP地址是有结构的,可以在因特网范围内快速确定网络接口的位置

IP地址与MAC地址没有固定的关联关系:

  • MAC地址与网卡绑定,与节点在哪个子网无关
  • IP地址与所在子网有关,与网卡没有关系

ARP协议(地址解析协议,Address Resolution Protocol)

为什么需要ARP协议

在计算机网络中,尤其是在以太网(Ethernet)或其他局域网中,通信需要依赖两种地址类型:

  • IP地址:用于网络层的通信,帮助设备跨越不同的网络进行定位(如192.168.1.1)。
  • MAC地址:用于数据链路层的通信,帮助设备在本地网络内唯一标识,并决定数据帧的目标(如00:1A:2B:3C:4D:5E)。

这两种地址是不同层次的地址,IP地址工作在网络层,而MAC地址则工作在数据链路层。虽然在网络中,设备通常知道目标设备的IP地址,但当设备需要通过数据链路层进行通信时,它需要知道目标设备的MAC地址。ARP协议正是为了解决这种IP地址与MAC地址之间的映射问题

ARP报文格式

在这里插入图片描述

  • 硬件类型:硬件接口类型。对于以太网,该值为“1”
  • 协议类型:高层协议地址类型。对于IP地址,该值为 ( 0800 ) 16 (0800)_{16} (0800)16
  • 操作:ARP请求为1,ARP响应为2
  • 在以太网上,ARP报文封装在以太帧中传输

地址解析的过程

A想知道B的MAC地址:

  • A构造一个ARP请求,在发送方字段填入自己的MAC地址和IP地址,在目标字段填入B的IP地址

  • A将ARP请求封装在广播帧中发送

  • 每个收到ARP请求的节点用目标IP地址与自己的IP地址比较,地址相符的节点进行响应(B响应)

  • B构造一个ARP响应,交换发送方与目标字段内容,在发送方硬件地址字段填入自己的MAC地址,修改操作字段为2

  • B将ARP响应封装在单播帧(目的地址为A的MAC地址)中发送

在这里插入图片描述

ARP缓存(ARP Cache)

ARP缓存是网络设备(如路由器、计算机等)用来存储已解析的IP地址与MAC地址映射的临时表。缓存存储着设备最近查询到的IP地址和相应的MAC地址,从而避免频繁地发送ARP请求,减少网络负载和延迟。

  • 每个节点在内存中维护一个地址映射(绑定)表,称ARP缓存
  • 每次发送数据报前先查询ARP缓存,若找不到则发送ARP请求,并在收到ARP响应后将地址映射缓存起来
  • ARP缓存中的信息,在超时(一般为15~20分钟)后删除
主动学习(Proactive Learning)

主动学习是一种提高ARP效率的策略,指的是设备通过主动查询网络中其他设备的ARP信息,而不是被动等待ARP请求的回复。这种方法在交换机和路由器等设备中尤其常见,它有助于减少ARP请求和响应的数量。

从ARP请求中获取地址绑定信息:

  • 每个节点可以收到全部的ARP请求报文,可将发送节点的地址映射缓存到自己的ARP表中

节点在启动时自动广播自己的地址映射:

  • 节点A在启动时主动广播一个ARP请求,在目标字段内填入自己的IP地址
  • 收到ARP请求的节点将A的地址映射缓存起来
  • 若A收到ARP响应,报告IP地址重复错误

以太网

以太帧结构

在这里插入图片描述

  • Preamble(前导码):
    • 7个10101010字节,后跟一个10101011字节,用于在发送方和接收方之间建立时钟同步
    • 一般不计入以太帧的长度
  • Dest Address/Src Address:目的/源MAC地址
  • Type(2字节): 指出Data所属的高层协议(如IP、ARP等),每个协议有一个编号
  • Data:46~1500字节,不足46字节填充至46字节
  • CRC(4字节): 对dest addr.、src addr.、type和data四个字段计算得到的CRC码

无连接、不可靠的数据传输

无连接:

  • 发送方网卡与接收方网卡之间没有握手

不可靠:

  • 接收方网卡不发送确认
  • 接收方网卡丢弃CRC错误的帧
  • 依靠上层协议(TCP或应用)进行错误恢复

http://www.kler.cn/a/466530.html

相关文章:

  • 重庆大学软件工程复试怎么准备?
  • 第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分
  • vue3+Echarts+ts实现甘特图
  • 解决Linux切换用户后的命令提示符为-bashxx$的问题
  • 鸿蒙应用开发(2)
  • 『SQLite』详解运算符
  • U盘格式化工具合集:6个免费的U盘格式化工具
  • 【记录】Angr|Angr 标准库函数替换怎么看哪些库函数被Angr支持?
  • Couchbase是不是MPP数据库
  • 学生管理系统springboot+论文源码调试讲解
  • 【Seed-Labs 2.0】Cross-Site Scripting (XSS) Attack Lab (Web Application: Elgg)
  • Python:爬虫基础《爬取红楼梦》
  • Redis Hash哈希
  • 使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋
  • ABAQUS三维Voronoi晶体几何建模
  • 多台DHCP服务器时的问题讨论
  • Windmill 实战:快速构建自动化工作流和用户界面
  • Windows安装了pnpm后无法在Vscode中使用
  • AWS S3文件存储工具类
  • PyTorch AMP 混合精度中grad_scaler.py的scale函数解析
  • 使用函数求e的近似值(PTA)C语言
  • 【硬件测试】基于FPGA的2FSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
  • 阻抗(Impedance)、容抗(Capacitive Reactance)、感抗(Inductive Reactance)
  • 【Docker】:Docker容器使用
  • 野火直播 5.9.5 | 频道丰富的电视直播软件,支持港澳台频道和快速换台
  • 【深度学习】Java DL4J基于 LSTM 构建新能源预测模型