网络协议---TCP---TCP中的各种机制

0、连接管理机制(三次握手四次挥手)

1、确认应答机制(并附带确认序列号)

主机A								主机B
	→→→→→数据(1-1000)		→→→→→
	→→→→→应答(下一个是ack=1001)→→→→→
	→→→→→数据(1001-2000)	→→→→→
	→→→→→应答(下一个是ack=2001)→→→→→
	→→→→→数据(2001-3000)	→→→→→
	→→→→→应答(下一个是ack=3001)→→→→→	

网络协议---TCP---TCP中的各种机制_第1张图片

TCP将每个字节的数据都进行了编号,即为序列号。(TCP包的序列号为该包数据首个字节的序列号)
每一个ACK都会附带确认序列号
   1、=已接收的最后一个字节数据的序列号+1
   2、=接下来要接收字节数据的序列号 = 接下来要接收的TCP数据包的序列号
   3、该序列号前的数据全部已接收
      假设:收到了1-1000和2001-3000,但是没有收到1001-2000
      则ACK包的确认序列号为1001

2、超时重传(计时器太慢而被快重传取代)

网络协议---TCP---TCP中的各种机制_第2张图片
网络协议---TCP---TCP中的各种机制_第3张图片

1、重发的条件:发送者A在特定时间间隔内无法收到接收者B的ACK数据包/ACK包 传输过慢or丢包
2、B接收到重复数据,利用序列号丢弃重复数据
3、重传计时器的时间设定:
  ①因网络环境不同而存在差异
  ②设定过长会影响效率;设定过短会频繁发送重复数据
  ③动态计算:Linux中,超时以500ms为一个单位进行控制,每次判定超时重发的超时时间都是500ms的整数倍。若重发一次之后仍得不到应答,等待2500ms后再进行重传;如果仍得不到应答,等待4500ms进行重传,依次类推,以指数形式递增。累计到一定的重传次数,TCP认为网络或者对端主机出现异常,强制关闭连接。

3、滑动窗口(批量传输数据)

引入之前:数据—ACK—数据—ACK…(必须在ACK后才发送下一个数据包)
总的传输时间=N份数据传输时间+N份应答传输时间
时间效益差,尤其在数据往返时间较长的情况下

引入之前之后:改为一次发送多条数据(本质:将多个段的等待时间重叠在一起了。)
总的传输时间=N份数据传输时间重叠成了1份时间,N份应答传输时间,重叠成了一份时间
网络协议---TCP---TCP中的各种机制_第4张图片

发送窗口大小指的是无需等待ACK而可以继续发送的数据的最大值
  1、发送窗口大小由接收方的接收缓冲区大小决定,
   可以在建立TCP连接时协商
  2、窗口越大,则网络的吞吐率就越高。
滑动:窗口范围就是表示当前哪些数据在等待ACK,随着一个ACK到达就立刻发送下一个数据,等待的数据包的范围就在逐渐滑动

操作系统内核为了维护这个滑动窗口,需要开辟发送缓冲区来记录当前还有哪些数据没有应答;只有确认应答过的数据才能从缓冲区删掉。

网络协议---TCP---TCP中的各种机制_第5张图片

滑动窗口下的丢包情况

1、ACK丢失or后面的ACK先到

你可能感兴趣的:(网络协议)