一、TCP头数据结构

  1. typedef struct _TCP_HEADER
  2. {
  3. short m_sSourPort;       // 源端口号16bit
  4. short m_sDestPort;        // 目的端口号16bit
  5. unsigned int m_uiSequNum;   // 序列号32bit
  6. unsigned int m_uiAcknowledgeNum; // 确认号32bit
  7. short m_sHeaderLenAndFlag;   // 前4位:TCP头长度;中6位:保留;后6位:标志位
  8. short m_sWindowSize;      // 窗口大小16bit
  9. short m_sCheckSum;       // 检验和16bit
  10. short m_surgentPointer;      // 紧急数据偏移量16bit
  11. }__attribute__((packed))TCP_HEADER, *PTCP_HEADER;

image.png

字段 分段 长度 含义
m_sSourPort 16 源端口号
m_sDestPort 16 目标端口号
m_uiSequNum 32 seq 序列号
m_uiAcknowledgeNum 32 ack 确认号
m_sHeaderLenAndFlag 前4位 4/16 TCP头长度
中6位 6/16 保留,未使用
后6位 6/16 控制位。
- URG:表示紧急指针字段有效
- ACK:表示接收数据序号字段有效,一般表示数据已被接收方接收
- PSH:表示通过flush操作发送的数据
- RST:强制断开连接,用于异常中断的情况
- SYN:发送方和接收方相互确认序号,表示连接操作
- FIN:表示断开连接
m_sWindowSize
16 接收方告知发送方窗口大小(即无需等待确认可一起发送的数据量)
m_sCheckSum 16 检验和16bit
m_surgentPointer 16 紧急数据偏移量16bit