MTU 和 MSS 区别

2023-11-17

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

MSS:Maximum Segment Size ,TCP提交给IP层最大分段大小,不包含TCP Header和 TCP Option,只包含TCP Payload ,MSS是TCP用来限制application层最大的发送字节数。如果底层物理接口MTU= 1500 byte,则 MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果application 有2000 byte发送,需要两个segment才可以完成发送,第一个TCP segment = 1460,第二个TCP segment = 540。

tcp 通讯 MSS 确定


如上图 端口53842 为 A; 端口 80 为 B。

见上图,TCP SYN消息,A 发送给B 的MSS= 1460,告诉B,B发给A最大segment 为1452 byte.

以后每次通讯,可以看出发送的数据都是 1452 byte。

由上图,可以发现 MSS 的值,取决与 发送端和接收端两者较小的 MSS 的值。


想了解更多精彩内容请关注我的公众号

本人简书blog地址:http://www.jianshu.com/u/1f0067e24ff8    
点击这里快速进入简书
GIT地址:http://git.oschina.net/brucekankan/
点击这里快速进入GIT

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MTU 和 MSS 区别 的相关文章

  • 套接字编程Python:如何确保收到完整消息?

    我正在使用 python 3 x 和套接字模块 服务器在 ipv4 地址上运行并使用 tcp 我阅读了一些有关如何发送和接收数据的教程 对于服务器或客户端 要确保发送整个消息 您可以简单地检查发送的数据量是否等于消息的大小 def myse
  • Boost ASIO:服务器如何知道客户端是否仍然连接?

    我在用boost asio对于服务器 客户端应用程序 服务器一次只接受一个连接 我想知道服务器验证客户端是否仍然连接的最佳方法是什么 这样做的目的是我希望能够知道客户端是否崩溃 以便我可以重新开始侦听新的连接尝试 在我的应用程序中 我使用以
  • 无法通过 ngrok ssh 进入远程 Linux

    远程Linux计算机位于内部网络中 没有公共IP地址 所以我安装了ngrok ngrok tcp 22 ngrok by inconshreveable Ctrl C 退出 在线隧道状态版本2 0 19 2 0 17网页界面http 127
  • Nodejs TCP连接客户端端口分配

    我使用nodejs在客户端和服务器之间创建了tcp连接 网络模块 https nodejs org api net html 服务器正在侦听已经预定义的端口 并且客户端正在连接到该端口 据我了解客户端的端口是由节点动态分配的 那是对的吗 节
  • 很难理解带有 async_read 和 async_write 的 Boost ASIO TCP 的一些概念

    我很难理解使用 async read 和 async write 时构建 tcp 客户端的正确方法 这examples http www boost org doc libs 1 38 0 doc html boost asio examp
  • 是什么导致 MSSQL 中出现“非阻塞套接字上的操作将阻塞”错误?

    错误 异常查询为 CREATE NONCLUSTERED INDEX I1 ON AllAccounts BAK Master received Day ASC 出现异常 发生一个或多个错误 错误 异常内部异常无法从传输连接读取数据 非阻塞
  • 如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?

    如何在 MAC OS X 中获得最大 TCP 接收 发送窗口 Linux中有两个ctl proc sys net core rmem max 最大 TCP 接收窗口 NET CORE RMEM MAX proc sys net core w
  • 查找网络中的所有IP地址

    我正在尝试用 C 来做这个 我需要找到我的网络中所有活动的 IP 地址并将它们显示在列表中 我可以 ping 网络中所有可用的 1 255 IP 地址 但我想让这个过程更快 此代码在大约 1 秒内扫描我的网络 255 个 D 级段 我在 V
  • syn队列和accept队列的混淆

    在阅读TCP源码时 我发现一个困惑的事情 我知道 TCP 在 3 次握手中有两个队列 第一个队列存储服务器收到的连接SYN并发回ACK SYN 我们称之为同步队列 第二个队列存储3WHS成功并建立连接的连接 我们称之为接受队列 但在阅读代码
  • 如何在java应用程序中检测FIN - tcp标志?

    我在两台计算机之间有持久的 TCP 连接 第二台计算机不受我的控制 第二台计算机可以随时发送FIN标志 并且首先必须关闭当前连接 将FIN标志发送回第二台计算机 我如何知道第二台计算机正在发送 FIN 标志 以及何时必须调用 Java 应用
  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • 如何在Linux中打开端口[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经安装了 Web 应用程序 该应用程序在 RHEL centOS 上的端口 8080 上运行 我只能通过命令行访问该机器 我尝试从我的
  • ZeroMQ可以用来接受传统的套接字请求吗?

    我正在尝试使用 ZeroMQ 重写我们的旧服务器之一 现在我有以下服务器设置 适用于 Zmq 请求 using var context ZmqContext Create using var server context CreateSoc
  • 分配 TCP/IP 端口供内部应用程序使用

    我编写了一个由 Windows 服务托管的 WCF 服务 它需要侦听已知的 TCP IP 端口 我可以在什么范围内安全地分配端口供我的组织内使用 该端口将嵌入到服务和使用该服务的客户端的配置文件中 端口 0 1023 是众所周知的端口 由
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • 触发“对等方重置连接”

    我想测试当发生 对等方重置连接 错误时我们的应用程序 嵌入式 ftp 服务器 中发生的日志记录 这个帖子 https stackoverflow com questions 1434451 connection reset by peer很
  • 如何强制关闭 TcpListener

    我有一个通过 tcpListener 进行通信的服务 问题是当用户重新启动服务时 抛出 地址已在使用 异常 并且服务在几分钟左右无法启动 有没有办法告诉系统终止旧连接 以便我可以打开一个新连接 我不能只使用随机端口 因为服务无法通知客户端端
  • 当使用环回地址使用 TCP/IP 套接字进行 IPC 时,常见的网络堆栈是否会跳过将消息帧封装在较低级别的 PDU 中?

    在某些环境 例如 Java 中 很自然地使用 TCP IP 套接字通过 localhost 地址 IPv4 中的 127 0 0 1 或 IPv6 中的 1 在同一主机上的进程之间传递消息 因为Java倾向于不在其API中公开其他IPC机制
  • 如果其中一台机器死机,TCP 连接如何终止?

    如果两个主机 A 和 B 之间建立了 TCP 连接 假设主机 A 已向主机 B 发送了 5 个八位字节 然后主机 B 崩溃了 由于未知原因 主机 A 将等待确认 但如果没有收到确认 将重新发送八位字节并减小发送者窗口大小 这将重复几次 直到
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程

随机推荐

  • vofuria的开发(5)替换原vuforia的茶壶模型、改为自己想要的模型AR model

    1 在基于android NDK开发的过程中 替换目标图片之后就是如何替换掉官方demo中给的茶壶模型 换成自己想要模型 如果对替换目标图片不了解的可以点击这里 2 在更换模型的过程中首先你要有一个 obj的文件 这个文件你可以去下载 也可
  • Python 的垃圾回收机制(GC-GarbageCollection)

    得益于Python的自动垃圾回收机制 在Python中创建对象时无须手动释放 这对开发者非常友好 让开发者无须关注低层内存管理 但如果对其垃圾回收机制不了解 很多时候写出的Python代码会非常低效 垃圾回收算法有很多 主要有 引用计数 标
  • 变参函数的学习

    定义 可变参数函数又称参数个数可变函数 也可以称为变参函数 int printf const char format 其中printf就为典型的变参函数 其中 参数可分为两部分 数目确定的固定参数和数目可变的可选参数 函数至少需要一个固定参
  • = 1.0.1ubuntu2.13)' is not installed' aria-label='The required dependency 'apt (>= 1.0.1ubuntu2.13)' is not installed'> The required dependency 'apt (>= 1.0.1ubuntu2.13)' is not installed

    使用Ubuntu系统的时候 系统提示升级 从14 04升级到16 04时 提示 The required dependency apt gt 1 0 1ubuntu2 13 is not installed 该提示指的是没有安装所需的依赖
  • Django实现教育平台---个人用户中心管理

    修改用户头像 django文件 上传 下面的html的样式省去 上传文件一定要定义enctype
  • ElasticSearch6.x 之IK 分词

    IK分词器介绍 elasticsearch analysis ik git地址 https github com medcl elasticsearch analysis ik 分词方式 Analyzer ik smart ik max w
  • pycharm 有些库(函数)没有代码提示的解决办法

    问题描述 如图 输入变量im 后没有关于第三方库相应的函数或其他提示 当然 此文档的前提是有相关的函数说明以及已有相关设置等 解决方案 python是动态强类型语言 IDE无法判断Image open Me jpg 的返回值类型 无法根据参
  • Git密钥配置

    一 下载并安装Git 官网下载地址点击这里 二 打开git bash 选择一个空文件夹 右键选择 Git Bash Here 三 配置密钥 在Git Bash界面输入git命令 初始化自己的用户名和邮箱 git config global
  • C# string类型(引用类型)

    C string类型 引用类型 2016年03月31日 10 34 45 阅读数 966 sing类型 引用类型 名称 CTS类型 说明 string System String Unicode字符串 string str1 hello s
  • Python教程:类的继承——深入理解继承的概念和用法

    Python教程 类的继承 深入理解继承的概念和用法 类的继承是面向对象编程中的重要概念 它允许我们定义一个新的类 并从现有的类中继承属性和方法 这种继承关系可以让我们在代码中实现代码重用 提高代码的可维护性和可扩展性 在本文中 我们将深入
  • k8s非高可用环境搭建

    k8s非高可用环境搭建 文章目录 k8s非高可用环境搭建 环境准备 集群信息 1 节点规划 2 修改hostname 3 添加hosts解析 4 调整系统配置 5 安装docker 部署kubernetes 1 安装kubernetes k
  • Python 一篇入门

    目录 Python 的简介与特点 Python支持多种编程风格 解释运行 跨平台 可扩展强 可嵌入 丰富的库 Python版本选择 Python开发环境搭建 认识Python解释器 快速入门 变量和赋值 动态类型 变量命名规则 认识 数字
  • Android DataStore 使用详解

    转载请标明出处 http blog csdn net zhaoyanjun6 article details 127358235 本文出自 赵彦军的博客 文章目录 概述 使用 DataStore 本地数据 查看DataStore 文件 Ke
  • Eclipse中JUnit的安装及初始使用

    JUnit的下载 安装 1 下载 http www junit org JUnit软件包 版本很多 可以自行选择 2 在eclipse中添加junit jar包 打开eclipse gt 菜单栏点击project gt properties
  • ubuntu pip intall出现“设备上没有空间”的解决办法

    原因 空间问题呗 东西太多了 tmp盘不够大 pip install的时候文件包会预先下载到tmp盘 步骤1 在home目录下新建一个tmp文件夹 用来取代系统根目录的tmp文件夹 步骤2 设置环境变量TMPDIR export TMPDI
  • [LeetCode-02]-Add Two Numbers-性能极好

    文章目录 题目相关 Solution 1 错误的解法 2 正确解法 3 几个用例 后记 每周完成一个ARTS Algorithm Review Tip Share ARTS Algorithm 每周至少做一个 leetcode 的算法题 R
  • 强化学习打卡班第四五章

    强化学习打卡班第四五章 第四章 Policy Gradient梯度策略 例子 贝叶斯公式补充 奖励函数 reward function 最大化方法 梯度上升 PPO算法 从 On policy 到 Off policy 第四章 Policy
  • Linux 使用wget 命令下载JDK的方法

    Oracle官网上下载jdk 需要点击accept licence的才能下载 使用下面的命令 直接可以下载 wget no check certificate no cookies header Cookie oraclelicense a
  • DeBlurGANv2图像去模糊 训练自己的数据集

    之前在有位博主的DeblurGANv2教程的页面下留了言 很多小伙伴来私信我 config yaml怎么调参数 predict py和train py需要怎么修改 之前只跑了predict 有些问题也没办法解答 最近自己跑了一下train
  • MTU 和 MSS 区别

    MTU Maximum Transmit Unit 最大传输单元 即物理接口 数据链路层 提供给其上层 通常是IP层 最大一次传输数据的大小 以普遍使用的以太网接口为例 缺省MTU 1500 Byte 这是以太网接口对IP层的约束 如果IP