美文网首页
08-TCP 协议

08-TCP 协议

作者: Mr_十九 | 来源:发表于2018-11-05 00:45 被阅读0次

    本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第11-12讲(第11讲 | TCP协议(上) 第12讲 | TCP协议(下))的课程笔记。


    1.TCP 包头格式
    TCP 包头格式
    2.TCP 协议关注点:
    • 顺序问题 ,稳重不乱;
    • 丢包问题,承诺靠谱;
    • 连接维护,有始有终;
    • 流量控制,把握分寸;
    • 拥塞控制,知进知退。
    3.三次握手
    • TCP 的连接建立,我们常常称为三次握手。
      A:您好,我是 A。
      B:您好 A,我是 B。
      A:您好 B。
    • 我们也常称为“请求 -> 应答 -> 应答之应答”的三个回合。
    • 三次握手除了双方建立连接外,主要还是为了沟通一件事情,就是TCP 包的序号的问题。


      建立连接状态时序图
    4.TCP 四次挥手
    • 断开连接,四次挥手
      A:B 啊,我不想玩了。
      B:哦,你不想玩了啊,我知道了。
      B:A 啊,好吧,我也不玩了,拜拜。
      A:好的,拜拜。

    • 断开连接状态时序图


    • TCP 状态机


    • TCP 包头很复杂,但是主要关注五个问题,顺序问题,丢包问题,连接维护,流量控制,拥塞控制

    5.累计确认
    • 发送端窗口大小字段的数据结构


    • 接收端窗口大小字段的数据结构


    6.顺序问题和丢包问题(确认与重发机制)、流量控制、拥塞控制
    • 超时重试
      自适应重传算法(Adaptive Retransmission Algorithm)
    • 一个可以快速重传的机制,当接收方收到一个序号大于下一个所期望的报文段时,就检测到了数据流中的一个间格,于是发送三个冗余的 ACK,客户端收到后,就在定时器过期之前,重传丢失的报文段。
    • 还有一种方式称为Selective Acknowledgment (SACK)。这种方式需要在 TCP 头里加一个 SACK 的东西,可以将缓存的地图发送给发送方。例如可以发送 ACK6、SACK8、SACK9,有了地图,发送方一下子就能看出来是 7 丢了。
    • 流量控制问题
      可以当窗口太小的时候,不更新窗口,直到达到一定大小,或者缓冲区一半为空,才更新窗口。
    • 拥塞控制是通过拥塞窗口来解决的,相当于往管道里面倒水,快了容易溢出,慢了浪费带宽,要摸着石头过河,找到最优值。

    相关文章

      网友评论

          本文标题:08-TCP 协议

          本文链接:https://www.haomeiwen.com/subject/djcjxqtx.html