以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系

2023-12-03 04:50

本文主要是介绍以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文不考虑巨型帧(jumbo frames)的情况下,我们来理几个概念。在日常讨论中,这几个长度经常会容易被混淆起来。64字节,1518字节,1500字节,1460字节,我们接下来会来介绍一下这几个常见,易混淆的长度值的来源。

1、以太帧帧长:

数据帧的长度,代表二层以太帧长。如下图所示,IEEE802.3协议规定,以太帧帧长最小为64字节,最大为1518字节
在这里插入图片描述
这里还有另外一种算法,则要在上面图片显示的基础上加上7字节前导同步码 + 1字节帧开始定界符,变成7字节前导同步码 + 1字节帧开始定界符 + 6字节的目的MAC + 6字节的源MAC + 2字节的帧类型 + 1500 + 4字节的FCS,则总长度变成1518+7+1 = 1526字节;
而有人讨论这个时,不仅不考虑前导同步码和字节帧开始定界符,也不考虑FCS部分(因为这些部分在抓包软件里往看不到),那么就这成了1514字节。

2、MTU(Maximum Transmission Unit,最大传输单元):

MTU是指网络能够传输的最大数据包大小,以字节为单位。MTU是数据链路层的概念,在以太网中,是指以太帧承载的有效数据载荷(payload)部分的长度的最大值。不同链路介质类型的网络有不同的默认MTU值。如下图所示,我们通过以太帧帧长最小为64字节,最大为1518字节,可以知道以太帧有效数据部分最最小为64-6-6-2-4 = 46字节,最大为1518-6字节目标MAC地址-6字节源MAC地址-2字节数据帧类型-4字节校验 = 1500字节,这个最大值就称为MTU,所以通常是1500字节。
在这里插入图片描述

通过以下命令可以查看主机中所有接口的MTU的值

sudo netstat -i

3、IP报文长度:

一般来说,受限于MTU,我们认为IP报文是由20字节的IP头部+1480字节的IP有效数据载荷构成的。
在这里插入图片描述
所以IP有效数据载荷的长度通常为1480字节。

4、TCP报文长度:

受限于MTU(准确的说是受限于MSS,见下一章节)TCP报文长度由由20字节的TCP头部+1460字节的TCP有效数据载荷构成的。TCP有效数据载荷的长度是1460字节
在这里插入图片描述

5、TCP MSS(Maximum Segment Size):

TCP MSS是指TCP协议所允许的最大报文长度,即TCP数据包每次能够传输的最大的TCP最大有效数据载荷部分的长度,不包含TCP头部。MSS是指TCP的有效数据载荷部分的最大长度。一般来说,如果我们只考虑主机当前以太网的接口卡的MTU:TCP MSS = MTU - IP头部20字节 - TCP头部20字节 = 1460字节。在实际的网络中TCP MSS不仅仅受限于主机当前网络接口卡的MTU,还受限于网络中以及端主机的MTU的大小,具体可参见
TCP的MSS的计算与详解
TCP之路径MTU(PMTU)发现过程详解

在这里插入图片描述

这篇关于以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/448132

相关文章

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(