• l8-d10 TCP协议是如何实现可靠传输的


    一、TCP主要特点

    TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。

    TCP主要特点

    1.TCP 是面向连接的运输层协议。

            每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)

    2.TCP 提供可靠交付的服务。

    3.TCP 提供全双工通信。

    4.面向字节流

            TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。

            面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

    面向流的概念

     

    Socket 有多种不同的意思

            应用编程接口  API  称为 socket API, 简称为 socket。

            socket API 中使用的一个函数名也叫作 socket。

            调用 socket 函数的端点称为 socket。

            调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。

    二、TCP是如何实现可靠传输的

    如何实现可靠传输?

            每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

            全双工通信的双方既是发送方也是接收方。

            假设仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。

    A 如何知道 B 是否正确收到了 M1 呢?

    解决方法:超时重传

            A 为每一个已发送的分组设置一个超时计时器。

            A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。

            若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。

     

    确认丢失 

            若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1。

            假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:

                    (1) 丢弃这个重复的分组 M1,不向上层交付。

                    (2) 向 A 发送确认。

    确认迟到

    B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。

    B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组。

    A 会收到重复的确认。对重复的确认的处理:丢弃。

    提高传输效率:流水线传输

    连续 ARQ 协议

    发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认。

    发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

    累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。

     

    三、TCP包头

  • 相关阅读:
    【python与数据分析】Pandas统计分析基础
    什么是SpringMVC
    缺陷的数据,不能证明测试工作做得好
    (六)Ansible-Template
    北京有什么好的创业孵化器?中移产孵中心助创业
    【C++】class的设计与使用(六)运算符重载、嵌套类型(typedef)
    备战蓝桥杯Day22 - 计数排序
    Word控件Spire.Doc 【页面背景】教程(9) ;C#/VB.NET:从 Word 文档中删除文本或图像水印
    TypeScript学习笔记十二:条件类型、内置条件类型
    ARM异常处理(4):SVC和PendSV的作用详解
  • 原文地址:https://blog.csdn.net/revengeman/article/details/132782105