2

So, is a TCP header actually the same thing as a TCP segment? I was reading this page, where it reads near the end that:

Even though it might seem they are, in most cases, when referring to the TCP header, we are talking about the header without the data, whereas a TCP segment includes the data.

And then just below this it reads:

be sure to keep in mind that the 'TCP Header' is the same thing as a 'TCP Segment', meaning it's the TCP header information plus the Data

These statements are contradictory. What is the truth?

Totem
  • 145
  • 1
  • 6

3 Answers3

4

The second paragraph is incorrect. Maybe the intention was to say packet rather than header. This wording would make more sense:

be sure to keep in mind that the 'TCP packet' is the same thing as a 'TCP Segment', meaning it's the TCP header information plus the Data

kasperd
  • 29,894
  • 16
  • 72
  • 122
2

While I agree with the answers provided by kce and kasperd regarding the meaning of and difference between the TCP Header and a TCP Segment, I'll add that AFAIK the correct term for the "package" at the TCP layer is TCP Segment. Here are what I believe to be the correct terms for a data package at each layer of the OSI model:

Layers 7 through 5 (Application, Presentation, Session) = PDU (Protocol Data Unit)

Layer 4 (TCP, UDP) = TCP Segment or UDP Datagram

Layer 3 (IP) = Packet

Layer 2 (Data Link Layer) = Frame (Ethernet Frame)

At Layer 1 the data is put on the wire as bits/electronic signals

joeqwerty
  • 108,377
  • 6
  • 80
  • 171
1

The truth is that people don't use vocabulary consistently and I would agree with your assessment that the sentence is contradictory (or a mistake).

Arguably the closest thing to a standard is the RFCs. In this case RFC793 where a segment and header are defined thusly:

datagram

      A message sent in a packet switched computer communications
      network.

header

      Control information at the beginning of a message, segment,
      fragment, packet or block of data.

module

      An implementation, usually in software, of a protocol or other
      procedure.

segment

      A logical unit of data, in particular a TCP segment is the
      unit of data transferred between a pair of TCP modules.


I would say your assessment is correct in this case (although I'd be happy to be shown otherwise), however the language is a little wishy-washy because you could interpret "unit of data...transferred between TCP modules" as to include the entire datagram.