结合RFC标准看待数据段、数据报和数据帧

专业术语

中文 英文
TCP数据段 TCP Segment
IP数据报 IP Datagram
Ethernet数据帧 Ethernet Frame

1、TCP Segment

RFC793 传输控制协议,即最初的TCP网络规范中,TCP segment 和 TCP segments 关键字总计出现了 9 次,segment 关键字更是出现了 338 次。

1.1、TCP Segment是否包括TCP Header呢?

我认为,从概念上讲,TCP Segment是包含TCP Header的,TCP Segment可以表示TCP Header+TCP Payload。

下面的内容截取自 RFC793 传输控制协议 Glossary

TCP首部在TCP段的开头,所以说TCP Segment是包含TCP Header的。

1.2、TCP Header中的Acknowledge Number的增量是否包含TCP Header的长度?

我认为是不包含的。

首先,从 RFC793 传输控制协议 3.1.Header Format 了解一下概念:

序列号 Sequence Number:

此段中第一个数据八位字节的序列号(存在SYN时除外)。如果存在SYN,则序列号为初始序列号(ISN),第一个数据八位组为ISN+1。

确认号 Acknowledge Number:

如果设置了ACK控制位,则该字段包含该段发送方期望接收的下一个序列号的值。一旦建立了连接,将始终发送此消息。

我们来看下面的例子,来自 RFC793 传输控制协议 3.4.Establishing a connection

  1. 客户端首先发送一个SYN段,指示它将使用从序列号100开始的序列号。
    即客户端告诉服务端:我的初始序列号ISN等于100。
  2. 服务端发送一个SYN段并确认它从客户端接收到的SYN段。注意,确认字段表示服务端现在期望听到序列101(=客户端SYN段的序列号+1),确认占用序列100的SYN。
    即服务端告诉客户端:我知道客户端的ISN等于100了,客户端发送给服务端的下一个段的序列号等于101。另外,我的ISN是300。
  3. 客户端响应一个空段,其中包含服务端的SYN段的ACK;
    即客户端告诉服务端:我知道服务端的ISN等于300了,服务端发送给客户端的下一个段的序列号等于301。
  4. 客户端发送一些数据。请注意,本次的序列号和上一次空段的序列号相同,都是101,因为ACK不占用序列号空间(如果占用了序列号空间,我们将结束ACK!)。
  5. 服务端发送一个空段,其中包括客户端上一个数据段的ACK。注意,确认字段表示服务端现在期望听到序列1643(= 上一个客户端发来的TCP段的序列号+TCP段的数据部分的长度
    即服务端告诉客户端:我收到你序列号从101开始,实际载荷(即数据部分的)长度为1542的段了,确认占用1642的序列号,客户端发送给服务端的下一个段的序列号等于1643。

1.3、MSS 是否包含TCP Header的长度?

答案是否定的。

MSS: Maxitum Segment Size 最大分段大小。从 RFC793 传输控制协议 3.1.Header Format 了解一下概念:

如果存在此选项,则它会在发送此段的TCP上传递最大接收段大小。
此字段只能在初始连接请求中发送(即,在设置了SYN控制位的段中)。如果未使用此选项,则允许任何段大小。

  • 注意,只有在“三次握手”的前两次(即设置了SYN控制位的段中),才会出现 MSS 选项。

那么,MSS的大小是如何定义的呢?从 RFC879 The TCP Maximum Segment Size and Related Topics 介绍部分

TCP MSS = IP 数据报长度 - 40

RFC879 第三节更清晰的说明了:

所以说,MSS 是不包含 TCP Header 的。

2、IP Datagram

我们知道 IP协议是网络层协议,在 RFC791 INTERNET PROTOCOL 的 Glossary 中关键字 datagram 出现了 208 次,另外关于网络数据报的术语解释如下:

一对因特网模块之间交换的数据单位(包括 IP Header)

另外,RFC894 A Standard for the Transmission of IP Datagrams over Ethernet Networks 就明确使用了 IP Datagram 的说法。另外,也是在这篇文章中,用到了 Ethernet Frame 的说法。

3、Ethernet Frame

RFC1042 A Standard for the Transmission of IP Datagrams over IEEE 802 Networks 提到了关键字 frame 共计 29 次。

IEEE 802又称为LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会),致力于研究局域网和城域网的物理层和MAC层中定义的服务和协议,对应OSI网络参考模型的最低两层(即物理层和数据链路层)。

原文地址:https://www.cnblogs.com/kendoziyu/p/15349761.html