网络通信-最大传输单元-MTU,网络安全零基础入门到精通实战教程!
文章目录
-
-
-
- MTU 引用
- MTU 介绍
-
- 定义
- MTU 与 VLAN Tag
- VLAN Tag 处理方式
- IP分片
- 可靠传输
- MTU 之 PMTUD
-
- PMTUD介绍
- IP头的DF分片位
-
- DF = 0 可以分片
- DF = 1 不可以分片
- 注意事项
-
-
MTU 引用
以太网最初对报文长度没有限制,网络层最大可以接收65535个字节,但是以太网对于长报文无法可靠地传输,而且丢失后重传也会占用大量的网络资源,而将报文限制在一定的长度,以太网可以将报文大概率传输到目的地,于是就有了MTU
MTU 介绍
定义
Maximum Transmission Unit,即最大传输单元,以太网的数据链路层对网络层数据包的长度会有一个限制,其最大值默认是1500字节,链路层的这个特性称为MTU,由硬件网卡设置,是
数据链路层对网络层的硬性限制。
MTU表示网络层必须将发给网卡API的包 <= 1500byte,否则调用失败,这个1500字节数据长度是针对网络层的,不包含链路层的头部和尾部。
MTU 与 VLAN Tag
如果有的以太网网卡配置了VLAN Tag,通过此网卡的数据帧会携带VLAN Tag,VLAN Tag要算在链路层的Payload里,MTU = 1500里包含802.1Q的头部VLAN Tag(如下图)

当网卡配置VLAN Tag时, VLAN Tag + Data <= MTU ,有时VLAN Tag不只有一个,可能是双标签,那这个VLAN Tag就是8个字节。这时候的MTU如果还是1500,链路层的Payload就不可能是1500了
VLAN Tag 处理方式
可以把添加802.1Q的接口设置MTU=1504或1508(网卡设置,硬件操作)
IP分片
既然链路层的Payload有MTU限制,就意味着
网络层下发到链路层的数据不能超过MTU,如果超过了MTU,就需要在网络层分片,切成<=MTU的IP数据包
网络层如果发现链路层的MTU小于IP包的大小(网络层可以调用函数获取链路层信息),也并不会立刻开始分片,还需要看IP包的是否允许分片位DF(Don’t Fragment)(
在下方内容PMTUD处详述),如果允许分片,就会分成多个ID一样的IP包。
可靠传输
对于UDP包,如果MTU = 1500,那么udp Payload最大值是多少,才可以不用分片?
MTU(1500) = IPHeader(20) + UDPHeader(8) + Payload
Payload = 1500 -20 - 8 = 1472
如果UDP包的Data <= 1472个字节,UDP包(UDPHeader+Data)在网络层不用分片,直接封装上IPHeader发往链路层,如果UDP包的Data > 1472,那么UDP包(UDPHeader + Data)需要在网络层分片 ,如何分片?
网络层并不会在每个分片里复制一次UDP头,它是把完整的UDP包切开,加上IP头发送出去,除了第一个分片有UDP头,后面的分片都不包含UDP头
目的主机的网络层接收到多个UDP分片包后,网络层必须重组才能交给上层,为什么?
因为多个分片包只有第一个是有UDP头的,它可以根据UDP头里的端口号通知相应的应用取走,但是后面的分片包由于没有UDP头,传输层无法把分片包交给正确的应用程序。所以UDP分片包必须在
网络层重组成一个完整的UDP包,交给传输层处理(IP分片会分成多个ID一样的IP包,根据ID重组)。
- 不可靠传输
UDP如果某些分片包没有被目的主机的网络层接收到,UDP包重组失败,接收方会丢弃整个数据包,这是UDP不可靠传输的一个表现。
对于UDP来说,一般选择576个字节通信
- 可靠传输
TCP包重组失败,该包会被重传,保证可靠传输
MTU 之 PMTUD
PMTUD介绍
PMTUD:Path MTU Discovery
收发双方在TCP协议通信时,根据取较小MSS的原则,理论上
避免了发送方在网络层分片,接收方在网卡由于超过MTU而无法接收的情况。
但是,以太网通信不是只有两台主机,它们通信的途中还有路由器和交换机,路由器和交换机都有自己的MTU,主机的网络层可以分片,路由器的网络层也可以分片。
就像木桶理论一样,木桶能装多少水取决于最短的那块,网络通信的路径上决定IP包大小的,取决于源主机、目的主机、路由器中MTU最小的那个,这就是PMTUD。
路由器和交换机都有自己的MTU,如果数据帧超过了它们的MTU,在从出口发出去时,需要进行分片, 网络层能否分片IP包,需要根据IP头的DF分片位决定 。
IP头的DF分片位
DF = 0,表示可以分片
DF = 1,表示不可以分片
DF = 0 可以分片
下图设定,设定左右两台主机在TCP握手阶段,确定了MSS = 1480 - 20 - 20 = 1440,设定发送的IP包就是1440 + 20 + 20 = 1480,如果是直连,这样的IP包在发出去的时候不会分片,而接收端也可以接收到。
但是当IP包到达路由器时,需要从另一个接口发出,而接口MTU为1450,必须分片才能发送,这时候
路由器就会检查IP包的DF位,以确定这个IP包是否支持分片。
发现DF位是0,表示可以分片,就把这个IP包分成两份,1450和30,由于第一份1450是有IP头的,可以直接下发到链路层发出,而第二份30是没有IP头的,需要加上IP头20个字节,形成一份新的IP包,最终大小是50个字节,同样下发到链路层发出

