【Linux网络与网络编程】11.数据链路层mac帧协议ARP协议

news2025/4/20 21:12:08

前面在介绍网络层时我们提出来过一个问题:主机是怎么把数据交给路由器的?那里我们说这是由数据链路层来做的。

网络上的报文在物理结构上是以mac帧的形式流动的,但在逻辑上是以IP流动的,IP的流动是需要mac帧支持的。

数据链路层解决的是相邻节点间的通信问题。

1. 以太网

1.1 认识以太网

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

1.2 以太网的帧格式

报头各部分的功能:

源地址和目的地址:指网卡的硬件地址(mac 地址)

类型:该字段有三种值,分别对应 IP、ARP、RARP

CRC:校验码

关于mac地址

mac 地址用来识别数据链路层中相连的节点,它的长度为 48 位( 6 个字节),一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。它在网卡出厂时就确定了,不能修改。

mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址,可能会冲突;也有些网卡支持用户配置 mac 地址)。

2. MTU

2.1 认识MTU

MTU 相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层产生的限制。以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,若 ARP 数据包的长度不够 46 字节就要在后面补填充位。最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 则需要对数据包进行分片。

我们可以通过ifconfig 命令查看 ip 地址、mac 地址和 MTU。

2.2 MTU对IP协议的影响

由于数据链路层 MTU 的限制,这使得对于较大的 IP 数据包要进行分包。

2.3 MTU对UDP协议的影响

一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部) - 8(UDP 首部)) 那么就会在网络层分成多个 IP 数据报。这多个 IP 数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着:如果 UDP 数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

2.4 MTU对TCP协议的影响

TCP 的一个数据报也不能无限大,还是受制于 MTU。TCP 的单个数据报的最大消息长度为 1460(1500 - 20(IP首部) - 20(TCP首部)),称为 MSS(Max Segment Size)。 TCP 在建立连接的过程中,通信双方会进行 MSS 协商。最理想的情况下就是MSS 的值正好是在 IP 不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU)。

双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值,然后双方得知对方的 MSS 值之后,选择较小的作为最终 MSS。MSS 的值就是在 TCP 首部的 40 字节变长选项中(kind = 2)。

MSS和MTU的关系:

3. 局域网通信原理和交换机

3.1 局域网通信原理示意图

局域网中,任何时刻都只允许一台机器向网络中发送数据,如果有多台同时发送的话,会发生数据干扰,我们称之为数据碰撞。所有发送数据的主机要进行碰撞检测和碰撞避免

如果碰撞了,涉及的主机该怎么办呢?

两台主机都会休眠一下,然后将数据重发(数据链路层也有重发机制)。

在没有交换机的情况下,一个局域网就是一个碰撞域

从系统的角度来看,局域网就是一个临界资源,碰撞检测和碰撞避免就是保护临界资源,使得任何时刻都只有一台主机发送消息的策略和机制。

所以在一个局域网(碰撞域)中主机自然是越少越好,如果主机过多就要引入交换机了。

3.2 交换机

交换机的核心问题就是通过对局域网中的mac帧进行分析,从而划分碰撞域。

4. APR协议

曾经在介绍网络层时说到过,数据转发的时候用到的是IP地址,但是在局域网通信时我们使用的可是mac地址啊,所以这也就注定需要在局域网中提供一种将IP地址转化为mac地址的能力——ARP协议。

4.1 基本原理

源主机发出 ARP 请求,询问 “IP 地址是 192.168.0.1 的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播)。目的主机接收到广播的 ARP 请求后若发现其中的 IP 地址与本机相符,则将自己的硬件地址填写在应答包中,并发送 ARP 应答数据包给源主机。

总结来说就是:先广播,后单发。

每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址。

C:\Users\caryo>arp -a

接口: 172.18.154.182 --- 0xe
  Internet 地址         物理地址              类型
  169.254.169.254       cc-d8-1f-28-db-2f     动态
  172.18.145.119        ac-19-8e-6c-c5-8c     动态
  172.18.148.251        ac-50-de-88-fa-45     动态
  172.18.150.140        64-d6-9a-9a-37-1f     动态
  172.18.152.44         c4-d0-e3-64-de-35     动态

