美文网首页
基础知识

基础知识

作者: const_qiu | 来源:发表于2020-07-08 00:21 被阅读0次

TCP报文:


TCP报文

1.win=x 是接收窗口,向对方说明自己接收窗口大小
2.MSS:最大报文段长度(maximum segment size),单位:字节,每个TCP报文数据部分的最大
3.发送窗口 :决定一次发送的字节数,MSS决定这些字节分几个包传输
发送窗口由发送方维护,受接收窗口网络影响
4.拥塞点:导致网络拥塞的数据量
    难点:要尽可能避免达到拥塞点,解决办法(现有的最好的):拥塞窗口
5.拥塞窗口过程:

  • 第一版
    (1)慢开始:刚建立时,先把拥塞窗口 设置较小,试探一下
    (2)没问题,逐步增大,翻倍,慢启动/慢开始,到达初始门限,
    (3)拥塞避免:每个往返+1,拥塞避免
    (4)出现网络拥塞(超时重传),到达拥塞点,门限减半(乘法减小),拥塞窗口变为1MMS,再次进入慢开始。
  • 第二版
    (1)慢开始:刚建立时,先把拥塞窗口 设置较小,试探一下
    (2)没问题,逐步增大,翻倍,慢启动/慢开始,到达初始门限,
    (3)拥塞避免:每个往返+1,拥塞避免
    (4)启动快速重传,进入快恢复阶段。
  • 超时重传对传输性能有严重影响。 原因之一是在RTO阶段不能传数据, 相当于浪费了一段时间; 原因之二 是拥塞窗口的急剧减小, 相当于接来传得慢多了。
    改进:快速重传,接收方每接收到一个未按序到达的报文就发出确认,当发送方收到三个连续确认就立即重传而不必等到超时重传

超时重传:慢开始+慢开始(门限减半,拥塞窗口为1)
快速重传:慢开始+快恢复 (门限减半,拥塞窗口也为减半后的门限)

6.RTO: 丢包等待时间, 超时重传,少量丢包不会启动超时重传,因为少量丢包后续的到达的包会使接收方发送Ack包说明自发生了丢包,从而启动 快速重传 。在调整拥塞窗口时使用快恢复。

丢包时,发送方在一段时间内没有收到确认包时,会启动超时重传,而导致丢包的原因很大可能是网络拥塞,即发送方发送的数据量太大,因此需要传输控制。

  • 三次握手


    TCP三次握手

初始状态:
A:closed,B:closed
第一次握手:A发送SYN包给B发起建立连接的请求后进入SYN-SENT阶段
第二次握手:B发送ACK-SYN给A,ACK是对A的SYN包的确认,SYN是B给A发的建立连接的请求(可以认为把两个动作合在一个包里),B进去SYN-RCVD阶段(半打开状态)。
第三次握手:A收到B的ACK-SYN报文,其中的ACK让B进入ESTAB-LISTED 阶段,同时发送ACK报文对B的连接请求进行确认。
B收到A的ACK报文后也进入ESTAB-LISTED。

  • 为什么要进行三次握手?
    加入只有两次即B接收到A的SYN报文并回复ACK-SYN报文后就建立连接,而不等到A的确认,那么考虑一种情况,即A之前发的SYN报文在网络中阻塞,当AB已经建立好了连接后,阻塞的报文又到了B,假如只有两次握手那么B就会同意建立连接,这会浪费资源。而如果是三次握手,B需要A的确认,而A是不会确认的,因此这个无效的SYN报文就无法建立连接。
  • 四次挥手


    TCP四次挥手

相关文章

  • 音频基础知识02

     音频基础知识 01  音频基础知识 02  音频基础知识 03  音频基础知识 04 人类收集声音的历史   为...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • C语言回顾

    基础知识 控制流 基础知识补充 其他主题

  • PHP面试知识脉络(更新中)

    PHP基础知识Javascript、jQuery、ajax基础知识Linux基础知识MySQL数据库的基础与优化程...

  • p2p理财基础知识

    p2p理财基础知识 p2p理财基础知识 p2p理财基础知识

  • 学习Vue框架之前,要有JavaScript的知识储备

    前端三剑客知识储备(有关前端的专题) ☑ HTML基础知识 ☑ CSS基础知识 ☑ JavaScript5基础知识...

  • angular笔记

    第一部分、基础知识--------------------------基础知识------------------...

  • 【学习】其他框架

    Zookeeper Zookeeper基础知识Zookeeper综合知识 HDFS HDFS基础知识 NoSQl ...

  • Python3基础知识

    Python3基础知识 | 基础语法 Python3基础知识 | 编程第一步 Python3基础知识 | 基本数据...

网友评论

      本文标题:基础知识

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