Skip to content

TCP 如何保证可靠传输 #110

@JasonJe

Description

@JasonJe

TCP 通过序列号超时重传检验和流量控制滑动窗口拥塞控制实现可靠性。

  1. 应用数据被分割成 TCP 认为最适合发送的数据块。

  2. TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

  3. TCP 的接收端会丢弃重复的数据。

  4. 超时重传:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

  5. 校验和TCP 将保持它首部和数据的检验和,发送的数据包的二进制相加然后取反。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

  6. 流量控制TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的我数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。接收方有即时窗口(滑动窗口),随 ACK 报文发送。(TCP 利用滑动窗口实现流量控制)

  7. 滑动窗口:实际中的传输方式,

  8. 拥塞控制:当网络拥塞时,减少数据的发送。发送方有拥塞窗口,发送数据前比对接收方发过来的即使窗口,取小慢启动、拥塞避免、拥塞发送、快速恢复。应用数据被分割成TCP认为最适合发送的数据块,TCP 的接收端会丢弃重复的数据。

停止等待协议也是为了 TCP 协议传输稳定可靠,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

Metadata

Metadata

Assignees

No one assigned

    Labels

    🌐网络相关

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions