TCP slices (dices?) the incoming byte-stream data into
segments for transmission across the Internet. A
segment is a highly-structured data package consisting of an
administrative header and some application
data.
Source and Destination Port Numbers
We have already seen that TCP server processes wait for
connections at a pre-agreed port number. At connection
establishment time, TCP first allocates a client port
number -- a port number by which the client, or
initiating, process can be identified. Each segment contains both
port numbers.
Segment and Acknowledgment Numbers
Every transmitted segment is identified with a 32-bit
Sequence number[2],
so that it can be explicitly acknowledged by the receipient. The
Acknowledgment Number identifies the last segment recived by the
originator of this segment.
Application Data
Optional because some segments convey only control
information -- for example, an ACK segment has a valid
acknowledgment number field, but no data. The data field can be any
size up to the currently configured MSS for the
whole segment.
[2] The sequence
number actually identifies the last byte of data
contained in this segment.