4.2 ARP协议报头

可以看出ARP协议是 mac 帧协议的上层协议,但是也属于数据链路层。

报头各部分的功能:

• 硬件类型:指链路层网络类型,1 为以太网

协议类型:指要转换的地址类型,0x0800 为 IP 地址

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

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

op 字段:为 1 表示 ARP 请求,为 2 表示 ARP 应答

4.3 ARP的具体过程

如果路由器知道IP对应的MAC地址,那就可以直接发送,如果不知道,就要使用ARP协议获取目的MAC。

主机会通过广播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址。目的MAC地址为全F(FF:FF:FF:FF:FF:FF)。局域网内的所有主机都会收到这个ARP请求,网卡识别目的MAC地址为全F,广播数据,需要向上交付,再根据帧类型识别是ARP请求/响应。所以向上交付给ARP协议。ARP协议 先看op字段,如果为ARP请求,再看目的IP地址,除目的主机外,其他主机发现不是给自己的,就在ARP层丢弃报文。如果 ARP 请求包中的目标 IP 地址与自己的 IP 地址一致,那么这个设备就将自己的 MAC 地址塞入 ARP 响应包返回给主机。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2338991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lottie深入玩法

A、json文件和图片资源分开 delete 是json资源名字 /res/lottie/delete_anim_images是图片资源文件夹路径 JSON 中引用的图片名,必须与实际图片文件名一致 B、json文件和图片资源分开,并且图片加载不固定 比如我有7张图片,分别命名1~7&…

热门与冷门并存,25西电—电子工程学院(考研录取情况)

1、电子工程学院各个方向 2、电子工程学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、电子科学与技术25年相较于24年上升20分 2、信息与通信工程、控制科学与工程、新一代电子信息技术(专硕)25年相较于24年下降25分 3、25vs24推…

Warcraft Logs [Classic] [WCL] BOSS ID query

Warcraft Logs [Classic] [WCL] BOSS ID query 所有副本BOSSID查询 https://wowpedia.fandom.com/wiki/DungeonEncounterID#Retail IDNameMapInstanceIDPatch227High Interrogator GerstahnBlackrock Depths230228Lord RoccorBlackrock Depths230229Houndmaster GrebmarBlackro…

架构师面试(三十一):IM 消息收发逻辑

问题 今天聊一下 IM 系统最核心的业务逻辑。 在上一篇短文《架构师面试(三十):IM 分层架构》中详细分析过,IM 水平分层架构包括:【入口网关层】、【业务逻辑层】、【路由层】和【数据访问层】;除此之外&a…

基于若依框架前后端分离的项目部署

文章目录 单项目的部署项目目录后端打包上传前端打包上传配置nginx服务器打开防火墙完成 两个项目的部署两个项目介绍后端打包并上传前端打包并上传nginx配置服务器端口开放完成 腾讯云服务器 之 环境搭建 单项目的部署 项目目录 后端打包上传 查看端口号 在ruoyi-admin的appl…

黑马Java基础笔记-1

JVM,JDK和JRE JDK是java的开发环境 JVM虚拟机:Java程序运行的地方 核心类库:Java已经写好的东西,我们可以直接用。 System.out.print中的这些方法就是核心库中的所包含的 开发工具: javac(编译工具)、java&…

面向新一代扩展现实(XR)应用的物联网框架

中文标题: 面向新一代扩展现实(XR)应用的物联网框架 英文标题: Towards an IoT Framework for the New Generation of XR Applications 作者信息 Joo A. Dias,UNIDCOM - IADE,欧洲大学,里斯本&…

pcl各模块

参考资料: https://github.com/Ewenwan/MVision/blob/master/PCL_APP/1_%E7%82%B9%E4%BA%91%E6%BB%A4%E6%B3%A2filter.md 点云库PCL各模块学习 语雀 各模块依赖关系: 模块: common pcl_common中主要是包含了PCL库常用的公共数据结构和方…

Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障

