【网络基础】探讨以太网:封装解包、MTU、MAC地址与碰撞

news2024/11/15 7:22:02

文章目录

  • 1. 概念
  • 2. 帧格式
  • 3. 如何解包和封装
  • 4. 整体网络思想 谈 跨网络通信
  • 5. 碰撞问题
    • ① 汇总整体的网络通信过程,发现问题并补充细节
  • 6. 认识MAC地址
  • 7. 对比理解MAC地址与IP地址
  • 8. 认识MTU
    • ① MTU对UDP协议的影响
    • ② MTU对TCP协议的影响
    • ③ MSS 与 MTU的关系
    • ④ 命令 查看硬件地址MAC与MTU
    • ⑤ MTU 与 分片

1. 概念

“以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容, 也包含了一些物理层的内容。

  • 例如:规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
  • 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等。

2. 帧格式

在这里插入图片描述

  • 目标 MAC 地址(6 字节):指定数据包要发送到的目标设备的 MAC 地址。
  • 源 MAC 地址(6 字节):指定发送数据包的源设备的 MAC 地址。
  • 类型/长度字段(2 字节)
    • 类型字段:如果值大于 1500(0x05DC),则表示数据包中数据的协议类型(例如 IPv4、IPv6 等)。
    • 长度字段:如果值小于等于 1500,则表示数据部分的长度。
  • 数据部分(46-1500 字节):实际传输的数据。
  • CRC 校验字段(4 字节):循环冗余校验(CRC)码,用于检测以太网帧在传输过程中是否发生了错误。

3. 如何解包和封装

  1. 封装:将网络层的数据(如 IP 数据包)与数据链路层的头部和尾部组合。头部包括目标和源 MAC 地址、类型/长度字段等,尾部则是 CRC 校验码。这个过程确保数据在物理网络中正确传输。

  2. 解包:接收到数据后,数据链路层会剥离头部和尾部,提取出网络层的数据。解包过程中会检查 CRC 校验码以验证数据的完整性,确保数据在传输过程中没有错误。


4. 整体网络思想 谈 跨网络通信

首先看下面的图:
在这里插入图片描述

下面列举一个情况:

H1 给 H6 发数据时,局域网内会发生什么?
在这里插入图片描述
所有主机都会收到这个消息,并对比目标地址M6和自己的地址是否匹配,如果匹配则接收消息,否则就不继续接收


5. 碰撞问题

在局域网通信中,如果在两台主机通信时,其他主机同时进行通信,会发生什么情况?

在局域网中,同时有多台主机进行通信,数据间就发生了碰撞问题。
尽管主机知道发生了碰撞问题,但碰撞后的数据已经无法使用。

所以我们应该尽量避免碰撞问题。

首先思考两个问题:

  1. 局域网中,主机数越多越好还是越少越好?

    • **当然是越少越好!**主机越多发生数据碰撞的几率就越大
    • 如果在一个局域网中,不得不有很多的主机,怎么办?
    • 存在一种设备,叫做:网桥(交换机)
      在这里插入图片描述
    • 交换机会把主机分为一个个的小区间,而实际上依然在同一个局域网内(划分碰撞域)
    • 如图所示,比如当交换机识别到了某区间发生了数据碰撞,就不会再向其他区间发送数据
    • 又比如当交换机识别到发送方和接收方在的区间时,依然不会再像其他区间发送,减少了不必要的传输
  2. 局域网数据帧越长越好还是越短越好?

  • 越短越好! 数据帧过长意味着数据传输的时间会加长,其他设备在局域网传输数据的机会少了,自然数据碰撞的概率增大了

但数据帧如果非常的小,实际上一次传输的内容就会很少,所以局域网设置了一个值:MTU


① 汇总整体的网络通信过程,发现问题并补充细节

  1. 网络转发过程,目的IP不变,MAC帧报头会发生变化吗?

    • 会变化!
      在这里插入图片描述
  2. 任何一个主机,都暂时无法知道下一跳的MAC地址,如果不知道,无法封装MAC帧


6. 认识MAC地址

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

7. 对比理解MAC地址与IP地址

如果将局域网中两台主机的通信比作 一个人从A点要走向D点。

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

如果,A到D点中间需先经过B、C点,那么整体的通信过程为:

  1. 起始阶段

    • A点(源主机)知道要到达D点(目标主机),因此它将数据包封装在一个数据帧中,并附上目标主机的IP地址(D点的IP地址)。
    • 但是,A点并不知道到达D点需要经过B点和C点,所以它将数据帧的目标MAC地址设为路由器的MAC地址(A到B点的路由器)。
  2. 到达B点

    • 数据帧到达B点后,路由器解析数据包,并发现数据需要继续前往D点。路由器根据自身的路由表确定下一跳,并将数据帧的目标MAC地址修改为下一跳路由器到达C点的MAC地址。
    • 路由器将修改后的数据帧发送到局域网上,以便继续向目标主机传输数据。
  3. 到达C点

    • 数据帧再次到达另一个路由器(B到C点的路由器),路由器解析数据包并进行相同的操作,将目标MAC地址修改为下一跳路由器到达D点的MAC地址。
    • 修改后的数据帧被发送到局域网上,继续传输向目标主机。
  4. 到达D点

    • 最终,数据帧到达了目标主机D点,D点的主机解析数据包并处理其中的数据。

