当前位置: 首页 > article >正文

Java TCP协议(2)

TCP可靠传输

五. 流量控制

用来控制发送方的窗口大小,通过接收方返回来的ACK进行反制。
接收方把自己能够处理的数据量主动告诉发送方,从而让发送方动态调整窗口大小。

示例1

如果窗口大小为0表示没有空间去接收数据了,主机A就不发数据了,导致主机B就没有后续的ACK了,也就意味着双发停止通讯了。
过了重发超时以后若还没有收到窗口更新的通知,发送端会发送一个窗口探测的包,窗口探测不携带具体的数据,只是问一下接收方,现在是否可以处理数据,能处理多少。

六. 拥塞控制

通过网络的畅通程度来控制窗口大小。
发送数据时,由于会经过很多网络设置,而网络情况是不固定的。
所以,在数据传输的过程中可能会造成阻塞和超时。
示例2

1.程序启动的时候把拥塞窗口的值调到很少,比如1,
2.如果接收到ACK表示当前窗口大小没有问题,然后就调大窗口大小
3.到达阈值之前以指数形式增大,到达阈值之后,以1为步长进行增大
4.当增大到一定程序发生丢包的情况,就证明网络阻塞了,这时就把窗口大小重新调用1,同时重置新的阈值=当前窗口大小的二分之一

拥塞窗口大小与ACK应答中的窗口大小共同决定发送的滑动窗口大小,哪个小用哪个。

七. 延迟应答

TCP在应答时,并不是每收到一个请求应答一次,而是每隔几个应答一次
示例3
及时应答的时候,窗口大小是缓冲区剩余的空间。
延迟应答时,应用程序还要从缓冲区中取走一部分数据,这时缓冲区的剩余部分就变大了,ACK时窗口大小就可以设置更大的值,最终发送方就会按这个值去增大发送窗口。
示例4

八. 捎带应答

由于TCP是全双工,接收方也可以给发送方做一个响应操作。

示例5
当主机A发送响应数据时,如果有ACK需要返回,那么这两个报文就有可能被合并成一个,减少了通讯次数,提升了效率。


http://www.kler.cn/a/517159.html

相关文章:

  • 物联网工程与网络工程到底有什么关系?
  • ThinkPHP 8请求处理-获取请求对象与请求上下文
  • 激光线扫相机无2D图像的标定方案
  • QT6 + CMAKE编译OPENCV3.9
  • Cesium特效——城市白模的科技动效的各种效果
  • redis离线安装部署详解(包括一键启动)
  • GIS开发及计算机就业主流技术岗
  • 头像生成小程序搭建(免费分享)
  • Java入门笔记(1)
  • Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)
  • kubernetes 集群 YAML 文件详解
  • MySQL(七)MariaDB安装、设置、基本使用
  • 前端js,html学习之表白模版-聊天记录
  • Java 反射与动态代理:实践中的应用与陷阱
  • 直接设计目标属性材料!微软MatterGen模型重磅开源,用生成式AI重新定义材料逆向设计新范式
  • 【Springboot知识】Springboot结合redis实现分布式锁
  • 从对等通信到万维网:通信模型变迁与拥塞求解
  • java 中多线程、 队列使用实例,处理大数据业务
  • 【Linux网络编程】传输层协议
  • Spring Boot 快速创建项目
  • Swing使用MVC模型架构
  • 日志收集Day005
  • 数据结构(一)顺序表和链表
  • 【前端】如何依靠纯前端实现拍照获取/选择文件等文字识别OCR技术
  • 【HarmonyOS NAPI 深度探索10】HarmonyOS Next 中的 NAPI 的架构与原理
  • U3D的.Net学习