Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
up vote 4 down vote accepted

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

share|improve this answer
You just got in there first and clarified this for me. Thanks – Totem May 2 '14 at 19:54

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

share|improve this answer
Thanks, that little run down is very useful – Totem May 2 '14 at 19:58
where would you fit the 'datagram' into this picture? – Totem May 2 '14 at 20:02
See my edit.... – joeqwerty May 2 '14 at 20:17
RFC791 (IPv4) uses "datagram" for the unit at the IP layer. IPv6 specs use "packet". Apparently the word "datagram" is out of style. – Wumpus Q. Wumbley May 2 '14 at 20:22

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:


      A message sent in a packet switched computer communications


      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


      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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.