在这个过程中,IP地址确定了通信的起点和终点(A点到D点),而MAC地址则标识了每一步的具体路径(A到B点的路由器,B到C点的路由器,最后到达D点的目标主机)。通过使用IP地址和MAC地址,数据能够在网络中准确地路由到目标主机。


8. 认识MTU

前面碰撞问题中引入的MTU:

MTU(最大传输单元) 相当于发快递时对包裹尺寸的限制。这个限制源于不同数据链路对应的物理层。具体来说:

  • 以太网帧:数据长度范围规定为最小 46 字节,最大 1500 字节。如果 ARP 数据包的长度不足 46 字节,则需要在其后填充位以满足最小长度要求。
  • 最大值 1500 字节 称为 以太网的 MTU。不同的网络类型具有不同的 MTU
  • 当一个数据包从 以太网 路由到 拨号链路 时,如果数据包长度超过了拨号链路的 MTU,则需要对数据包进行 分片(fragmentation)
    不同的数据链路层标准具有不同的 MTU

① MTU对UDP协议的影响

我们知道对于 UDP协议:

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报。

则:

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

② MTU对TCP协议的影响

首先,对于TCP协议:

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

③ MSS 与 MTU的关系

在这里插入图片描述
根据上图,我们可以得出如下结论:

关于最大传输单元(MTU)和最大分段大小(MSS):

  • MTU(Maximum Transmission Unit):在不发生分片的情况下,网络层可以传输的最大数据包大小。对于以太网,常见的 MTU 是 1500 字节。

  • MSS(Maximum Segment Size):TCP 报文段中 TCP 数据字段的最大长度,它影响 TCP 连接双方协商的数据传输效率。MSS 通常由 MTU 减去 IP 头部和 TCP 头部的长度来确定。

一般情况下:

  • IP 头部长度为 20 字节。
  • TCP 头部长度也是 20 字节(若无特别指定)。

因此:

  • MSS = MTU - IP 头部长度 - TCP 头部长度
  • MSS = 1500 - 20 - 20 = 1460 字节

这意味着在给定的 MTU 下,TCP 数据字段的最大长度为 1460 字节。因此,为确保数据不会被分片,TCP 连接的 MSS 不能大于 1460 字节。

④ 命令 查看硬件地址MAC与MTU

在 Linux 系统中:

  • 查看硬件地址(MAC 地址)

    ip link show
    

    或者

    ifconfig
    
  • 查看 MTU

    ip link show
    

    输出中会显示每个接口的 MTU 值,例如 mtu 1500

在 Window 系统中:

  • 查看硬件地址(MAC 地址)

    ipconfig /all
    
  • 查看 MTU

    netsh interface ipv4 show interfaces
    

⑤ MTU 与 分片

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

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

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

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

相关文章

C语言:成绩判定

1.题目:键盘输入一个成绩(0-100之间),能输出对应等级,90-100是A,80-89是B,70-79是C,60-69是D,60分以下均为E。 2.算法思想:将100的分值分别分成5个档位&…

十万流量耀前路,成长感悟谱新章

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

计算机毕业设计选题推荐-传统文化网站-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

数据结构-单链表-详解-2

数据结构-单链表-详解-2 1.前言2.创建新结点3.头插与尾插3.1头插3.2尾插空链表找尾 4.头删与尾删4.1头删4.2尾删 1.前言 在数据结构-单链表-详解-1中,我们不仅了解了单链表的基本概念,还掌握了如何创建和打印单链表。 今天,我将详细讲解如何…

QObject::moveToThread(QThread * targetThread)

改变该对象及其孩子的所在的线程。如果该对象有父亲,则它不能被移动。 事件处理将在targetThread中继续。 移动一个对象到主线程,使用QApplication::instance()来得到当前application的指针,使用QApplication()::thread()来得到应用程序所在…

springboot篇

文章目录 1.题目问答2.配置详情2.1配置文件2.2多环境配置2.3自定义参数2.4命令行参数2.5加载顺序 3.Starter POMs4.监控与管理—actuator4.1. 应用配置类4.1.1./autoconfg4.1.2. /beans4.1.3. /configprops4.1.4 /env4.1.5./mappings4.1.6./info 4.2. 度量指标类4.2.1. /metric…

Linux终端简单配置(Vim、oh-my-zsh和Terminator)

文章目录 0. 概述1. 完整Vim配置2. Vim配置方案解释2.1 状态行与配色方案2.2 文件管理与缓存设置2.3 搜索与导航优化2.4 缩进与格式化设置2.5 粘贴模式快捷切换2.6 文件编码与格式2.7 性能优化与备份 3. 安装 Oh My Zsh 及配置3.1 安装 Oh My Zsh3.2 Oh My Zsh 配置 3. Termina…

