美文网首页
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 协议

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

  • git协议

    git支持的协议 local协议 https协议 ssh协议 git协议 github常用的协议

  • Dubbo服务 上传文件解决方案以及Hessian协议

    协议支持Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebS...

  • Procotol 和 Delegate

    目录 Procotol 协议的概念 协议的分类 协议的定义 协议的遵循 协议的方法 协议的属性 Delegate ...

  • 计算机网络题目

    几种协议分别属于哪一层传输层协议:TCP协议、UDP协议应用层协议:FTP、HTTP、SMTP网络层协议:IP协议...

  • ARP协议

    地址解析协议ARP 网络层四大协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP(Address R...

  • IP数据报格式

    前言 先回顾一下TCP/IP协议栈 网络层的协议有IP协议、ARP协议、ICMP协议和IGMP协议。其中IP协议是...

  • 名词解析

    网络层:IP协议 : 网络协议ICMP协议: Internet互联网控制报文协议 ->IP协议的附属协议 IP...

  • 如何将Git仓库备份到本地

    git常用的传输协议传输协议.png哑协议:哑协议传输进度不可见;智能协议传输可见。传输速度:智能协议比哑协议传输...

  • NSURLSession学习笔记

    �Http协议-超文本传输协议 Http协议是应用层协议,底层要求的传输协议必须是可靠的传输协议,通常是TCP协议...

网友评论

      本文标题:08-TCP 协议

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