Linux网络-数据链路层,MAC帧解析,ARP协议

news2024/11/15 13:25:20

目录

数据链路层VS网络层 

以太网概念

以太网的帧格式(报文格式)(也可以称之为MAC帧)

MAC地址的概念

MAC帧格式

局域网通信原理

MTU

MTU说明

MTU对IP协议的影响

MTU对UDP协议的影响

MTU对TCP协议的影响

ARP协议

ARP协议的作用

ARP数据报格式

ARP请求+ARP应答的过程

ARP欺骗


数据链路层VS网络层 

IP:在复杂的网络环境中确定一个合适的路径。

而主机B到路由器F,F到G,G到H等等的局域网数据转发的问题,都是由数据链路层在这个局域网中完成转发任务的。

以太网概念

"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的 内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;

以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

故上方所说的局域网转发时一个节点到另一个节点的转发,本质都是在以太网中进行的。

以太网是一种局域网技术。

以太网的帧格式(报文格式)(也可以称之为MAC帧)

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

MAC地址的概念

MAC地址用来识别数据链路层中相连的节点(标识数据链路层中的主机的唯一性~)

长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(所以说数据链路层是驱动层~)

IP地址描述的是路途总体的 起点 和 终点;

MAC地址描述的是路途上的每一个区间的起点和终点;(解耦)

MAC帧格式

目的地址和源地址都是MAC地址,类型标识了数据链路层进行解包之后,将有效载荷交给上层的谁,比如交给IP层(则有效载荷就是IP报文),还是ARP层(后面说ARP协议)

报头定长,可以进行解包,向上分用依据的就是类型字段的内容。

局域网通信原理

局域网内通信时,不管是两个主机之间,还是主机与路由器之间,都需要数据链路层封装MAC帧,来进行局域网转发。

这个过程就像在教室内,任意两个人进行交流一样(大声交流,不是小声交流),这里比如H1发送数据帧后,这个局域网中所有主机都会收到这个MAC帧, 由数据链路层进行解析,发现目的MAC地址不是自己,则就会直接丢弃。

因为可能存在两个主机同时发送数据帧的情况,故MAC帧数据在以太网中传输时可能发生碰撞,此时,会有碰撞避免算法,比如发送方知道自己发出的MAC帧发生了碰撞,就随机等待若干时长之后再进行重传(所以严格来说,除了TCP有可靠性,数据链路层也有可靠性策略存在)

故,局域网内主机越少越好(更小概率发生数据碰撞),局域网内节点发送数据帧时,数据帧越短越好~

所以,回归到之前讲IP时,说存在MTU限制,就是因为数据链路层因为物理原因有限制,这里其实就是根本原因(好像~)

在网络转发过程中,目的IP不会变,MAC帧的源MAC和目的MAC会变。

MTU

MTU说明

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层产生的限制。

以太网帧中的数据长度规定最小46字节,最大1500字节(这里的数据其实就是IP报文!或者ARP报文)

最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

MTU对IP协议的影响

由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包(分片).

MTU对UDP协议的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.(这里的数据指的当然就是应用层数据啦~)

这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在 网络层被分片, 整个数据被丢失的概率就大大增加了.

MTU对TCP协议的影响

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);(指的是TCP的有效载荷,即应用层数据)

TCP在建立连接的过程中, 通信双方会进行MSS协商.

最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).

双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值. 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP首部的40字节变长选项中(kind=2);#TCP/IP# TCP头部选项功能详解_arvin_xiaoting的博客-CSDN博客_tcp选项


注意,之前讲MAC帧时格式时,发现MAC帧里的类型字段,不仅仅标识着IP,还有ARP,也就是MAC帧的有效载荷不一定为IP报文,还有可能是ARP报文。

同时,在局域网中,当某一个路由器得到数据包,由目的IP决定转发给下一跳X路由器时,由数据链路层封装MAC帧,但是,此时X路由器的MAC地址是不知道的,因此要封装MAC帧,进而转发给X路由器,必须先知道其MAC地址。ARP协议就是用来解决此问题的。

ARP协议

在同一网段中,通过目标节点IP,获取对方的MAC地址  -- ARP协议,地址解析协议。(局域网协议)

 ARP协议是一种介于以太网MAC层和网络层之间的协议。

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.  (通过目标主机IP地址获取目标主机的MAC地址(在同一局域网中))

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址; 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢 弃; 因此在通讯前必须获得目的主机的硬件地址;(通过ARP协议)

