TCP协议

TCP协议

TCP协议全称 Transmission Control Protocol (传输控制协议),与UDP协议恰好相对,TCP协议是一种面向连接的,点对点的,提供可靠传输传输层协议,只有确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

结构

为了实现可靠传输,TCP协议需要考虑数据破坏,丢包,重复,分片数据混乱等诸多问题,因此结构比较复杂,共有12段。

| 源端口 | 目的端口 | 序号 | 确认号 | 数据偏移 | 保留字段 | |——–|———|—-|—–|——|——|

| TCP标记 | 窗口 | 校验和 | 紧急指针 | TCP选项(可选) | TCP数据 | |——-|—-|—–|——|———–|—-|

各段含义如下:

  • 源端口与目的端口与UDP协议中同义,共32位。
  • 序号:TCP传输的数据字节流中的每一个字节都有号码标记,一个字节一个号码,范围在0 ~ (2^32 -1),占32位,TCP首部的序号是表示该TCP数据报首字节的号码。
  • 确认号:与序号配合,表示期待下一段收到数据的首字节序号,占32位,如果某条报文确认号为N,说明N-1及之前的数据都已收到。
  • 数据偏移:表示TCP数据偏离首部距离(即首部长度),占4位,单位为(32位),例如首部大小为20字节,数据偏移则为5。
  • 保留字段:6位,尚未使用的字段。

TCP标记

占6位,分别是:

  • URG:Uergent,紧急位, URG = 1 代表紧急数据。
  • ACK:Acknowledgement,确认位,ACK = 1 确认号生效。
  • PSH:Push,推送位,PSH = 1 表示需要尽快将数据交付应用层。
  • RST:Reset,重置位,RST = 1 表示连接发生错误需要重新连接。
  • SYN:Synchronization,同步位,SYN = 1 表示连接请求报文。
  • FIN: Finish,终止位,FIN = 1 表示释放连接。

窗口

表明允许对方发送的数据量,占16位。

校验和

与UDP协议中同义,占16位。

紧急指针

当URG = 1时,紧急指针表示紧急数据在报文中的位置,占16位。

TCP选项

最多40字节,支持未来的拓展。

可靠传输

停止等待协议


种一棵树最好的时间是在十年前,而后是现在。

Loading Disqus comments...
Table of Contents