描述

TCP 报文格式?

image-20230409171134135

源端口:发送方进程的端口

目的端口:接收方进程的端口

seq序号:数据偏移部分第一个序号

ack确认号:这个序号之前的字节我都接受了 + 请给我发从这个序号之后的字节

数据偏移:TCP首部有多长

保留:没东西

窗口:发送的一方自己的接受窗口大小

校验和:

URG:配合紧急指针用的,让发送的那段数据不用缓存直接给上方进程

SYN:同步序列号

ACK:确认报文段

FIN:结束报文段

RST:超时重传的那个


参考

  • 源端口(Source Port)和目的端口(Destination Port):每个16位,用于标识发送方和接收方的应用程序。
  • 序列号(Sequence Number)和确认号(Acknowledgment Number):每个32位,序列号表示本次传输的数据的第一个字节的序号,确认号表示期望下一次接收到的字节的序号。
  • 数据偏移(Data Offset):4位,表示TCP头部的长度,单位为32位字。最小值为5,最大值为15。
  • 保留位(Reserved):6位,保留未使用,必须为0。
  • 控制位(Flags):6位,用于标识TCP报文的类型。U表示紧急,A表示确认,P表示推送,R表示重置,S表示同步,F表示结束。
  • 窗口(Window):16位,表示接收方还能接收多少字节的数据。
  • 校验和(Checksum):16位,用于检测TCP报文是否有错。
  • 紧急指针(Urgent Pointer):16位,用于标识紧急数据的边界。
  • 选项(Options):长度可变,用于传递额外的信息,如最大报文长度、时间戳等。
  • 填充(Padding):长度可变,用于填充选项字段,使TCP头部的长度为32位的倍数。
  • 数据(Data):长度可变,表示应用层传输的数据。