作者:故事我忘了
个人微信公众号:程序猿的月光宝盒

1.TCP的滑动窗口

1.1 RTT和RTO的区别

​ RTT:发送一个数据包到收到对应的ACK,所花费的时间

​ RTO:重传时间间隔,TCP在发送一个数据包之后,会启动一个重传定时器,RTO就是这个定时器的重传时间,再通俗的讲就是,一开始先算一个定时器时间,如果你回复了ACK,那重传定时器就自动失效,也就是说不用重传了,但是如果没有回复给我ACK,RTO定时器的时间又到了,就重传,由于RTO是本次数据包所发送的超时时间,那么RTO就需要一个很好的算法去统计,来更好的预测这次的超时时间,RTO不是固定写死的配置,而是经过RTT计算出来的,有了RTT才能计算出RTO.基于RTO才有了重传机制,而后才有滑动窗口

1.2 TCP使用滑动窗口做流量 控制与乱序重排

滑动窗口主要有两个作用:

​ 1.保证TCP可靠性

​ 2.保证TCP的流控特性

1.3 窗口数据的计算过程

◇EffectiveWindow = AdvertisedWindow-(LastByteSent-LastByteAcked)

1.4 滑动窗口的基本原理

1.4.1 TCP会话的发送方

任何时候都能分为4类

1:已经发送并且得到端的回应的

2:已经发送但是没有得到端的回应的

3:未发送,但允许对端发送的

4:未发送,且不允许对端发送的

其中:2+3即为发送端口

1.4.2 滑动原理:

1.5 TCP会话的接收方

在某一时刻,在接受缓存范围内有四种状态

1+2.已接收,已发送回执

3.未接收,但是可以接收(准备接收)

4.未接受,也不能接收

其中3为接收窗口

由上可知,TCP最基本的传输可靠性,来源于确认重传机制,TCP滑动窗口的可靠性,也是建立在确认重传基础上的

滑动窗口的大小可以根据一定策略动态调整.

Java每日一面(Part1:计算机网络)[19/11/02]的更多相关文章

  1. Java每日一面(Part1:计算机网络)[19/11/25]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[2] 1.1Get请求和Post请求的区别 从三个层面来回答: 1.1.1 从HTTP报文层面: ​ Get请求将请求信息放在UR ...

  2. Java每日一面(Part1:计算机网络)[19/11/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[1] 1.1 HTTP简介 ​ HTTP协议,即超文本传输协议,属于应用层的协议,他是基于请求和响应模式的无状态的 应用层协议. ...

  3. Java每日一面(Part1:计算机网络)[19/10/21]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.UDP简介 1.1UDP报文结构: ​ Source Port:源端口 Destination Port:目标端口 Length:数据包长度 C ...

  4. Java每日一面(Part1:计算机网络)[19/10/14]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.1 说一说TCP的四次挥手 ​ "挥手",即终止TCP连接,断开一个TCP连接池. ​ 需要客户端和服务端总共发出四个包,以 ...

  5. Java每日一面(Part1:计算机网络)[19/10/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.说说TCP三次握手 1.0 在此之前,什么是TCP? ​ TCP(传输控制协议) ​ 1.面向连接的,可靠的,基于字节流的传输层通信协议 ​ 2. ...

  6. Java每日一面(Part2数据库)[19/11/28]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: ​ 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ​ ...

  7. star ccm+ 11.02安装

    STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...

  8. 【Java每日一题】20161122

    package Nov2016; import java.util.ArrayList; import java.util.Iterator; public class Ques1122 { publ ...

  9. 【Java每日一题】20161018

    20161017问题解析请点击今日问题下方的"[Java每日一题]20161018"查看 package Oct2016; public class Ques1018 { publ ...

随机推荐

  1. Wonder第一期3D引擎和编辑器线下培训班报名开始啦(免费学习)

    Wonder第一次举办 针对3D底层技术的 线下培训班,免费学习,请大家多多支持-感谢- 培训地点 成都 开课时间 报名满5人开课. 报名方式 加QQ群:732861508 备注请写:报名培训 老师介 ...

  2. Java并发之synchronized关键字深度解析(二)

    前言 本文继续[Java并发之synchronized关键字深度解析(一)]一文而来,着重介绍synchronized几种锁的特性. 一.对象头结构及锁状态标识 synchronized关键字是如何实 ...

  3. CouchDB学习一

    端口 端口号 协议 作用 5984 tcp 标椎集群端口用于所有的HTTP API请求 5986 tcp 用于管理员对节点与分片的管理 4369 tcp Erlang端口到daemon的映射 配置介绍 ...

  4. python探索微信朋友信息

    一.itchat itchat是一个开源的微信个人号接口,这一次就用它来来玩玩. 在使用之前,先下载,老规矩通过 pip install itchat 即可安装. 想要获取朋友圈信息,只需要几行代码就 ...

  5. c++-面向对象类的示例-求周长面积,判断体积相等-文件操作和一般操作

    面向对象编程示例:求周长和面积 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; //圆的周 ...

  6. mysql多字段内容并到单字段中的操作

    ; SELECT 序号, ryxm `人员姓名`, cylb `成员类别`, gzdw `工作单位`, zc `职称`, GROUP_CONCAT(zzqmc) AS `著作权名称`--多字段合并到一 ...

  7. sql server无法连接本地服务器

    当连接sql server本地服务器 报一下错误: 标题: 连接到服务器 ------------------------------ 无法连接到 localhost. ---..... 打开wind ...

  8. h5 Video打开本地摄像头和离开页面关闭摄像头

    <div> <video id="video" style="width=100%; height=100%; object-fit: fill&quo ...

  9. PHP 是如何做垃圾回收的

    PHP 是如何做垃圾回收的 包含 php 5 与 php7 的变量实现和垃圾回收的对比 变量的实现 PHP 的变量是弱类型的,可以表示整数.浮点数.字符串等类型.PHP 的变量是使用结构体 zval ...

  10. swiper 轮播中常用的效果,持续更新

    swiper一款非常好用的轮播插件,支持移动端和PC端,用过很多次了,这次简单的总结一下.方便以后查找使用,说明一下,下面的例子是基于swiper 4.0+版本的,如果你是其他的版本,请自行前往官网查 ...