TCP 段不是 TCP 数据包的一部分吗?
这是我读过的:
段是由 TCP 切割成可传输大小并用 TCP 标头包装的一段应用程序数据
TCP 报头本身不是由段组成的吗?
Ric*_*rez 24
我们说的TCP segment
是协议数据单元,它由一个 TCP 标头和一个来自(上)应用层的应用数据片(包)组成。传输层数据一般命名为segment
,网络层数据单元命名为 ,datagram
但是当我们使用 UDP 作为传输层协议时,我们不说UDP segment
,而是说UDP datagram
。我认为这是因为我们没有对 UDP 数据单元进行分段(当我们使用 TCP 时,分段是在传输层进行的)。
最初的 TCP RFC 对它如何使用术语“段”有点模糊。
在某些情况下,术语“段”仅指正在传输的应用程序数据流的当前部分,不包括 TCP 标头。例如,TCP“最大段大小”(MSS) 是此消息中应用程序数据块的最大大小,不包括 TCP 标头。
但在其他情况下,术语“段”包括整个 TCP 消息,包括 TCP 标头。事实上,至少在一种情况下,规范提到了没有应用程序数据的 TCP 段(例如普通确认)。
单个完整的 IP 消息是一个“数据报”。
原始 IP RFC 将链路层消息称为“数据包”。IP 数据报可以分成“片段”以适应小数据包网络的数据包大小限制。
IEEE 802.3/以太网链路层将单个连续物理层传输称为“数据包”。数据包的 MAC 数据链路部分称为“帧”。帧以目标 MAC 地址开始,以帧校验序列结束。帧中可能包含 IP 数据报(或其片段)的部分称为“MAC 客户端数据字段”。
因此,从技术上讲,不存在“TCP 数据包”或“IP 数据包”之类的东西。数据包是来自 IP 下层的术语。TCP 有“段”,IP 有“数据报”。