theydy / notebook

记录读书笔记 + 知识整理,vuepress 迁移中 https://theydy.github.io/notebook/
0 stars 0 forks source link

TCP 协议 #13

Open theydy opened 5 years ago

theydy commented 5 years ago

TCP 协议的特点

  1. TCP 是面向连接的,开始传输数据前需要先建立连接
  2. TCP 连接只能是一对一
  3. TCP 提供可靠的交付服务,TCP 传输的数据可以保证:无差错,无重复,无丢失,并且按顺序到达
  4. TCP 协议是全双工的

TCP 如何保证可靠传输

停止等待协议

停止等待协议的原理是每发完一组数据就停止发送,等待对方确认,在收到确认后再发下一组数据。如果对方接收到重复的数据,会丢弃该分组,但还要发送确认。

在停止等待协议中,如果出现数据错误而没有收到确认,会执行超时重传。超时重传有两种,自动超时重传 ARQ 协议 连续 ARQ 协议

自动超时重传 ARQ 协议:每组数据都等待确认,如果没有收到确认就重传当前分组。

连续 ARQ 协议:发送方维持一个发送窗口,位于窗口内的分组可以连续发送,不需等待确认,接收方采用累计确认,对按需到达的最后一个分组发送确认。

滑动窗口

滑动窗口是一种流量控制技术,TCP 利用滑动窗口实现流量控制的机制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。接收方会把当前接收窗口的大小写入应答报文,发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据,发送方让自己的发送窗口取为拥塞窗口和接收方的接收窗口中较小的一个

当出现 接收窗口剩余空间 0 的情况,发送端会停止发送数据,但会定时发送 1 字节的请求给接收方,让接收方告知窗口大小。

拥塞控制

拥塞处理和流量控制不同,后者是作用于接收方,保证接收方来得及接受数据。而前者是作用于网络,防止过多的数据拥塞网络,避免出现网络负载过大的情况。