Linux--数据链路层(macarp)

news2024/9/21 16:42:09

目录

1.认识以太网

 2.以太网帧格式

 3.模拟一次局域网通信(交换机)

4.认识 MAC 地址

对比理解 MAC 地址和 IP 地址

5.认识MTU

MTU 对 IP 协议的影响

 MTU 对 UDP 协议的影响

MTU 对于 TCP 协议的影响

6.ARP协议 

ARP 协议的作用及原理

ARP 数据报的格式


1.认识以太网

数据链路层:用于两个设备(同一种数据链路节点(同一局域网))之间进行传递

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

 2.以太网帧格式

以太网的帧格式如下所示:

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

        6位目标地址,源地址,mac地址就是6字节

1.如何解包?

        定长报头:前10字节和后4字节去掉,剩下的就是数据了。

2.如何分用?

        类型字段:表示上层是什么协议,这样就能很好的把数据交给上层

 3.模拟一次局域网通信(交换机)

 下面就是一个局域网,有各种主机,每个主机都有自己的mac地址。在发送数据的时候,(src会带上自己的mac地址,dst是目的机的mac地址,data:发送的数据)会将发送的通过数据网络协议栈变成数据帧,然后通过局域网发送到局域网中,局域网的主机都能收到,主机会通过mac地址判断是不是自己的消息,如果是自己的消息,就会接收处理消息,最终以同样的方式发送回去。这就采用mac地址在局域网中进行通信了。

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

        如果多个主机在局域网中,是不可避免的。 任何时刻, 只允许一台机器向网络中发送数据,那么在系统观念当中,局域网其实是一种临界资源!如果发送碰撞了就进行检查,重发,以维持这个通信

  • 没有交换机的情况下, 一个以太网就是一个碰撞域
  • 局域网通信的过程中, 主机对收到的报文确认是否是发给自己的, 是通过目标mac 地址判定

        如果存在交换机的话,比如第一次发送数据,A向F进行发送,由于交换机是存在两个端口的,那么i0端口就会记录A的mac地址,此时交换机就知道A在i0一侧,但他此时不知道F在哪侧,交换机会把消息转发到i1侧的主机,若此时每台主机都进行了发送消息,那么交换机就会知道每台主机的位置。若此时A向E发送了消息,F向C发送了消息,那么交换机不会把交给E的消息给i1一侧了,交给F的消息也不会被转发给i0一侧了,这样就避免了两台主机的数据碰撞了,因为他们两个的数据在不同的区域内,所以交换机的作用就是划分碰撞域,以提高网络性能和可靠性

4.认识 MAC 地址

• MAC 地址用来识别数据链路层中相连的节点;
• 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
• 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址

对比理解 MAC 地址和 IP 地址

• IP 地址描述的是路途总体的 起点 和 终点;
• MAC 地址描述的是路途上的每一个区间的起点和终点;

5.认识MTU

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

• 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;
• 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
• 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU了,则需要对数据包进行分片(fragmentation);
• 不同的数据链路层标准的 MTU 是不同的;
 

MTU 对 IP 协议的影响

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

• 将较大的 IP 包分成多个小包, 并给每个小包打上标签;
• 每个小包 IP 协议头的 16 位标识(id) 都是相同的;
• 每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0);
• 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
• 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负责重新传输数据;

 MTU 对 UDP 协议的影响

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

MTU 对于 TCP 协议的影响

• TCP 的一个数据报也不能无限大, 还是受制于 MTU. TCP 的单个数据报的最大消息长度, 称为 MSS(Max Segment Size);
• TCP 在建立连接的过程中, 通信双方会进行 MSS 协商.
• 最理想的情况下, MSS 的值正好是在 IP 不会被分片处理的最大长度(这个长度
仍然是受制于数据链路层的 MTU).
• 双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值.
• 然后双方得知对方的 MSS 值之后, 选择较小的作为最终 MSS.
• MSS 的值就是在 TCP 首部的 40 字节变长选项中(kind=2);

 

6.ARP协议 

        虽然我们在这里介绍 ARP 协议, 但是需要强调, ARP 不是一个单纯的数据链路层的协
议, 而是一个介于数据链路层和网络层之间的协议

ARP 协议的作用及原理

        报文要交付给下一跳结点,必须知道下一跳结点的mac地址,因为要封装mac帧;我们可能只知道目标主机的IP地址,并不清楚目标主机的mac地址。因此我们有将IP地址转成mac地址的作用--ARP协议。

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

主机A是路由器,主机B是该局域网内的一台普通主机

  • 源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1 的主机的硬件地址是多少”并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播);(将数据帧封装好)
  • 目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;(这是在arp层进行处理的,而不是在mac帧层进行处理的,收到的主机要先看是arp应答还是arp请求再去对比IP地址),等收到主机B的应答后,主机A就知道了主机B的mac地址。主机A既知道主机B的IP地址,又知道主机B的mac地址,此时就能把封装的mac帧交给主机B了,实现正常的通信
  • 每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址。

ARP 数据报的格式

  • 注意到源 MAC 地址、 目的 MAC 地址在以太网首部和 ARP 请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型指要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答。
     

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

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

相关文章

【精选】基于移动端的个人博客系统的设计与实现(源码+定制+辅导)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(2)

💖💖💖亲爱的朋友们,热烈欢迎你们来到我的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客&…

关于“数据完全版本记录”的系统设计

时间:2024年08月24日 作者:小蒋聊技术 邮箱:wei_wei10163.com 微信:wei_wei10 音频:https://xima.tv/1_Gtthca?_sonic0 希望大家帮个忙!如果大家有工作机会,希望帮小蒋内推一下&#xff0c…

[运算放大器系列]四、PT100和热电偶采集电路分析