数据库异常断电,然后启动异常,我接手该库,尝试recover恢复 SQL> recover database; ORA-10562: Error occurred while applying redo to data block (file# 2, block# 63710) ORA-10564: tablespace SYSAUX ORA-01110: ???????? 2: H:\TEMP\GDLISNET\SYSAUX01.DBF O…

2025MathorcupC题 音频文件的高质量读写与去噪优化 保姆级教程讲解|模型讲解

2025Mathorcup数学建模挑战赛(妈妈杯)C题保姆级分析完整思路代码数据教学 C题:音频文件的高质量读写与去噪优化 随着数字媒体技术的迅速发展,音频处理成为信息时代的关键技术之一。在日常生活中,从录音设备捕捉的原始…

.net core web api 数据验证(DataAnnotations)

目录 一、什么是 DataAnnotations? 二、扩展验证逻辑(自定义验证器) 一、什么是 DataAnnotations? DataAnnotations 是一组特性(Attributes),用于在模型类上定义验证规则。主要用于属性级别的…

【工具-Krillin AI】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~

Krillin AI 是全能型音视频本地化与增强解决工具。这款简约而强大的工具,集音视频翻译、配音、语音克隆于一身,支持横竖屏格式输出,确保在所有主流平台(哔哩哔哩,小红书,抖音,视频号&#xff0c…

ICPR-2025 | 让机器人在未知环境中 “听懂” 指令精准导航!VLTNet:基于视觉语言推理的零样本目标导航

作者:Congcong Wen, Yisiyuan Huang, Hao Huang ,Yanjia Huang, Shuaihang Yuan, YuHao, HuiLin and Yi Fang 单位:纽约大学阿布扎比分校具身人工智能与机器人实验室,纽约大学阿布扎比分校人工智能与机器人中心,纽约大学坦登工程…

Shiro-550 动调分析与密钥正确性判断

一、Shiro 简介 Apache Shiro是一个开源安全框架,用于构建 Java 应用程序,提供身份验证、授权、加密和会话管理等功能。 二、Shiro-550(CVE-2016-4437) 1、漏洞原理 Shiro 在用户登陆时提供可选项 RememberMe,若勾选…

Python制作简易PDF查看工具PDFViewerV1.0查找功能优化

原文说明 为不破坏原文结构,因此功能优化不在原文中维护了。关于这款工具原文请通过下面链接访问。Python制作简易PDF查看工具PDFViewerV1.0 这款小工具基本功能已经可以作为一款文档浏览器使用,但还有一些美中不足的地方,本文将介绍对文本查…

20250419将405的机芯由4LANE的LVDS OUT配置为8LANE的步骤

20250419将405的机芯由4LANE的LVDS OUT配置为8LANE的步骤 2025/4/19 15:38 查询格式YUV/RGB 81 09 04 24 60 FF 90 50 00 00 FF 查询辨率帧率 81 09 04 24 72 FF 90 50 01 03 FF 查询LVDS mode : Singel output/Dual output 81 09 04 24 74 FF 90 50 00 00 FF 配置405的机…

从0开发一个unibest+vue3项目,使用vscode编辑器开发,总结vue2升vue3项目开始,小白前期遇到的问题

开头运行可看官网 链接: unibest官网 一:vscode中vue3代码显示报错标红波浪线 去查看扩展商店发现一些插件都弃用了,例如h5的插件以及vue老插件 解决办法:下载Vue - Official插件(注意:横杠两边是要加空格的&#xff…

HTML5好看的水果蔬菜在线商城网站源码系列模板4

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品信息1.4 新闻资讯1.5 联系我们1.5 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/147264262 HTML5好看的水果…

多人五子棋联机对战平台 测试报告

目录 项目介绍 测试用例设计 部分功能测试示例 自动化测试 测试范围 排除范围 自动化测试目录​编辑 执行全部自动化测试用例 性能说明 总结 性能测试 结果分析 测试总结 项目介绍 该项目基于WebSocket实现实时通信,采用SSM框架构建在线五子棋多人联机…

欣佰特携数十款机器人相关前沿产品,亮相第二届人形机器人和具身智能行业盛会

2025年4月15日至16日,备受关注的第二届中国人形机器人与具身智能产业大会已在北京成功举行。作为国内前沿科技及产品服务领域的重要参与者,欣佰特科技携众多前沿产品精彩亮相,全方位展示了其在人形机器人与具身智能领域的创新产品。 在本次大…