Java每日一面(Part1:计算机网络)[19/11/02]
个人微信公众号:程序猿的月光宝盒
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]的更多相关文章
- Java每日一面(Part1:计算机网络)[19/11/25]
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[2] 1.1Get请求和Post请求的区别 从三个层面来回答: 1.1.1 从HTTP报文层面: Get请求将请求信息放在UR ...
- Java每日一面(Part1:计算机网络)[19/11/13]
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[1] 1.1 HTTP简介 HTTP协议,即超文本传输协议,属于应用层的协议,他是基于请求和响应模式的无状态的 应用层协议. ...
- Java每日一面(Part1:计算机网络)[19/10/21]
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.UDP简介 1.1UDP报文结构: Source Port:源端口 Destination Port:目标端口 Length:数据包长度 C ...
- Java每日一面(Part1:计算机网络)[19/10/14]
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.1 说一说TCP的四次挥手 "挥手",即终止TCP连接,断开一个TCP连接池. 需要客户端和服务端总共发出四个包,以 ...
- Java每日一面(Part1:计算机网络)[19/10/13]
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.说说TCP三次握手 1.0 在此之前,什么是TCP? TCP(传输控制协议) 1.面向连接的,可靠的,基于字节流的传输层通信协议 2. ...
- Java每日一面(Part2数据库)[19/11/28]
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ...
- star ccm+ 11.02安装
STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...
- 【Java每日一题】20161122
package Nov2016; import java.util.ArrayList; import java.util.Iterator; public class Ques1122 { publ ...
- 【Java每日一题】20161018
20161017问题解析请点击今日问题下方的"[Java每日一题]20161018"查看 package Oct2016; public class Ques1018 { publ ...
随机推荐
- 《Java练习题》习题集四
编程合集: https://www.cnblogs.com/jssj/p/12002760.html Java总结:https://www.cnblogs.com/jssj/p/11146205.ht ...
- SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现
SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...
- 一起学MyBatis之入门篇
概述 本文以一个简单的小例子,简述在Java项目开发中MyBatis的基本用法,属于入门级文章,仅供学习分享使用,如有不足之处,还请指正. 什么是MyBatis? MyBatis 是一款优秀的持久层框 ...
- c++-多态的学习
多态的基本介绍 多态基础 面向对象新求 C++编译器提供的多态解决方案 多态意义.多态成立的是三个条件 多态理论基础 多态面试题强化 多态的理解 C++编译器如何实现多态 重载重写重定义 虚析构函数 ...
- Nginx配置实例-负载均衡实例:平均访问多台服务器
场景 Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- JS---案例:设置div的宽度
案例:设置div的宽度 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 面试连环炮系列(八):服务器CPU飙升100%怎么排查
服务器CPU飙升100%怎么排查 执行"top"命令,查看当前进程CPU占用的实时情况,PID列是进程号,确定是哪个应用程序的问题. 如果是Java应用导致的,怎么定位故障原因 执 ...
- WebRTC分支提交记录
截至2019.8.6日,webrtc官网release了M76,具体可参考:release notes WebRTC分支提交记录可以查看git commit记录. 方法:git checkout 到特 ...
- 一文理解Java IO/NIO/AIO
目录 概述 一.IO流(同步.阻塞) 二.NIO(同步.非阻塞) 三.NIO2(异步.非阻塞) 正文 概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronou ...
- ling to sql创建临时变量 let的使用
使用let赋值给临时变量 var dailys = from f in _postgreDbContext.draws let temp = f.review_time.Value.Date wher ...