DF = 1 不可以分片
如下图,与上面DF = 0的情况不同的是,路由器发现IP包需要分片,然后查看IP包的DF位,发现值为1,显示不能分片,此时路由器只能丢弃此IP包,同时给源主机回复一个ICMP目的不可达的消息,
Type = 3,code = 4。

- 上图中code = 4的含义

同时,在ICMP消息里还会
携带路由器的MTU的大小,告知源主机这个路由器的MTU是多少,这样源主机就可以继续调整自己的MSS值,如果有多个路由器,多个路由器都会这样操作,最终确定一个这条路径上的最小MTU,这就是PMTUD。
另外,ICMP目的不可达消息,还会把丢弃的IP包的各层报头也放在里面(如下图)

注意事项
路由器的MTU只针对网络通信数据出口,接收数据不受限制
PMTUD只有TCP支持,UDP并不支持
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)



👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

👉5.黑客必读书单👈

👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

本文转自 https://blog.csdn.net/qq_42576109/article/details/127915967?ops_request_misc=%257B%2522request%255Fid%2522%253A%252248b924b356f68c822112663fb0b43b88%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=48b924b356f68c822112663fb0b43b88&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-127915967-null-null.142v101pc_search_result_base3&utm_term=%E4%BC%A0%E8%BE%93%E5%8D%95%E5%85%83&spm=1018.2226.3001.4187,如有侵权,请联系删除。
相关文章:
网络通信-最大传输单元-MTU,网络安全零基础入门到精通实战教程!
文章目录 MTU 引用MTU 介绍 定义MTU 与 VLAN TagVLAN Tag 处理方式 IP分片可靠传输MTU 之 PMTUD PMTUD介绍IP头的DF分片位 DF 0 可以分片DF 1 不可以分片 注意事项 MTU 引用 以太网最初对报文长度没有限制,网络层最大可以接收65535个字节,但是以太…...
【如何学习商城源码】
学习商城源码是一个系统而深入的过程,需要掌握多种方法和技巧。以下是一些建议,帮助你有效地学习商城源码: 一、搭建学习环境 准备开发工具 编程语言相关:根据商城源码使用的编程语言,安装相应的集成开发环境…...
在nodejs中使用ElasticSearch(一)安装,使用
使用docker安装ElasticSearch和Kibana 1)创建相应的data文件夹和子文件夹用来持久化ElasticSearch和kibana数据 2)提前创建好elasticsearch配置文件 data/elasticsearch/config/elasticsearch.yml文件 # Elasticsearch Configuration # # NOTE: Elas…...
封装一个vue3控制并行任务数量的组合式函数
一. 使用场景 使用环境: vue3 当需要处理多个异步任务时,想要控制并行异步任务的数量,不想所有任务同时执行导致产生性能上的问题, 比如当需要同时发起多个网络请求,但又不想一次性发出过多请求导致服务器压力过大或…...
SpringSecurity请求流转的本质
1. SpringSecurity核心源码分析 分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容? 系统启动的时候SpringSecurity做了哪些事情?第一次请求执行的流程是什么?SpringSecurity中的认证流程是怎么样的?1.1 系统启动 当我们的Web服务启动的时候,…...
JavaScript数组-数组中新增元素
在JavaScript开发过程中,数组是一种非常常用的数据结构,它允许我们以有序的方式存储多个值。随着应用需求的变化,我们经常需要向现有的数组中添加新的元素。本文将详细介绍几种向数组中新增元素的方法,并探讨它们的特点和适用场景…...
【AI工具之Deepseek+Kimi一键免费生成PPT】
1.打开Deepseek网页:DeepSeek 2.使用Deepseek获得一份PPT大纲(输入背景需求约束条件进行提问)如下图: 3.复制Deepseek输出的PPT大纲 4.打开Kimi网页:Kimi.ai - 会推理解析,能深度思考的AI助手 5.在Kimi中…...
基于微信小程序的宿舍报修管理系统设计与实现,SpringBoot(15500字)+Vue+毕业论文+指导搭建视频
运行环境 jdkmysqlIntelliJ IDEAmaven3微信开发者工具 项目技术SpringBoothtmlcssjsjqueryvue2uni-app 宿舍报修小程序是一个集中管理宿舍维修请求的在线平台,为学生、维修人员和管理员提供了一个便捷、高效的交互界面。以下是关于这些功能的简单介绍: …...
ok113i平台——更改根目录分区大小
问题:根目录的空间太小;目前只有992M(包含了home目录大小) 通过改下面三个文件任一个,三个都会同时更改,以配置各分区容量: /home/forlinx/OK113i-linux-sdk/device/config/chips/t113_i/configs/ok113i/l…...
DeepSeek 助力 Vue 开发:打造丝滑的右键菜单(RightClickMenu)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
IDEA CodeGPT 使用教程
IDEA CodeGPT 使用教程 CodeGPT 是一个 IntelliJ IDEA 插件,可以利用 OpenAI(或自建 AI 模型)来帮助开发者完成代码编写、优化、调试、解释错误等任务。以下是详细的安装与配置教程。 1. 安装 CodeGPT 插件 方式 1:从插件市场安…...
WLAN无线2.4G/5G频段划分和可用信道
互联网各领域资料分享专区(不定期更新): Sheet...
HTML/CSS中后代选择器
1.作用:选中指定元素中,符合要求的后代元素. 2.语法:选择器1 选择器2 选择器3 ...... 选择器n(使用空格隔开) 3.举例: /* 选中ul中的所有li */ul li{color: red;}/* 选中类名为subject元素中的所有li */.subject li{color: blue;}/* 选中类名为subject元素中的所有类名为f…...
自己安装一台DeepSeek的服务器
找一台还可以的Linux服务器,登录后执行: curl -fsSL https://ollama.com/install.sh | sh 等待安装完成: 执行命令,根据服务器能力安装不同版本的AI模型: ollama run llama3.2 下一步就开始对话吧: llam…...
StableDiffusion学习笔记——4、模型下载和学习
目录 大家好,我是阿赵。 继续学习StableDiffusion的使用。 这次来学习一下模型的相关知识 一、 什么是模型 之前我们了解过,在StableDiffusion里面生成图片或者视频,都需要先选择模型。模型用通俗的话来说,就是决定了…...
蓝桥杯班级活动
题目描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 id 为 ai。 老师希望通…...
微软宣布 Windows 11 将不再免费升级:升级需趁早
大家都知道如果你现在是Windows 10 系统,其实可以免费升级到正版 Windows 11,只要你的电脑配置满足 TPM2.0要求。 而最近微软已经公布了 Windows 10 的最后支持时间,也就是今年10月14日,在这之后微软将不再对Windows 10负责&#…...
Java开发实习面试笔试题(含答案)
在广州一家中大公司面试(BOSS标注是1000-9999人,薪资2-3k),招聘上写着Java开发,基本没有标注前端要求,但是到场知道是前后端分离人不分离。开始先让你做笔试(12道问答4道SQL题)&…...
什么叫不可变数据结构?
不可变数据结构(Immutable Data Structures)是指一旦创建之后,其内容就不能被修改的数据结构。这意味着任何对不可变数据结构的“修改”操作实际上都会返回一个新的数据结构,而原始数据结构保持不变。 一、不可变数据结构的核心特点 不可变性:一旦创建后,数据结构的内容…...
3D与2D机器视觉机械臂引导的区别
3D与2D机器视觉在机械臂引导中的主要区别如下: 数据维度 2D视觉:仅处理平面图像,提供X、Y坐标信息,无法获取深度(Z轴)数据。 3D视觉:处理三维空间数据,提供X、Y、Z坐标及物体的姿态…...
Effective Go-新手学习Go需要了解的知识
不知不觉从事Golang开发已有4+年了,回顾自己的成长经历,有很多感悟和心得。如果有人问我,学习Golang从什么资料开始,我一定给他推荐"Effective Go"。《Effective Go》是 Go 语言官方推荐的编程风格和最佳实践指南,其结构清晰,内容涵盖 Go 的核心设计哲学和常见…...
解析DrugBank数据库数据|Python
一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和…...
Day3 25/2/16 SUN
【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p4&v…...
专题 - Java Stream API
概述 分类 数据源 任何位置。 如:集合、数组、文件、随机数、 Stream 静态工厂等。 支持的数据类型 整型、长整型、双精度浮点型基本数据类型。引用数据类型。流管道的数据处理流程 流管道必须要有终止操作。否则永不执行,只是一个静默的无操作指令。流管道是懒运算的。当执…...
【前端框架】vue2和vue3的区别详细介绍
Vue 3 作为 Vue 2 的迭代版本,在性能、语法、架构设计等多个维度均有显著的变革与优化。以下详细剖析二者的区别: 响应式系统 Vue 2 实现原理:基于 Object.defineProperty() 方法实现响应式。当一个 Vue 实例创建时,Vue 会遍历…...
大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(3)
大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(3) 前言本篇摘要11. 使用transformers.agents构建Gradio UI11.3 创建和使用工具Tools11.3.1 默认工具箱与load_tool11.3.2 创建新工具11.3.3 管理代理的工具箱toolbox11.3…...
路由基础 | 路由引入实验 | 不同路由引入方式存在的问题
注:本文为 “路由基础 | 路由表 | 路由引入” 相关文章合辑。 未整理去重。 路由基本概念 1—— 路由表信息、路由进表以及转发流程、最长掩码匹配原则 静下心来敲木鱼已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指导报文转发的路径信息,可以…...
网络原理-HTTP/HTTPS
文章目录 HTTPHTTP 是什么?理解“应用层协议”理解 HTTP 协议的⼯作过程HTTP 协议格式抓包⼯具的使用抓包⼯具的原理抓包结果协议格式总结 HTTP 请求(Request)认识 URLURL 的基本格式关于URL encode 认识“⽅法”(methodÿ…...
Docker 镜像操作笔记
一、简介 Docker 镜像是容器运行的基础,它包含了容器运行所需的文件系统、应用程序及其依赖。镜像是不可变的,每次修改都会生成一个新的镜像。以下是对 Docker 镜像操作的详细介绍,包括常用的命令及其参数解释。 二、镜像操作 (…...
SpringBoot启动失败之application.yml缩进没写好
修改前: spring前面空格了 报错输出:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the follow…...
