什么是 MSS?2025年03月17日 | 阅读 9 分钟 MSS 是计算机网络中的一个术语。它代表数据包的最大分段大小。网络数据包或数据包是指可以在网络上作为单个单元传输的数据。这些数据包用于通过互联网或其他使用互联网协议进行通信的网络传输 IP 数据。 此参数设置节点可以通过网络(如互联网)发送的网络数据包的最大大小限制。传输到网络的所有数据被分成几个更小的块。这些分解的数据片段称为数据包。额外的数据包提供了描述数据帧中内容的额外信息。它包含数据传输的关键信息,例如源地址和目标地址。这些信息作为数据包的头部附加。最大分段大小计算网络数据包非头部组件的大小。该组件称为数据有效载荷。 ![]() 为了理解 MSS 的概念,让我们用一个类比:数据包可以表示为运输卡车。头部可以表示卡车本身,而有效载荷是正在运输的拖车或货物。拖车有最大的载货容量。如果拖车超过特定容量,它可能会损坏,卡车将无法继续前往目的地节点。 MSS 可以定义为节点在网络中可以传输和接收的最大传输控制协议数据段大小。数据段描述为数据有效载荷的长度;它不包括数据包头部。MSS 以字节为单位计算。 MSS 可以使用另一种度量单位来计算整个数据包的大小。这个单位称为 MTU,即最大传输单元。MSS 包括数据有效载荷以及 TCP/IP 头部。 再次考虑相同的类比,MTU 可以表示为整个卡车的总重量,即拖车/货物重量与卡车重量之和。 如果从最大传输单元中减去 TCP/IP 头部大小,MSS 就等于 MTU。MTU 的公式可以表示为 MSS = MTU - (TCP /IP 头部) 数据包的头部大小最多可达 40 字节。 MTU 和 MSS 之间的另一个区别是,如果数据包大小大于节点的 MTU,则数据包可能会被丢弃或进一步分割成更小的片段。这些片段称为数据碎片。但是,如果数据包大小超过 MSS,则数据包将被简单地丢弃,不会传递到接收节点。 TCP 和 TCP 头部传输控制协议 (TCP) 是一种负责确保数据包成功按顺序传输的协议。它确保在传输过程中没有数据包丢失。 考虑一个快递服务的例子,他们会在寄送快递前进行确认。这将确保他们在发送快递前,在预定时间在家。TCP 在网络中就像快递服务,而数据包就像网络中的快递员或包裹。 TCP 通过在将使用网络通信和传输数据的节点之间建立连接来开始其操作。连接是使用称为三次握手或 TCP 握手的方法建立的。 TCP 通过连接节点来促进通信。连接是通过执行 TCP 握手来建立的。最大分段大小由两个节点在执行握手时确定。两个节点都确定任何一个节点可以接收的数据包的大小。这个过程称为 MSS 钳制。TCP 在每个数据包中插入额外数据。该头部包含有关连接和数据包顺序的信息。它还包含对数据传输至关重要的发送方和接收方端口号。 TCP 和 IP 头部长度TCP 头部的长度几乎为 20 字节。IP 头部包含额外数据,例如源 IP 地址和目标 IP 地址。IP 地址的长度与 TCP 头部类似;它也长 20 字节。TCP 和 IP 头部中有几个可选的头部字段,但它们会增加头部的长度,并且仅在必要时使用。 字节是用于表示计算机内存大小的数据单位。一个字节代表八个二进制数字,结合了八个 1 和 0。 最大分段大小示例考虑一个 MTU 为 1500 的网络路由器。这意味着通过此网络传输的最大数据包大小为 1500 字节。如果节点通过此路由器传输更大的数据包,则数据包可能会被分片。 让我们计算路由器的 MSS。 MSS = MTU - (TCP + IP 头部) 如上所述,TCP 和 IP 头部长度均为 20 字节。因此,要计算 MSS,请从 MTU 中减去这些头部的长度。 1460 = 1500 - (20 + 20) 因此,路由器 MSS 应该是 1460 字节。如果数据包的大小超过 1460 字节,数据包将被分片或从网络中丢弃。如果设备没有被告知网络路由器或数据传输过程中使用的任何其他中间节点的 MTU 和 MSS,节点可能会向网络传输过大的数据包。节点可以执行 MTU 发现,以确保此类事件在网络中得到预防。 实施 IPsec 对 MSS 的影响IPsec 是 Internet Protocol security 的缩写。它是 Internet Protocol 的改进版本,而 Internet Protocol 本身并不安全。使用 IPsec 传输的数据包被加密,以确保只有两个节点(即发送节点和接收节点)才能解释数据。数据有效载荷免受任何其他中间节点的侵害。该协议用于建立虚拟专用网络。 它通过在数据包长度中添加几个额外的字节来增加数据包的大小。使用该协议时,在计算节点的 MSS 时必须考虑这些额外数据。 修改后的 MSS 公式如下: MSS = MTU - (40 + IPsec) MSS 和传输层最大分段大小是在传输层计算的。当实现 TCP 时,会实现此度量。TCP 是一种传输层协议。它类似于 OSI 模型网络层中实现的 MTU。 MSS 钳制可能存在网络路由器设置的 MTU 值小于以太网连接可传输的标准 1500 字节的情况。如果节点不知道较低的 MTU,这可能会导致数据包丢失或难以查找数据包。 为了确保数据包成功传输到接收节点,节点可以减小传入数据包有效载荷的大小。通过执行 MSS 钳制可以减小大小。这是在 TCP 握手期间执行的,服务器可以确定数据包的 MSS,并指示节点它将接受此范围内的请求。这称为钳制,因为节点会限制它将从其他节点接收的最大有效载荷大小。 例如,如果两个服务器(例如 A 和 B)正在尝试建立 TCP 连接。第二个服务器的 MSS 值为 1430 字节。执行 TCP 握手后,服务器 A 将传输最大数据包,数据有效载荷大小为 1430 字节。直到建立连接,这个值才会固定。 MSS 钳制还可用于执行 GRE 隧道。在 GRE 隧道中,会将一个 24 字节的头部插入到原始数据包中,该数据包是为了传输到新目的地而设计的。新的数据头部包含有关网络中新接收节点的信息。如果原始数据包的大小超过 1476 字节,则会增加典型 1500 字节 MTU 的数据包大小。如果大小超过限制,数据包将无法通过以太网电缆传输。因此,我们可以使用 MSS 钳制技术来减小数据有效载荷的大小,这样即使最大的 GRE 头部被添加到数据包中,数据包也不会超过限制。 MSS 的默认值在网络中的大多数节点上,TCP MSS 的默认值设置为 536 字节。服务器节点可以修改 MSS 的默认值。在 TCP 中提供了修改 MSS 的选项。服务器可以在执行 TCP 握手时使用此选项来修改 TCP SYN 数据包的值。一旦节点之间的连接建立,就无法更改 MSS 值。 层间通信层间通信用于将 MSS 的值通知下一层。这样做是为了确保数据包的值不会超过 MTU。通信执行方式如下: 网络驱动程序或接口应该知道可以直接附加到节点的网络可以传输的最大传输单元。 IP 与网络驱动程序通信。它询问驱动程序可以通过网络发送的最大传输单元。 TCP 与互联网协议通信,并确定可传输的最大数据报数据大小 (MDDS)。MDDS 的大小是通过从 MTU 中减去 IP 头部来计算的。 因此,MDDS 的公式为: MDDS = MTU - IP 头部长度 当建立 TCP 连接时,TCP 提供一个选项,允许服务器修改 MSS 的值。MSS 的值设置为从 MDDS 中减去 TCP 头部长度。因此,计算 MSS 的公式如下: MSS = MDD - TCP 头部长度 或 MSS = MTU - (TCP + IP 头部) 层间通信也用于将 TCP 段传输到接收节点。在这种情况下,层间通信如下: TCP 使用默认的或接收到的 MSS 选项值来计算最大分段数据大小 (MSDS)。 数据包的分片取决于使用的 IP 版本。TCP 进行通信 与 IP 协同,以确保可以执行分片。 如果可以执行分片,TCP 可以传输 IP 段(包括 TCP 头部),其大小等于 MSDS + TCP 头部长度。 如果无法执行分片,TCP 将数据包传输给 IP。段的大小(包括 TCP 头部)应小于 MDDS 或 (MSDS + TCP 头部长度)。 互联网协议检查 TCP 传输的数据包的大小。如果数据包的长度大于 MDDS,则数据包将被丢弃或分片。如果它小于或等于 MDDS,则会将 IP 头部添加到数据包中并转发给网络驱动程序。 MSS 对网络的影响使用 MSS 的优势
使用 MSS 的缺点
下一主题网络安全与软件安全 |
我们请求您订阅我们的新闻通讯以获取最新更新。