Table 156: TCP Segment Format
Field
Name
|
Size (bytes)
|
Description
|
Source
Port
|
2
|
Source Port: The
16-bit port number of the process that originated the TCP segment on
the source device. This will normally be an ephemeral
(client) port number for a request sent
by a client to a server, or a well-known/registered
(server) port number for a reply from
a server to a client.
|
Destination
Port
|
2
|
Destination
Port: The 16-bit port number of the process that is the ultimate
intended recipient of the message on the destination device. This will
usually be a well-known/registered
(server) port number for a client request,
or an ephemeral
(client) port number for a server reply.
|
Sequence
Number
|
4
|
Sequence Number:
For normal transmissions, the sequence number of the first byte of data
in this segment. In a connection request (SYN) message, this
carries the initial sequence number (ISN) of the source TCP. The first
byte of data will be given the next sequence number after the contents
of this field, as described in the
topic on sequence number synchronization.
|
Acknowledgment
Number
|
4
|
Acknowledgment
Number: When the ACK bit is set, this segment is serving
as an acknowledgment (in addition to other possible duties) and this
field contains the sequence number the source is next expecting the
destination to send. See
the topic describing TCP data transfer for details.
|
Data Offset
|
1/2
(4 bits)
|
Data Offset: Specifies
the number of 32-bit words of data in the TCP header. In other words,
this value times four equals the number of bytes in the header, which
must always be a multiple of four. It is called a data offset
since it indicates by how many 32-bit words the start of the data is
offset from the beginning of the TCP segment.
|
Reserved
|
3/4
(6 bits)
|
Reserved:
6 bits reserved for future use; sent as zero.
|
Control
Bits
|
3/4
(6 bits)
|
|
Window
|
2
|
Window:
Indicates the number of octets of data the sender of this segment is
willing to accept from the receiver at one time. This normally corresponds
to the current size of the buffer allocated to accept data for this
connection. This field is, in other words, the current receive window
size for the device sending this segment, which is also the send window
for the recipient of the segment. See
the data transfer mechanics topic for details.
|
Checksum
|
2
|
Checksum: A 16-bit
checksum for data integrity protection,
computed over the entire TCP datagram plus a special pseudo header
of fields. It is used to protect the entire TCP segment against not
just errors in transmission, but also errors in delivery. Optional alternate
checksum methods are also supported.
|
Urgent
Pointer
|
2
|
Urgent
Pointer: Used in conjunction with the URG control bit
for priority data transfer. This field contains the sequence number
of the last byte of urgent data. See
the priority data transfer topic for details.
|
Options
|
Variable
|
|
Padding
|
Variable
|
Padding:
If the Options field is not a multiple of 32 bits in length,
enough zeroes are added to pad the header so it is a multiple of 32
bits.
|
Data
|
Variable
|
Data: The bytes
of data being sent in the segment.
|