TCP基本几个属性简介


41.png

  • ACK Number: 接收到的字节序号
  • Sequence Number: 发送的字节序号
  • Data Offset: 数据偏移量
  • window: 窗口的字节容量,最大为65535字节

另外,在TCP的选项字段中还包含了一个TCP窗口的扩大因子,Option-kind为3,Option-length为3个字节,Option-data取值范围是0-14. 窗口扩大因子用来扩大TCP窗口,可以把最大为16bit的窗口扩大为31bit。

滑动窗口基本原理

发送窗口

对于TCP会话的发送方,任何时候在其发送缓存中的数据都可以分为4类, 已经发送并收到ACK的已经发送但还没收到ACK的未发送但允许发送的未发送且对端不允许发送的。 其中, 已经发送但还没收到ACK的未发送但允许发送的 被称为发送窗口。

42.jpg
当收到接收方的新的ACK,则对发送窗口中的后续字节的确认 导致了 发送窗口的滑动。滑动原理如下图。
43.jpg

接收窗口

对于TCP的接收方,在某一时刻在它的接收缓存中有3种状态。 已接收, 未接收准备接收未接收并未准备接收。其中,未接收准备接收 称为接收窗口。

发送窗口与接收窗口的关系

TCP是双工的协议,会话的双方都可以同时发送和接收。TCP会话的双方都各自维护一个发送窗口和接收窗口。 其中各自的接收窗口大小取决于应用、系统、硬件的限制。 各自的发送窗口则取决于对端通告的接收窗口。
44.jpg