ARP数据报格式

 硬件类型指链路层网络类型,1为以太网;协议类型指要转换的地址类型,0x0800为IP地址; 硬件地址长度对于以太网地址为6字节; 协议地址长度对于和IP地址为4字节;

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

ARP请求+ARP应答的过程

假设主机A的IP为IP_A,MAC地址为MAC_A,主机D的IP为IP_D,MAC地址未知。此时AD主机在同一局域网中,由主机A发起ARP请求,再由主机D发起ARP应答,从而由主机A获取主机D的MAC地址。

 主机A由ARP层封装ARP请求,向下交付给MAC层,封装MAC帧。因为此时不知道D的MAC地址,故其中的目标以太网地址设为全F,表示这是一个广播地址(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)。在局域网中,每一个主机都会收到这个广播MAC帧,此时MAC层必须处理:先解包,然后向上交付,因为每个主机的MAC层都无法直接获知这个MAC帧是否是发送给自己的。根据0806,交付给arp层,arp层收到后,看到op是1,也就是arp请求。再看目的IP地址,发现是发给自己的(若不是自己就直接丢弃此报文)

主机D再进行构建ARP应答,此时op为2,且目标IP,目标以太网地址,发送端IP,发送端以太网地址都已知。此时,这不再是一个广播,而是一个定向的局域网MAC帧。但是,局域网中每一个主机仍会收到这个MAC帧,其他主机收到之后,在MAC层比对目标MAC地址,不是发给自己的直接丢弃。主机A收到之后,解包,0806,交付给上层的arp层。自此主机A获取到了主机D的MAC地址,可以在主机A内部构建此ip:mac的映射。

总结:

