┌─────────────────────────────────────────────────────────────┐
│ Source Port (16 bits) | Destination Port (16 bits) │
├─────────────────────────────────────────────────────────────┤
│ Sequence Number (32 bits) │
├─────────────────────────────────────────────────────────────┤
│ Acknowledgment Number (32 bits) │
├───────┬────────┬─────────────┬───────────────┬───────────────┤
│ Data │ Reserved│ Flags │ Window Size │ Checksum │
│ Offset│ (6 bits)│ (6 bits) │ (16 bits) │ (16 bits) │
├─────────────────────────────────────────────────────────────┤
│ Urgent Pointer (16 bits) │
├─────────────────────────────────────────────────────────────┤
│ Options (variable length) + Padding (variable length) │
├─────────────────────────────────────────────────────────────┤
│ Data (variable length) │
└─────────────────────────────────────────────────────────────┘
This diagram shows the layout of fields in a TCP segment header and the data section.