那么,TCP 报头实际上和 TCP 段是一回事吗?我读到这页面末尾处写着:
尽管看起来是这样,但在大多数情况下,当提到 TCP 报头时,我们谈论的是没有数据的报头,而 TCP 段包含数据。
下面写着:
请务必记住,“TCP 报头”与“TCP 段”相同,这意味着它是 TCP 报头信息加上数据
这些说法互相矛盾。事实到底是什么呢?
答案1
第二段是错误的。也许本意是说数据包而不是标头。这种措辞更有意义:
请务必记住,“TCP 数据包”与“TCP 段”相同,这意味着它是 TCP 标头信息加上数据
答案2
虽然我同意 kce 和 kasperd 提供的关于 TCP 报头和 TCP 段的含义和区别的答案,但我要补充一点,据我所知,TCP 层“包”的正确术语是。以下是我认为OSI 模型每一层TCP Segment
数据的正确术语:package
第 7 层至第 5 层(应用层、表示层、会话层)= PDU(协议数据单元)
第 4 层(TCP、UDP)= TCP 段或 UDP 数据报
第 3 层 (IP) = 数据包
第 2 层(数据链路层)= 帧(以太网帧)
在第 1 层,数据on the wire
以位/电子信号的形式存在
答案3
事实是人们并不一致地使用词汇,我同意你的评估,即该句子是矛盾的(或错误的)。
可以说,最接近标准的是 RFC。在这种情况下RFC793其中段和标头定义如下:
数据报
A message sent in a packet switched computer communications network.
标题
Control information at the beginning of a message, segment, fragment, packet or block of data.
模块
An implementation, usually in software, of a protocol or other procedure.
部分
A logical unit of data, in particular a TCP segment is the unit of data transferred between a pair of TCP modules.
我想说在这种情况下你的评估是正确的(尽管我很乐意看到相反的结果),但是这种语言有点含糊不清,因为你可以将“数据单位……在 TCP 模块之间传输”解释为包含整个数据报。