博客
关于我
计算机网络知识——TCP可靠传输
阅读量:401 次
发布时间:2019-03-05

本文共 1485 字,大约阅读时间需要 4 分钟。

TCP 可靠性保证机制解析

TCP协议作为面向连接的、可靠的传输协议,其核心设计目标是确保数据能够可靠、完整地传输到目标端。以下从可靠性保证、重传机制、滑动窗口协议到流量控制和拥塞控制等方面详细阐述TCP的实现原理。

TCP 可靠性如何保证?

TCP协议通过多层机制确保数据传输的可靠性:

  • 信道可靠性

    TCP使用三次握手和四次挥手机制,确保建立和终止连接的可靠性。三次握手确保连接的建立,四次挥手确保数据的完整发送和连接的正确终止。

  • 数据正确性

    TCP采用序列号、校验和和超时重传机制来保证数据的完整性。序列号确保数据按顺序传输,校验和用于检测数据损坏,超时重传机制用于处理丢失的数据包。

  • 传输控制

    通过流量控制和拥塞控制机制,TCP在端到端和网络层面实现数据传输的有效率和稳定性。流量控制通过滑动窗口协议避免发送过快,拥塞控制则调节发送速率以适应网络状态。

  • TCP 重传机制

    TCP的重传机制是通过序列号和确认应答机制来实现的。当传输过程中出现丢失或损坏的数据包时,TCP协议会触发重传机制以确保数据的完整性。常见的重传机制包括超时重传、快速重传(SACK)、D-SACK等。

  • 超时重传

    TCP协议要求在发送端每发送一个报文段后启动一个定时器。接收端成功接收数据后返回确认信息。如果定时器超时前未收到确认,发送端会认为数据丢失并进行重传。

  • 快速重传

    快速重传机制要求接收方在收到失序报文段后立即发送确认信息。若连续收到三个重复确认,发送方会立即重传丢失的数据段,而无需等待定时器超时。

  • 滑动窗口协议

    滑动窗口协议是TCP用于流量控制和拥塞控制的重要机制。通过维护发送方和接收方的窗口大小,协议确保数据传输的有效率和稳定性。

    滑动窗口实现
    • 窗口大小:接收方根据自身缓冲区大小确定窗口大小,并通过ACK报文通知发送方。
    • 窗口滑动:当接收方成功接收数据包时,窗口向右滑动,允许发送方发送新的数据包。
    • 零窗口问题:接收方若缓冲区已满,会发送零窗口报文,导致发送方暂停发送数据。解决方法是发送窗口探测报文,等待接收方恢复窗口。
    丢包情况

    当数据包丢失或ACK丢失时,发送方会等待定时器超时后进行重传。若长时间未收到ACK,发送方会启动超时重发机制,确保数据的可靠性。

    超时重发

    超时重发机制通过定时器确保发送方在数据丢失时能够及时重传,避免连接中断。

    流量控制

    流量控制通过滑动窗口机制实现,确保发送方的发送速率不超过接收方的处理能力。接收方通过窗口大小字段反馈当前可接收的数据量,发送方根据此调整发送速率。

    窗口关闭与解决方案

    零窗口问题是指接收方因缓冲区已满而发送零窗口报文,导致发送方无法发送数据。解决方法是发送窗口探测报文,等待接收方恢复窗口后继续传输。

    糊涂窗口综合征

    糊涂窗口综合征是指接收方发送小窗口导致发送方发送小数据包,降低传输效率。解决方法包括让接收方不发送小窗口,延迟发送数据或根据窗口大小和数据大小调整发送策略。

    拥塞控制

    TCP拥塞控制通过慢启动、拥塞避免、快速重传和快恢复等算法实现,确保网络资源的公平分配。

    慢启动

    慢启动算法在初始阶段逐步增加发送窗口,防止网络过载。

    拥塞避免

    拥塞避免算法通过线性增长发送窗口,缓慢增加传输速率。

    快重传与快恢复

    快重传和快恢复算法通过快速重传丢失的数据和快速恢复网络状态,减少网络阻塞。

    流量控制与拥塞避免的区别

    • 流量控制:端到端控制,通过滑动窗口管理发送速率。
    • 拥塞控制:全局控制,防止网络过载,涉及所有网络节点和路由器。

    TCP协议通过这些机制确保数据的可靠、高效传输,适用于可靠性要求高的场景。

    转载地址:http://faizz.baihongyu.com/

    你可能感兴趣的文章
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
    查看>>
    No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
    查看>>
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>