【计算机网络】详解数据链路层数据帧&Mac地址&ARP协议

一、以太网帧

"以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容 。例如:规定了网络拓扑结构,访问控制方式,传输速率等;例如以太网中的网线必须使用双绞线,传输速率有 10M、100M、1000M等。以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等。

源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址) ,长度是48位,是在网卡出厂时固化的,帧协议类型字段有三种值,分别对应 IP、ARP、RARP;帧末尾是 CRC 校验码

二、Mac地址

MAC 地址用来识别数据链路层中相连的节点;长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。在网卡出厂时就确定了,不能修改mac 地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置 mac 地址)。 IP 地址描述的是路途总体的起点和终点,MAC 地址描述的是路途上的每一个区间的起点和终点IP地址的主要作用是用于网络层寻址,它允许数据包在互联网上从一个网络传输到另一个网络。它是全球唯一的,能够在全球范围内进行通信。MAC地址的主要作用是用于链路层寻址,即在同一网络内部进行通信。它是局域网内设备的唯一标识,确保数据包能够准确地发送到目标设备。
MAC地址的前24位(即前三个字节)通常代表组织唯一标识符(OUI),它是由IEEE(电气和电子工程师协会)分配给制造商的。OUI用于标识生产网络设备的制造商。MAC地址的后24位(即后三个字节)是由制造商为其生产的每个设备分配的,以确保每个设备的MAC地址在全球范围内都是唯一的

三、ARP协议

ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议。ARP 协议建立了主机IP地址和MAC地址的映射关系。在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。

3.1、ARP协议的工作流程

下面举一个例子:源主机发出 ARP 请求,询问"IP 地址是 192.168.0.1 的主机的硬件地址是多少",并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播);目的主机接收到广播的 ARP 请求,发现其中的IP地址与本机相符,则发送一个 ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。 arp先广播,再单发

3.2、ARP数据报格式


注意到源 MAC 地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。以太网帧需要源MAC地址和目的MAC地址来确保数据包能够正确地被发送和接收。这两个地址在以太网帧的头部被明确指定。ARP报文本身也需要包含源主机的MAC地址和目的主机的MAC地址(或未知时的全F填充)。这是为了在网络层建立IP地址和MAC地址的映射关系。由于ARP报文通常被封装在以太网帧中发送,因此源MAC地址和目的MAC地址在以太网帧的头部和ARP报文的相应字段中都会出现。这种设计既满足了链路层的需求,也符合ARP协议的工作原理。

  • 硬件类型指链路层网络类型,1为以太网。
  • 协议类型指要转换的地址类型,0x0800为IP地址。
  • 硬件地址长度对于以太网地址为6字节。
  • 协议地址长度对于和IP地址为4字节。
  • op 字段为1表示ARP请求,op字段为2表示ARP应答。
相关推荐
加瓦点灯7 分钟前
当你的对象结构拒绝修改时,访问者模式是如何破局的?
后端
IT 小旋风17 分钟前
Linux centos 7 常用服务器搭建
linux·服务器·centos
sszdlbw18 分钟前
文件包含漏洞的小点总结
服务器·安全·web安全·php
听风说雨的人儿21 分钟前
HTTP 1.1长连接问题
网络·网络协议·http
全马必破三22 分钟前
http知识点
服务器·网络协议·http
追逐时光者26 分钟前
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
后端·.net
橘猫云计算机设计33 分钟前
基于ssm的食物营养成分数据分析平台设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
后端·python·信息可视化·数据挖掘·数据分析·django·毕业设计
Source.Liu34 分钟前
【学Rust写CAD】24 扫描渐变(sweep_gradient.rs)
后端·rust
Asthenia041240 分钟前
MP:从Wrapper到源码分析
后端
上理考研周导师44 分钟前
【虚拟仪器技术】Labview虚拟仪器技术应用教程习题参考答案[13页]
服务器·开发语言