1. arp请求和arp应答的过程为:1. 先广播arp请求(目的MAC地址为全F) 2. 再定向1v1发送arp应答。(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播

2. 局域网中,任何一个主机收到arp时,可能是一个应答,也可能是一个请求。看arp报文的op字段

3. arp请求的非接收主机在arp层丢弃。arp应答的非接收主机在MAC层丢弃。(广播和定向导致)

4. arp请求成功之后,请求方会暂时将IP : MAC地址的映射关系暂时保存下来。因为IP地址不是固定的,故并不是永久保存~

5. arp的过程并非只发生在目标主机的最终子网处,在网络传输的路径过程中随时可能发生。

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

ARP欺骗

通过不断发送arp应答,欺骗主机A和B,修改A存储的B的MAC地址,B存储的A的MAC地址。(http/https 

arp攻击:让某主机上不了网:给目标主机发送arp应答,ip为主机所连路由器IP,MAC地址为一个错误的。这样这个主机发出的MAC帧,路由器就收不到了,因为其中的目的MAC地址是错误的。

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

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

相关文章

【算法题解】41. 二叉树的中序遍历

这是一道 简单 题 https://leetcode.cn/problems/binary-tree-inorder-traversal/ 题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 示例 2: 输入&#…

[易语言][部署]使用易语言部署paddleocr的onnx模型api接口推理直接调用

易语言如何部署paddleocr模型,如今paddleocr模型广泛被使用各种编程,为了能在易语言上使用因此开发一个通用接口,开发基本思路如下: 可见我们并没有使用什么通信协议或者命令行之类的方法,这种直接封装接口比其他方法更…

TCP 学习笔记

Win R 打开控制台输入CMD 打开小黑窗, 输入ipconfig 查询本机地址 “外网IP是全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的,而内网的IP地址每个人的都不一样…

(四)WPF - 布局

一、布局过程 WPF 布局包括两个阶段:一个测量阶段和排列阶段 在测量阶段,容器遍历所有子元素,并询问子元素它们所期望的尺寸。在排列阶段,容器在合适的位置放置子元素。(每个元素都被其父元素告知它自己的尺寸是多少…

【软件设计师暴击考点】下午题高频考点暴击系列

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

电脑选购必备的六大技巧

目录 1、CPU方面 2、显卡方面 3、电脑主板方面 4、内存和硬盘方面 5、电脑机箱和电源方面 6、装机过程要全程参与 今天小编给大家分享电脑选购组装必备的六大技巧,希望对大家实际选购、组装电脑提供一些帮助! 买电脑要注意哪些问题 1、CPU方面 C…

Qt Model-View架构领悟

1.架构的选择 1.1是否需要委托 模型视图架构图如下所示,模型视图架构源于MVC模式:模型(Model)是应用对象,表示数据;视图(View)是模型的用户界面,用以显示数据&#xff…

springboot基础(78):Freemarker模板生成word文档

文章目录 前言如何使用Freemakrer生成word文档1. 制作模板2. 编写工具类 遇到的问题下载失败如何只生成文件不下载 前言 利用Freemarker模板生成word文档。示例,将左侧的模板生成为右侧的文档并下载。 如何使用Freemakrer生成word文档 1. 制作模板 1.编辑一份a…

实现注册与登录(企业级)

目录 实现注册超级管理员功能(持久层) 一、判定系统是否已经绑定超级管理员 二、编写保存用户记录的代码 三、编写查询用户ID的代码 实现注册超级管理员功能(业务层) 一、获取OpenId 二、编写注册新用户的业务代码 掌握 R…

tuple 和数组区别

元组(tuple)和数组(array)都是 Python 中用于存储多个值的数据结构,但它们在实现和使用上有一些区别。 元组是不可变的,而数组是可变的。即元组一旦创建,其内容就不能被修改,而数组…

高数笔记1(第一章函数 极限 连续 第一节函数第二节极限-极限的概念与性质)

目录 第一章 函数 极限 连续第一节 函数第二节 极限一、极限的概念与性质数列的极限例1例2 函数的极限极限的性质(保号性重点 有界性)例12例13例14 函数极限与数列极限的关系例15 第一章 函数 极限 连续 第一节 函数 判断有界要用函数的绝对值&#xff…

Toolformer:可以教会自己使用工具的语言模型

Toolformer:可以教会自己使用工具的语言模型 摘要Introduction现有大模型的局限处理办法本文的idea Approach样例化API调用执行API调用筛选API调用模型微调 实验局限 论文地址点这里 摘要 语言模型(LMs)呈现了令人深刻的仅使用少量的范例或…

2022(一等奖)D1649基于多源卫星遥感的干旱区农作物耗水精细模拟

作品介绍 1 研究背景及目标 1.1 研究区概况 本次研究的研究区位于甘肃省张掖市内。张掖市位于甘肃省西部,河西走廊中段,属干旱和半干旱两种气候类型,其特点是夏季短而酷热,冬季长而严寒,干旱少雨,且降水分…

MySQL-SQL存储过程/触发器详解(下)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

ubuntu20.4服务器搭建ftp并连接(阿里云服务器)

首先在控制台添加ftp防火墙规则: 然后进入服务器安装ftp(安装vsftpd): sudo apt update sudo apt install vsftpd使用以下命令检查其状态: sudo service vsftpd status如果FTP服务器未运行,请使用以下命令启动它&am…

强化学习:时序差分算法 TD-learning

例子引入 首先,我们考虑简单的平均估计计算: w E [ X ] wE[X] wE[X],根据 RM算法 计算过程如下: 接着上面的例子,我们现在考虑一个较为复杂的问题,估计函数 v ( X ) v(X) v(X) 的平均值,根据 …

3.数据模型

文章目录 前言1.对象(Object)1.1 标准对象1.2 自定义对象1.2.1 创建一个property(房产)自定义对象1.2.2创建一个Favorite(收藏夹)自定义对象1.2.3 创建对象的注意事项 1.3 字段1.3.1 为property object创建…

迅镭激光参展CESC2023中国(江苏)国际储能大会,共话储能产业发展趋势!

2023年6月14日 中国(江苏)国际储能大会 暨智慧储能技术及应用展览会 在南京国际博览中心隆重开幕 迅镭激光携多款新能源解决方案 精彩亮相A区5C21展位 聚焦新能源电池绿色智能制造 共话储能行业创新发展之路 本次展会为期三天(6月14-16日) 诚邀广大行业同仁莅临参观交流! 本届大…

全志V3S嵌入式驱动开发(spi-nor驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 所谓的spi nor驱动,其实就是让spi nor芯片,在linux kernel 5.2.y启动后可以被正确地识别到。前面有一篇文章,我…

POSIX信号量(基于生产消费模型)

目录 🍊一、信号量 1.1之前代码的不足之处 1.2什么是信号量 🍊二、信号量接口 🍊三、信号量版本的生产消费模型 ①单生产单消费 ②多生产多消费 🍊四、线程池 🍊五、线程安全的单例模式 🍊六、其他常…