[运算放大器系列]三、PT100和热电偶采集电路分析 1. 前言2. 电路原理图3. 热电偶电路4. 三线热电阻电路 1. 前言 淘宝偶然发现一款可以支持热电阻和热电偶多种传感器的温度变送器 , 从图上看重要的芯片丝印都磨掉了。 2. 电路原理图 在其他网站上搜到两篇关于该设备的帖子 …

理解 HarmonyOS 中的网格布局:综合指南

网格布局是创建响应式和结构化用户界面的强大工具。通过将界面划分为由行和列组成的单元格,网格可以精确控制组件的分布和对齐。这使得它们成为各种应用程序(例如图库、日历和计算器)的理想选择。 在 HarmonyOS 中,ArkUI 提供了用…

代码随想录算法训练营day30 | 贪心算法 | 452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间

文章目录 452.用最少数量的箭引爆气球思路 435.无重叠区间思路 763.划分字母区间思路问题的转化 总结 今天是贪心算法专题的第四天,今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂, 但一看…

携手共创商业新纪元,聚贤国际成都分部正式成立

成大事者,聚于府都。2024年8月10日,在成都这个西部经济中心城市,聚贤国际成都分部正式成立,标志着聚贤国际商会在这片营商沃土落地生根。 本次成都分部成立,特别邀请到聚贤国际创始人刘芒芒及聚贤国际商会三亚分部、海…

ubuntu20.04源码编译安装qemu(qemu8.2)

ubuntu20.04源码安装qemu8.2 本文用于记录在ubuntu20中源码编译安装qemu8.2,同时也希望能够对你有所帮助。 一、download qemu 根据自己的需求下载对应版本的qemu源码压缩包。 https://github.com/qemu/qemu/tags二、build qemu 解压缩后,执行下述命令。…

一文读懂高通GPU驱动渲染流程

1. gpu command分析 1.1 gpu command概述 SM8650平台上,GLES发送给KMD(GPU驱动)的GPU命令有两种类型:同步命令和绘制命令。 绘制命令,一般都是一个个的drawcall组成的,是真正GPU程序指令,KMD会给…

自动分班实用工具

开学前夕,老师们的日程表上又添上了一笔笔的工作任务。分班,作为开学前的一项重要工作,不仅关系到学生的学习环境,也是家长们关注的焦点。 易查分,让分班变得简单 易查分小程序的出现,为老师们提供了一种全…

Vercel 的 AI 工具 V0.dev:如何使用它?

几个月前,Vercel 宣布推出了 V0.dev,这是一款专为开发人员和设计师设计的工具,能够使用 AI 生成 React 代码。最初,V0.dev 对外开放时采用了邀请制,但如今拥有 Vercel 帐户的任何人都可以访问并使用它。 这些工具填补…

计算机专业的 “铁饭碗” 终于被发现啦

计算机专业毕业后只能当码农吗?大错特错❌!其实计算机专业考公真的非常有优势呢!张雪峰就曾说过:“计算机在考公的时候,有那种 yyds 的感觉,是所有单位都要。”😃 🌻计算机类专业包…

音频播放+音频采样(绘制音波)

引言 在 iOS 平台中,实现音频播放有多种方式。AVAudioPlayer 是一个专门用于播放音频数据的类,易于使用,适合处理简单的音频播放需求。而 AVPlayer 则是一种更通用的播放器,既能播放视频资源,也能处理音频内容&#x…

Linux:Linux线程池

目录 线程池的概念 线程池的优点 线程池的应用场景 线程池的实现 线程池演示 线程池的概念 线程池是一种线程使用模式。 线程过多会带来调度开销,进而影响缓存局部和整体性能,而线程池维护着多个线程,等待着监督管理者分配可并发执行的…

长视频生成研究的挑战、方法与前景

人工智能咨询培训老师叶梓 转载标明出处 长视频生成面临的主要挑战包括如何在有限的计算资源下生成长时间、高一致性、内容丰富且多样化的视频序列。另外现有研究中对于“长视频”的定义并不统一,这给研究的标准化和比较带来了困难。来自西安电子科技大学、上海交通…

Window 安装Gogs教程

1、下载 下载地址:https://gogs.io/docs/installation/install_from_binary.html(请自行科学上网 选择Windows amd64(64位)或者386(32位) 2、安装 2.1 将压缩文件放到目标文件夹 2.2 创建数据库 在本地数据库或者其他目标数据库新建查询执行下列SQL语句 找到go…

taskBus的设计局限和吞吐能力测试

在前文中,我们介绍了EPDR技术的起源,以及使用该技术驱动的业余软件无线电平台专栏。已有玩家通过踩坑证明,进程管道交换数据时间延迟大(10ms),构造时间敏感系统难。除非采用传统的紧耦合设计及更大的颗粒度…

尚品汇-选中状态缓存变更、删除缓存购物车(三十八)

目录: (1)选中状态的变更 (2)删除购物车 (3)流程总结 (1)选中状态的变更 用户每次勾选购物车的多选框,都要把当前状态保存起来。由于可能会涉及更频繁的操…

基于AT89C51单片机的可手动定时控制的智能窗帘设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89469560?spm=1001.2014.3001.5503 C 源码+仿真图+毕业设计+实物制作步骤+11 摘要 I abstract II 第1章 绪论 1 1.1 背景及意义 1 1.2 国内外发展现状 1 1.3 设计思想及基…

ChatGPT等大模型高效调参大法——PEFT库的算法简介

随着ChatGPT等大模型(Large Language Model)的爆火,而且目前业界已经发现只有当模型的参数量达到100亿规模以上时,才能出现一些在小模型无法得到的涌现能力,比如 in_context learing 和 chain of thougt。深度学习似乎…