TCP 段和 TCP 数据包有什么区别?

use*_*231 19 tcpip packet

TCP 段不是 TCP 数据包的一部分吗?

这是我读过的:

段是由 TCP 切割成可传输大小并用 TCP 标头包装的一段应用程序数据

TCP 报头本身不是由段组成的吗?

Ric*_*rez 24

我们说的TCP segment是协议数据单元,它由一个 TCP 标头和一个来自(上)应用层的应用数据片(包)组成。传输层数据一般命名为segment,网络层数据单元命名为 ,datagram但是当我们使用 UDP 作为传输层协议时,我们不说UDP segment,而是说UDP datagram。我认为这是因为我们没有对 UDP 数据单元进行分段(当我们使用 TCP 时,分段是在传输层进行的)。

数据封装和 TCP/IP 协议栈


Spi*_*iff 9

最初的 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 有“数据报”。


sin*_*800 0

TCP 段就是一个数据包。段只是两台计算机之间 TCP 连接流的一部分。数据报是 UDP 术语中的“数据包”。