网络术语MSS/MTU/TSO/Len说明

server/2024/12/15 23:27:41/

网络通信中,MSS、MTU、Len 和 TSO 是与数据包传输相关的关键概念。以下是对这些概念的详细解释和它们之间的关系。

1. MSS(Maximum Segment Size)
1.1 定义
    MSS 是 TCP 协议中的一个参数,表示 TCP 数据段中可以携带的最大数据量(不包括 TCP 头部和 IP 头部)。
    在 TCP 三次握手时,客户端和服务端会协商 MSS 值,以确保数据包不会超过网络路径的 MTU。

1.2 作用
    限制数据包大小:MSS 用于限制每个 TCP 数据段的最大数据长度,避免数据包过大导致 IP 分片。
    优化传输效率:通过合理设置 MSS,可以提高传输效率,减少网络开销。

1.3 计算
    MSS = MTU - IP 头部大小 - TCP 头部大小
    例如,以太网的 MTU 通常为 1500 字节,IP 头部为 20 字节,TCP 头部为 20 字节,因此 MSS = 1500 - 20 - 20 = 1460 字节。


2. MTU(Maximum Transmission Unit)
2.1 定义
    MTU 是网络层(IP 层)的参数,表示数据包的最大长度(包括 IP 头部和数据)。
    MTU 决定了数据包在网络中传输时的最大大小。

2.2 作用
    避免 IP 分片:如果数据包大小超过 MTU,IP 层会进行分片,这会增加网络开销并降低传输效率。
    优化网络性能:通过合理设置 MTU,可以避免分片,提高网络传输效率。

2.3 常见 MTU 值
    以太网:1500 字节。
    PPPoE:1492 字节。
    VPN:通常小于 1500 字节,具体取决于 VPN 协议。
    
3. Len(Length)
3.1 定义
    Len 表示数据包的实际数据长度(不包括头部)。
    在 TCP 数据包中,Len 是 TCP 数据段中实际携带的数据量。

3.2 作用
    数据包大小:Len 用于表示数据包的实际大小,帮助接收方正确处理数据。
    传输效率:通过合理控制 Len,可以优化数据传输效率。

3.3 与 MSS 的关系
    Len <= MSS:在正常情况下,Len 不会超过 MSS。
    Len > MSS:如果 Len 超过 MSS,TCP 会自动将数据分片为多个数据包。

4. TSO(TCP Segmentation Offload)
4.1 定义
    TSO 是一种网络优化技术,允许网卡硬件对大数据包进行分片,而不是由操作系统内核完成。
    TSO 将大数据包的分割任务从 CPU 转移到网卡,从而减轻 CPU 的负担,提高网络传输效率。
    
4.2 作用
    减少 CPU 开销:通过将分片任务交给网卡,TSO 可以显著减少 CPU 的负担。
    提高传输效率:TSO 可以提高网络传输效率,特别是在高带宽和低延迟的网络环境中。
    
4.3 与 MSS 的关系
    TSO 与 MSS 的关系:
    TSO 允许发送大于 MSS 的数据包,网卡会自动将数据包分片为多个 MSS 大小的数据包。
    例如,如果 TSO 启用,操作系统可以发送一个 64KB 的数据包,网卡会将其分片为多个 1460 字节的 TCP 数据段。

4.4 启用 TSO
    在 Linux 系统中,可以通过以下命令检查和启用 TSO:
    ethtool -k eth0 | grep tcp-segmentation-offload
    ethtool -K eth0 tso on

5. MSS、MTU、Len 和 TSO 的关系
5.1 MSS 与 MTU 的关系
    MSS = MTU - IP 头部大小 - TCP 头部大小
    例如,以太网的 MTU 为 1500 字节,MSS = 1500 - 20 - 20 = 1460 字节。
    
5.2 Len 与 MSS 的关系
    Len <= MSS:在正常情况下,Len 不会超过 MSS。
    Len > MSS:如果 Len 超过 MSS,TCP 会自动将数据分片为多个数据包。
    
5.3 TSO 与 MSS 的关系
    TSO 允许发送大于 MSS 的数据包:
    例如,如果 TSO 启用,操作系统可以发送一个 64KB 的数据包,网卡会将其分片为多个 1460 字节的 TCP 数据段。
    
5.4 TSO 与 MTU 的关系
    TSO 不影响 MTU:
    TSO 只是将分片任务从 CPU 转移到网卡,不会改变 MTU 的值。
    网卡仍然会根据 MTU 对数据包进行分片。

6. 总结
MSS:TCP 数据段中可以携带的最大数据量(不包括 TCP 头部和 IP 头部)。
MTU:数据包的最大长度(包括 IP 头部和数据),用于避免 IP 分片。
Len:数据包的实际数据长度(不包括头部)。
TSO:一种网络优化技术,允许网卡对大数据包进行分片,减轻 CPU 的负担。

关系:
    MSS = MTU - IP 头部大小 - TCP 头部大小。
    Len <= MSS,如果 Len > MSS,TCP 会自动分片。
    TSO 允许发送大于 MSS 的数据包,网卡会自动分片。


巨帧:
    巨帧是指 MTU 大于 1500 字节的数据包。
    常见的巨帧 MTU 值为 9000 字节,但也可以根据需求设置为其他值(如 4000、8000 等)。
    
