MTU和MSS

pppoe环境下的mtu和mss的配合问题 一、问题描述 前端是连接因特网的路由器,中间利用LINUX –IPTABLES搭建的防火墙,由PPPOE协议承担拨入功能,并开通NAT,后端是客户机,故障现象是当LINUX系统拨入VPN后,LINUX系统本身域名解析和网站浏览正常,NAT后端客户机出现域名解析正常但网站浏览失败。 二、问题解决 我们在给防火墙加入以下规则后,网络通信恢复正常。 iptables -A FOR 阅读详情

MTU: Maxitum Transmission Unit 最大传输单元

MSS: Maxitum Segment Size
最大分段大小(偶是直译,翻译的不好,不要打俺PP)

PPPoE: PPP Over Ethernet
(在以太网上承载PPP协议)

先说说这MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,让我们先仔细回忆一下EthernetII帧的结构DMAC+SMAC+Type+Data+CRC由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。
(注:小于64Bytes的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)

由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU。这个就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。

当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 :))通过这段水管最大水量就要由中间最细的水管决定。

对于网络层的上层协议而言(我们以TCP/IP协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Donot Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路都是MTU1500或者大于1500。

对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般UDP应用对分片没有特殊要求。

对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。

花开两朵,各表一枝,说完MTU的故事我们该讲讲今天的第二个猪脚---PPPoE所谓PPPoE就是在以太网上面跑PPP协议,有人奇怪了,PPP协议和Ethernet不都是链路层协议吗?怎么一个链路层跑到另外一个链路层上面去了,难道升级成网络层协议了不成。其实这是个误区:就是某层协议只能承载更上一层协议。
为什么会产生这种奇怪的需求呢?这是因为随着宽带接入(这种宽带接入一般为Cable Modem或者xDSL或者以太网的接入)由于以太网缺乏认证计费机制而传统运营商是通过PPP协议来对拨号等接入服务进行认证计费的,所以就出了这么一个怪胎:PPPoE。(有关PPPoE的详细介绍参见V大以及本站其他成员的一些介绍文章,我就不啰里啰唆的了)

PPPoE
带来了好处,也带来了一些坏处,比如:二次封装耗费资源,降低了传输效能等等,这些坏处俺也不多说了,最大的坏处就是PPPoE导致MTU变小了以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。

如果两台主机之间的某段网络使用了PPPoE那么就会导致某些不能分片的应用无法通讯。

这个时候就需要我们调整一下主机的MTU,通过降低主机的MTU,这样我们就能够顺利地进行通讯了。

当然对于TCP应用而言还有另外的解决方案。
马上请出今天第三位猪脚:MSS。
MSS
最大传输大小的缩写,是TCP协议里面的一个概念。
MSS
就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

介绍完这三位猪脚s我们回过头来看前言里面的那个问题,我们试想一下,如果我们在中间路由器上把每次TCP连接的最大MSS进行调整这样使得通过PPPoE链路的最大MSS值加上数据包头包尾不会超过PPPoE的MTU大小1492这样就不会造成无法通讯的问题
所以上面的问题可以通过ip tcp adjust-mss 1452来解决。

当然问题也可以通过修改PC机的MTU来解决。

MSS、MTU、TSO的关系 摘要: MTU(最大传输单元)指数据链路层允许的最大数据包大小(以太网默认1500字节),影响IP层数据传输是否需要分片。MSS(最大报文段长度)是TCP协议确定的应用层最大数据分段,计算方式为MTU减去IP和TCP首部(通常1460字节)。TCP连接时会协商双方MSS最小值作为传输标准。TSO(TCP分段卸载)技术将数据分段任务交由网卡处理,降低CPU负载。可通过ifconfig或ethtool命令查看和调整MTU、MSS及TSO开关状态,优化网络性能。 阅读详情

相关推荐

MTU与TCP-MSS

最近在网络切割过程中发现变更后某些网站是可以ping通,但是URL访问不了MTU概念及windows端应用参考本人博客文章本文主要记录MTU和TCP-MSS在网络设备层面的理解应用。

A soul tortured by desire 1497

TCP/IP学习(四)TCP缓冲区大小及限制

这个问题在前面有的部分已经涉及,这里在重新总结下。主要参考UNIX网络编程。 (1)数据报大小 IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。 IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。 (2)MTU 许多网络有一个可由硬

胜利者的经验并不复杂,那就是寻找人生的关键点,并在关键时刻竭尽全力 6万+

Python+QMT量化交易实战:从零搭建你的第一个极速策略(附完整代码)

本文提供了一份详细的Python+QMT量化交易实战指南,手把手教你从零搭建一个可回测、可实盘的极速策略。内容涵盖环境配置、QMT核心机制解析、双均线策略的完整代码实现、回测优化方法以及实盘部署要点,帮助量化交易新手快速入门并掌握核心开发流程。

b9c0d的博客 1012

TCP/IP:MSS MSL MTU

1.MSS(maximum segment size)即最大分节大小,是TCP的选项之一。 TCP发送的SYN中带有这个选项,它通知对端它能接受的每个TCP分节中的最大数据量。 发送端TCP用接收到的MSS值作为所发送分节的最大大小。 在TCP的MSS选项中,MSS值是一个

louiswang2009的专栏 4230

医疗大模型实战——从零构建MedicalGPT全流程解析

本文详细解析了从零构建医疗大模型MedicalGPT的全流程实战。基于Qwen-7B模型与约195万条中文医疗数据,完整复现了增量预训练、监督微调与偏好对齐三大核心环节,并分享了如何在有限硬件资源下实现高效训练与部署,为开发者提供了可复现的医疗AI项目实战指南。

weixin_29193259的博客 553

网络设备调试指南:如何用MDIO Clause22/45协议读写Marvell MV88E6390寄存器

本文深入解析了如何通过MDIO Clause 22/45协议对Marvell MV88E6390交换芯片进行寄存器读写调试。文章详细对比了两种协议的本质区别与适用场景,并重点阐述了MV88E6390的直接与间接寻址策略,提供了实战代码示例与关键调试技巧,帮助网络工程师高效解决配置与通信问题。

tequila的博客 517

TCP/IP协议——TCP详解

TCP提供面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(同常一个客户端一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行通信,广播和多播不能用于TCP。TCP通过以下方式提供可靠性: 1,应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度保持不变。由TCP传给IP的信息单位称为报文段或段。 2,当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 3

weixin_42853463的博客 4741

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 988

TCP的MSS的计算与详解

TCP,MSS,TCP分片,PMTU,路径MTU,MSS协商

meihualing的专栏 3万+

C#上位机+国产PLC+AI:构建自主可控的智能生产线解决方案

全栈国产化智能产线方案并非遥不可及,基于成熟的国产硬件、丰富的.NET生态、快速发展的国产大模型,完全可以搭建出稳定可靠且具备智能能力的生产系统。落地建议采用三步走策略:基础国产化阶段:替换PLC与上位机,实现基础监控与控制功能,解决卡脖子问题,快速验证国产化方案稳定性数据沉淀阶段:完善数据采集与存储,建立设备台账、故障库、工艺库,积累高质量领域数据智能升级阶段:引入国产大模型与知识库,落地故障诊断、工艺优化、预测性维护等智能应用,持续提升产线效率。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 520

SAP BTP ABAP RAP 开发对象命名规范与落地实践

摘要:SAP BTP ABAP开发中的命名规范实践 在企业级ABAP开发中,命名规范是提升交付效率的工程化手段。SAP推荐采用[/<namespace>/][<prefix>]_<object_name>_[<suffix>]的结构化命名框架,解决多对象、多团队的协同问题。关键实践包括:使用组织专属命名空间避免冲突;通过prefix区分同类型对象的不同语义(如UI_/API_);object_name体现业务语义而非技术细节;suffix表达次级差异。在具体对

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1433

为什么我推荐 MTU 为 1452?

标准的以太网 MTU 是 1500 字节,但 PPPoE 本身会额外占用 8 字节(6 字节 PPPoE 头 + 2 字节 PPP 协议标识),因此协商出来的链路 MTU 通常固定为。大量用户反馈的“IPv6 时好时坏”“某些网站(如 Azure CDN、部分海外教育网、视频网站)用 IPv6 就卡死”“微信表情转圈”“下载大文件一半断开”等现象,根源几乎都指向这里。1492 是典型的 PPPoE IPv4 值,但在 IPv6 逐渐成为主流的今天,它已经变成了“定时炸弹”。这几乎已经是教科书级的数值了。

binweisili的博客 832

Apache Kafka Connect任意文件读取漏洞(CVE-2025-27817)

由于Apache Kafka客户端未对用户输入进行严格验证和限制,未经身份验证的攻击者可通过构造恶意配置读取环境变量或磁盘任意内容,或向非预期位置发送请求,提升REST API的文件系统/环境/URL访问权限。(CVE-2025-27817)

iSee857的博客 2026

MTU 和 MSS 区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、MTU是什么?二、MSS是什么?二、判断网关最大MTU的方法总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、MTU是什么? MTU: (Maximum Transmit Unit,最大传输单元)即物理接口(数据链路层)提供给其上层(通常是IP

qq_42668126的博客 3877

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MTU和MSS的区别

1、MTU: Maximum Transmit Unit,最大传输单元,即物理接口(数据链路层)提供给其上层(通常是IP层)最大一次传输数据的大小;以普遍使用的以太网接口为例,缺省MTU=1500 Byte,(缺省:系统默认状态)这是以太网接口对IP层的约束,如果IP层有<=1500 byte 需要发送,只需要一个IP包就可以完成发送任务;如果IP层有> 1500 byte 数据需要发送,需要分片才能完成发送,这些分片有一个共同点,即IP Header ID相同。 数据链路层,MTU为1500字

scarificed的博客 9820

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MSS 与 MTU

mtu是网络传输最大报文包,mss是网络传输数据最大值。 具体分析如下: 1、mss加包头数据就等于mtu. 简单说拿TCP包做例子。 报文传输1400字节的数据的话,那么mss就是1400,再加上20字节IP包头,20字节tcp包头,那么mtu就是1400+20+20. 当然传输的时候其他的协议还要加些包头在前面,总之mtu就是总的最后发出去的报文大小。mss就是你需要发出去的数据大小。 ...

phone1126的专栏 3172

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MTU和MSS关系

MTU、MSS关系

weixin_43445237的博客 3010

MTU、IP MTU 和 MSS 参数详解

1. 概述 本文主要分析网络通信中MTU,IP MTU和MSS的概念以及它们之间的关系。这三个概念对于网络通信来说非常重要,常常很多网页打不开等问题都是这几个参数没配置好导致的。   2. MTU 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议在某一层上面所能通过的最大数据报大小(以字节为单位),它通常与链路层协议有密切的关系。EthernetII 帧结构如图 2.1所示。 图 2.1 EthernetII帧结构   由于以太网传输电气方面

ScilogyHunter的博客 5961

MSS与MTU的关系

MSS: Maximum Segment Size,即最大报文段长度。MSS是TCP协议的一个选项,用于在TCP连接建立时,收发双方可以通知对方通信时每一个报文段所能承载的最大数据长度。注意该选项不是协商选项,只是一种通知。即接收方告知发送方自己的MSS大小,对方使用该值与否,取悦于对方。 MTU: Maximum Transmission Unit,即最大传输单元,表示数据链路层可以传输的最大数据包(不包含帧首部和尾部)。每个网络都有其MTU值。该值大小可能是由于技术限制,也可能是工程、技术或管理上的考

海纳百川 5384

MTU和MSS详解

MTU: Maximum Transmit Unit,最大传输单元,即物理接口(数据链路层)提供给其上层最大一次传输数据的大小,比如IP层、MPLS层等等,因为目前应用最多的接口是以太网,所以谈谈以太网口的MTU,假定其上层协议是IP,缺省MTU=1500,意思是:整个IP包最大从这个接口发送出去的是1500个字节。可以通过配置修改成更大或更小的值,只要在系统的边界值以内即可,但是切记要在链路的两...

mtAsnow 1946

MTU & MSS 详解

需要注意的是,区别两种帧封装格式:802标准帧和以太网帧 1,在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括C R C检验码。RFC 1042(IEEE 802) 2,RFC 894(以太网) 所以,以太网帧报头为目的地址6+源地址6+类型2+CRC 4=18bytes 而802帧没有CRC,所以为14bytes。Sniffer采用的是802帧为14bytes ...

yetugeng的专栏 1893

MTU / IP MTU / PMTU / MSS:理解它们的区别与联系

……

u013669912的博客 1943

MTU 和 MSS 分别是什么

MTU(Maximum Transmission Unit)最大传输单元属于链路层参数,由底层网络设备决定;指在某种物理网络协议下,一个数据帧能够承载的最大数据量(单位为字节);以太网标准 MTU 通常为1500 字节;若 IP 数据报超过 MTU,将在网络层进行 IP 分片,每个分片不超过 MTU。MSS(Maximum Segment Size)最大报文段长度属于传输层 TCP 协议参数;表示TCP 连接中单个报文段中负载数据部分的最大长度,不含 TCP 和 IP 头部;

陈子青的博客 1194

TCP分组、IP分组、MTU、MSS

TCP分组、IP分组、MTU、MSS 什么是MTU 最大传输单元(Maximum Transmission Unit, MTU) ,一般是指数据链路层所能够通过的最大数据包大小(以字节位单位,不包括链路层的首部与尾部),这个一般与通信接口(网卡、串口)等有关。假设两台路由器之间的MTU之间为1500,那么这两个路由器在数据链路层单次传输的数据包大小最大为1500字节,也就是规定了IP数据报的长度。 |帧首部| 帧的数据部分 |帧尾部|

weixin_47416396的博客 3151
上一篇: RAW SOCKET介绍
下一篇: 路由器原理及路由协议
wunderup
博客等级 码龄20年 13粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值