谷歌seo为什么要分析对手?

​简单来说,找到差距,弥补差距,提升网站 通过观察对手的网站内容、关键词策略和外链情况,是可以知道很多重要信息的,只要能熟练运用各种seo工具,通过分析对手网站是可以帮助优化自己网站的,研究…

进阶SpringBoot之 Shiro(2)环境搭建

Spring Boot 创建 Web 项目&#xff0c;pom.xml 导入 Thymeleaf 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> resources 目录下 templates 包新…

VastBase——数据库参数调优

一、内存参数调优 数据库的复杂查询语句性能非常强的依赖于数据库系统内存的配置参数。数据库系统内存的配置参数主要包括逻辑内存管理的控制参数和执行算子是否下盘的参数&#xff1a; 1.逻辑内存管理参数&#xff1a;max_process_memory max_process_memory – shared memo…

SQL Server Profiler 工具的使用

在很多时候&#xff0c;我们需要优化接口的执行效率&#xff0c;一方面是提高代码在内存中的执行效率&#xff0c;另一方面就是提高数据库操作相关的效率了。 .NET中在System.Diagnostics类库下提供了Stopwatch类用来分析代码的执行耗时。那么如果是牵扯到数据库相关的操作&am…

前端速通面经八股系列(一)—— CSS篇

CSS高频面经目录 一、CSS基础1. CSS选择器及其优先级2. CSS中可继承与不可继承属性有哪些3. display的属性值及其作用4. display的block、inline和inline-block的区别5. 隐藏元素的方法有哪些6. link和import的区别7. transition和animation的区别8. display:none与visibility:…

Beyond Compare 4试用过期规避办法

声明: 支持正版软件 一: 注册表处理 在搜索栏中输入 regedit &#xff0c;打开注册表 删除项目&#xff1a;计算机\HKEY_CURRENT_USER\Software\ScooterSoftware\Beyond Compare 4\CacheId 二: 脚本处理 创建bat文件, 写入下面的命令行. reg delete “HKEY_CURRENT_USER\…

华为od全面介绍!!!

三分钟带你全面了解华为OD 【合同及管理】签约方为科锐国际/外企德科&#xff08;人力服务公司&#xff09;&#xff0c;劳动合同期为4年&#xff0c;试用期6个月。员工关系合同管理、五险一金、考勤发薪由科锐国际/外企德科负责&#xff1b;定级定薪、员工培训、工作安排、绩…

Redis的配置和启动+Redis Insight连接

一、安装 Redis的安装&#xff1a;从镜像站下载&#xff1a;索引 redis-local (huaweicloud.com)&#xff0c;然后将其传到Linux虚拟机中进行解压&#xff0c;解压之后需要下载gcc&#xff0c;因为Redis底层是用c写的&#xff0c;所以要编译一下生成redis文件&#xff0c;然后…

人工智能领域正经历模型规模变革,小型语言模型(SLM)崛起,挑战“规模至上”观念。

在人工智能领域&#xff0c;一场关于模型规模的深刻变革正在悄然发生。长久以来&#xff0c;科技巨头们热衷于庞大语言模型&#xff08;LLM&#xff09;的开发竞赛&#xff0c;但如今&#xff0c;小型语言模型&#xff08;SLM&#xff09;正以其独特的优势逐步崭露头角&#xf…

麦弗逊悬架KC特性分析APP开发与应用

汽车悬架系统是汽车重要的组成部分之一&#xff0c;起到支撑车身、减震降噪、提高行驶稳定性等多种作用。其中&#xff0c;悬架系统的K&C特性是一个重要指标&#xff0c;直接影响到汽车的操纵稳定性和乘坐舒适性&#xff0c;是悬架系统设计和优化的关键目标之一。 图1 汽车…

font-face 字体设置

摘要: font-face是css3中允许使用自定义字体的一个模块。 font-face的是一个CSS规则&#xff0c;允许你输入自己的字体出现在网站上&#xff0c;即使在特定的字体在访问者的计算机上没有安装。这条规则最重要的是&#xff0c;它为设计师打开了一个全新的世界。您可以使用任何你…

不平衡分类的成本敏感学习

不平衡分类的成本敏感学习 大多数机器学习算法都假设模型所犯的所有错误分类错误都是相同的。 对于不平衡分类问题&#xff0c;情况通常并非如此&#xff0c;因为遗漏正类或少数类案例比错误地将示例归类为负类或多数类更糟糕。有许多现实世界的例子&#xff0c;例如检测垃圾…

高效好用的10个自动化办公库分享

高效可用的10个自动化办公库 10个常用的Python自动化办公库本次内容涵盖了Excel、Word、PPT、ODF、PDF、邮件、微信、文件处理等所有能在办公场景实现自动化的库&#xff0c;希望能够对大家有所帮助。 PythonExcel自动化库 1.xlwings 库官网&#xff1a;https://www.xlwings…