作用:
    减少数据包的数量,从而减少网络开销(如减少帧头和校验的开销)。
    提高大文件传输的效率,特别是在高带宽和低延迟的网络环境中。
    
配置方法:
Linux:
    修改网络接口的 MTU 值:
    ifconfig eth0 mtu 9000
    
或者使用 ip 命令:
    ip link set dev eth0 mtu 9000    
    
巨帧需要系统网卡和交换机的支持

ethtool -g eth0
输出示例:
    Ring parameters for eth0:
    Pre-set maximums:
    RX:             4096
    RX Mini:        0
    RX Jumbo:       8192
    TX:             4096
    Current hardware settings:
    RX:             512
    RX Mini:        0
    RX Jumbo:       0
    TX:             512
    
RX Jumbo:如果 RX Jumbo 的值大于 0,说明网卡支持巨帧。

启用巨帧的接收和发送
方法:
    使用 ethtool 启用巨帧的接收和发送。
    命令:
    ethtool -G eth0 rx 8192 tx 8192

测试命令:
    ping -M do -s 8972 <destination_ip>
    -M do:禁止分片。
    -s 8972:发送 8972 字节的数据(加上 28 字节的 IP 和 ICMP 头部,总大小为 9000 字节)。

检测网卡TSO:
命令:
    ethtool -k eth0
输出示例:
    Features for eth0:
    rx-checksumming: on
    tx-checksumming: on
    scatter-gather: on
    tcp-segmentation-offload: off
    udp-fragmentation-offload: off
    generic-segmentation-offload: on
    generic-receive-offload: on
    large-receive-offload: off
    
tcp-segmentation-offload:如果显示为 on,表示 TSO 已启用;如果显示为 off,表示 TSO 未启用。
scatter-gather:如果显示为 on,表示网卡支持 TSO 所需的分散-聚集(Scatter-Gather)功能。    

开启TSO:
使用 ethtool 命令开启 TSO
    ethtool -K eth0 tso on
验证:
    使用 ethtool -k eth0 检查 TSO 是否已启用:
    ethtool -k eth0
    
修改网络接口配置文件(可选)
方法:
如果希望在系统重启后保持 TSO 的配置,可以修改网络接口的配置文件。
步骤:
    编辑网络接口的配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0),添加以下内容:
        ETHTOOL_OPTS="tso on"

    示例:
        DEVICE=eth0
        BOOTPROTO=none
        ONBOOT=yes
        ETHTOOL_OPTS="tso on"
    重启网络服务:
        systemctl restart network
        
抓包时,TCP建立连接之初告知服务端MSS为1460,而后续数据包Len却是2920,就是因为网卡支持TSO


http://www.ppmy.cn/server/150469.html

相关文章

NLP-Huggingface基本使用方法

NLP的网络结构大同小异&#xff0c;只不过训练策略可能会不同。因为与图像cv不同&#xff0c;文本训练数据非常的多&#xff0c;cv可以使用10几张就可以获得特征向量&#xff0c;而文本做不到学几句话就能让计算机听得懂话。因此&#xff0c;我们都需要使用预训练模型&#xff…

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能&#xff0c;是通过获取手机设备&#xff0c;加速度传感器接口&#xff0c;获取其中的数值&#xff0c;进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…

EasyExcel设置表头上面的那种大标题(前端传递来的大标题)

1、首先得先引用easyExcel的版本依赖&#xff0c;我那 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency> 2、然后得弄直接的实体类&#xff0c;&…

Qt编写的文件传输工具

使用QT编写的文件传输工具 文件传输工具通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 文件传输工具 通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 收到的广播消息可以显示在IP地址列表中&#xff0c;点击IP地址可以自动填充到IP地址栏内 选择文件…

【计算机网络】概述

目录 1、计算机网络在信息时代中的作用 2、因特网概述 2.1 网络的网络 2.2 因特网发展的三个阶段 3、因特网的组成 3.1 因特网的边缘部分 3.2 因特网的核心部分 4、计算机网络的类别 4.1 计算机网络的定义 4.2 几种不同类别的网络 5、计算机网络的性能指标 6、计算…

将VSCode添加至右键的菜单栏

文章目录 打开注册表编辑器共需要在3处添加&#xff1a;第一处&#xff1a;第二处&#xff1a;第三处&#xff1a;最终效果&#xff1a; 原文链接&#xff1a; https://www.cnblogs.com/alannxu/p/18234323 打开注册表编辑器 1、打开运行界面&#xff1a;WinR 2、在弹出的运行…

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input&#xff08;输入端&#xff09;&#xff1a;智能预处理与优化策略2.Backbone&#xff08;骨干网络&#xff09;&#xff1a;高效特征提取3.NECK&#xff08;颈部&#xff09;&#xff1a;特征增强与多尺度融合4.Prediction…

oracle归档模式下的快速热备方法-适合小库

在我们的一些小型的oracle生产库中&#xff0c;有些时候我们可以在不停库且不使用rman的情况下实现数据库的热备。该热备的原理是通过控制数据文件块头的scn号在备份时候不变化&#xff0c;进而保证备份的数据文件数据一致性。 一、环境 数据库版本&#xff1a; 数据库需要开启…