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

建设网站如何赢利/nba最新消息

建设网站如何赢利,nba最新消息,如何选择网站做站方向,网站建设界面建议目录 前言: 滑动窗口 滑动窗口处理丢包问题 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 异常情况 小结: 前言: 前两篇文章讲述了,TCP十种核心机制的前三种。这篇文章详细介绍其他的一些核心机制,让我们…

目录

前言:

滑动窗口

滑动窗口处理丢包问题

流量控制

拥塞控制

延时应答

捎带应答

面向字节流

异常情况

小结:


前言:

    前两篇文章讲述了,TCP十种核心机制的前三种。这篇文章详细介绍其他的一些核心机制,让我们更深入理解网络原理。

滑动窗口

    由于TCP为了保证可靠性,引入了一些机制。这些机制必然导致TCP的效率降低。比如每发一个数据报就需要等待ACK(比较消耗时间)滑动窗口就是为了提高TCP的效率。

    滑动窗口本质上就是降低了确认应答等待ack的时间(批量发送,批量等待)。对于基本的确认应答情况来说,每次发一个数据,都要等待ack。而滑动窗口的本质就是不等待的批量发送一组数据,然后使用一份时间来等待一组多个ack。这里把不需要等待就直接发送的数据称为“窗口大小”。 

    注意:这里在等待ack的时候,不是说等待所有的ack全部到达后才继续发送,而是只要到达一个ack就继续发送。那么窗口的大小始终都是不变的,同时也体现出 “滑动”的特性。

滑动窗口处理丢包问题

1)ACK丢了

    不需要做任何事情,只要后面的ack到达了,就可以证明前面的数据到达了。ACK返回的确认序号就是证明这个序号以前的数据已经成功到达。

2) 数据包丢了

解释:

    如果2001 - 3000的数据丢了,后面的ack都是2001。直到数据发送到7001 - 8000返回的ack也是2001(索要2001的数据)。这时候主机A发现丢包了,将2001 - 3000的数据包重新传一下,然后返回的ack就是8001(最新的索要序号)。就证明前面的数据发送完成。

    这样的重传方式叫做“快速重传”。如果传输数据密集,采用滑动窗口的方式,使用快速重传处理丢包。如果数据传输不是很密集,不按照滑动窗口的方式,就是一般的超时重传。

流量控制

    滑动窗口越大,传输效率就越高(一份时间等待的ack就越多),但是窗口也不能无限大。需要根据接收方处理数据的能力来控制窗口的大小。

    衡量接收方处理数据的能力,直接查看缓冲区剩余空间的大小。

    每次发送方发送数据,接受方返回的ack就会携带,根据缓冲区剩余空间大小计算的窗口大小。选项中存在“窗口扩展因子”,接收的窗口值再左移窗口扩展因子位。(为了使窗口足够大,效率做到最大的提升)

注意:

    由于接收方缓冲区大小是动态变化的,那么对应的窗口大小也是动态调整的。

    当窗口大小为0的时候,发送方就会等待。在这个时间里,发送方会发送“窗口探测报文”触发ack查询窗口大小。

拥塞控制

    网络传输中中间需要经历很多节点,现在只考虑了接收方处理数据的能力,如果中间哪个节点处理数据的能力较低,那么总体效率也不会高(木桶效应)。

    流量控制和拥塞控制共同决定窗口的大小。流量控制考虑的是接收方处理数据的能力。拥塞控制考虑的是中间节点处理数据的能力。

    拥塞控制,就是在网络中发生拥塞时(路由器处理数据慢),减少向网络中发送数据的速度,防止造成恶性循环;同时在网络空闲时(路由器处理数据快),提高发送数据的速度,最大限度地利用网络资源。

    由于每次网络传输的中间节点都是不固定的。因此没办法衡量中间节点的处理数据的能力。采用 “实验” 的方式。

注意:

    开始是指数增长,当窗口达到一定大小就变为线性增长。当传输过程一旦丢包了(网络拥塞),说明窗口大小已经是极限了。此时就把窗口大小一下缩小为很小的值(重复刚才的指数增长和线性增长)。

    拥塞窗口不是固定的数值,而是一直动态变化的。随着时间推移,逐渐达到一个相对平衡的状态。        

    拥塞窗口和流量控制共同决定了发送发实际的窗口大小(窗口大小取两者的较小值)。

延时应答

    在滑动窗口的基础上,尽可能的扩大窗口的大小。

    所谓延时就是收到数据后,不是立即返回ack而是稍等一会再返回。等待的时间里,接收方程序就能够把缓冲区的数据处理一波,此时剩余空间就大了,那么发送方窗口也就大了。

    实际上延时应答的具体做法,就是在滑动窗口下,ack不在每一条数据都返回了。比如隔一条返回,相对于第一条数据这里的ack就等于等待了。

捎带应答

    本来ack和要返回的业务数据不是同一时机,但是在延时应答的机制上,可能就会在同一时机。然后就会合并为一条报文发送过去。提高效率的方式。

面向字节流

    TCP的特点就是面向字节流。面向字节流,就引出了一个问题:粘包问题。进行read读取的时候,读到哪里才算结束呢?读到哪里才算一个完整的数据包呢?

解决方案:(需要自己代码实现)

    1)约定好分隔符,当读到分隔符就结束。

    2)约定好每个包的长度,只读取这么长的数据。

异常情况

1)进程崩溃

2)主机关机

3)主机掉电

4)网线断开

注意:

1)

    进程没了,对应的pcb也就没了,对应的文件描述符表也就释放了,相当于Socket.close()。此时内核就会完成四次挥手,也就是正常的断开流程。(主机关机,首先关闭进程,和这里原理一样)。

2)

    假设接收方掉电,发送方等不到ack,然后超时重传多次,依然失败。接下来断线重连(RST复位报文段)还是失败,就单方面放弃了。

    假设发送方掉电,接收方发现没有数据了,先等。这个时候会周期性的发送 “心跳包” 确认对方是否工作正常。(心跳包来确认通信双方是否处在正常的工作状态)

小结:

    TCP核心机制到这里就结束啦,TCP是一个很复杂的协议还有很多的机制。需要继续了解可以去查阅官方文档。

相关文章:

TCP核心机制详解(三)

目录 前言: 滑动窗口 滑动窗口处理丢包问题 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 异常情况 小结: 前言: 前两篇文章讲述了,TCP十种核心机制的前三种。这篇文章详细介绍其他的一些核心机制,让我们…...

最易上手的爬虫请求库:Requests核心功能速览(下)

上一个章节我们讲了如何快速使用Requests发送网络请求、处理URL参数和提取响应内容,这些是最基本的操作。 然而还有很多场景下,我们的网络请求更加复杂。比如我们必须要定制请求头来假装成浏览器,不然可能会被网站识别为机器并且被屏蔽;又比如我们需要在发送请求时以表单形…...

生产故障|Kafka ISR频繁伸缩引发性能急剧下降

生产故障|Kafka ISR频繁伸缩引发性能急剧下降-阿里云开发者社区 本文是笔者双十一系列第二弹,源于一个双十一期间一个让笔者猝不及防的生产故障,本文将详细剖析Kafka的副本机制,以及ISR频繁变更(扩张与伸缩)为什么会导致集群不可…...

c++终极螺旋丸:₍˄·͈༝·͈˄*₎◞ ̑̑“类与对象的结束“是结束也是开始

文章目录 前言一.构造函数中的初始化列表 拷贝对象时的一些编译器优化二.static成员三.友元四.内部类总结前言 前两期我们将类和对象的重点讲的差不多了,这一篇文章主要进行收尾工作将类和对象其他的知识点拉出来梳理一遍,并且补充前两篇没有讲过的…...

【Python--torch.nn.functional】F.normalize用法 + 代码说明

【Python–torch.nn.functional】F.normalize介绍 代码说明 文章目录【Python--torch.nn.functional】F.normalize介绍 代码说明1. 介绍2. 代码说明2.1 一维Tensor2.2 二维Tensor2.3 三维Tensor3. 总结1. 介绍 import torch.nn.functional as F F.normalize(input: Tensor, …...

【算法题】1887. 使数组元素相等的减少操作次数

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个整数数组 nums &#xff0…...

GD库图片裁剪指定形状解决办法(PHP GD库 海报)

需求描述:需要把图片裁剪成一个指定的平行四边形,目的是使用GD库,把裁剪后的图片放在底图上面,使最终合成的图片看起来是一个底图平行四边形的样子提示:可以结合本作者的其他文章,来生成一个定制化的海报&a…...

redis的简介及应用场景

1、基本信息 Redis英文官网介绍: Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queri…...

2、HAL库利用滴答定时器systick(1ms中断)实现时间计数戳

文档说明:通过滴答定时器的1ms中断实现时间计数,标记需要的时间标志,在主函数中查询标志,避免延时函数消耗CPU 1、HAL库systick定时器说明 在CubeMx生成的代码main()函数首先执行的函数为HAL_Init();里面会进行滴答定时器初始化…...

Spring入门学习

Spring入门学习 文章目录Spring入门学习Spring概述Spring FrameworkIOCIOC容器DIIOC容器的实现类①FileSystemXmlApplicationContext②ClassPathXmlApplicationContext基于XML管理bean入门案例创建类创建xml在Spring配置文件中配置bean测试Spring概述 Spring 是最受欢迎的企业级…...

webpack(4版本)使用

webpack简介:webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)…...

Linux安装ElasticSearch

下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 1 版本选择 ElasticSearch 7 及以上版本都是自带的 jdk,假如需要配置指定的 jdk 版本的话,可以在 es 的 bin 目录下找到elasticsearch-env.bat 这个文件&#x…...

Linux中C语言编程经验总结

​ 修改记录 版本号日期更改理由V1.02022-03-15MD化 总则 仅总结一些常用且实用的编程规范和技巧,且避免记忆负担,聚焦影响比较大的20% ! 编译器 打开全warning编译器开关 正例 gcc -W -Wall -g -o someProc main.c反例 gcc -g -o someProc main…...

jvisualvm工具使用

jdk自带的工具jvisualvm,可以分析java内存使用情况,jvm相关的信息。 1、设置jvm启动参数 设置jvm参数**-Xms20m -Xmx20m -XX:PrintGCDetails** 最小和最大堆内存,打印gc详情 2、测试代码 TestScheduleClassGc package com.core.schedule;…...

redis五大IO网络模型、内存回收

目录1.0用户空间和内核态空间1.1 网络模型-阻塞IO1.2 网络模型-非阻塞IO1.3 网络模型-IO多路复用1.3.1 网络模型-IO多路复用-select方式1.3.2 网络模型-IO多路复用模型-poll模式1.3.3 网络模型-IO多路复用模型-epoll函数1.3.4 网络模型-epoll中的ET和LT1.3.5 网络模型-基于epol…...

【C/C++】内存管理详解

目录内存布局思维导图1.C/C内存分布数据段:栈:代码段:堆:2.C语言中动态内存管理方式3.C内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型4.operator new 与 operator delete函数5.new和delete的实现原理5.1内置类型5.2自定…...

Android ProcessLifecycleOwner 观察进程生命周期

文章目录简介使用依赖用法1,结合 LiveData用法2,获取 owner的 lifecycle 实例,并对 lifecycle 添加观察者简介 ProcessLifecycleOwner 直译,就是,进程生命周期所有者。 通过 DOC 注释了解到: Lifecycle.E…...

如何编写一个 npm 插件?

提到写 npm 插件,很多没搞过的可能第一感觉觉得很难,无从下手,其实不然。 我们甚至写个简单的 console.log(hello word),都是可以当成一个插件发布上去的。 其实无从下手的主要难点还是在于你的具体要做的功能逻辑,这…...

mapstruct- 让VO,DTO,ENTITY转换更加便捷

mapstruct- 让VO,DTO,ENTITY转换更加便捷 1. 简介 MapStruct是一个代码生成器,简化了不同的Java Bean之间映射的处理,所谓映射指的就是从一个实体变化成一个实体。例如我们在实际开发中,DAO层的实体和一些数据传输对…...

IAR警告抑制及还原

工作中需要临时抑制 警告 Pa084,源代码如下: sy_errno_t sy_memset_s(void *dest, sy_rsize_t dmax, int value, sy_rsize_t n) { sy_errno_t err; if (dest NULL) { return SY_ESNULLP; } if (dmax > SY_RSIZE…...

工厂模式(Factory Pattern)

1.什么是工厂模式 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 2.工厂模式的作用 实现创建者和调用者的分离 3.工厂模式的分类 简单工厂模式工厂方法模式抽象工厂模式 4.工厂模式的优缺点 优…...

JavaScript语法学习--《JavaScript编程全解》

《JavaScript编程全解》 JavaScript琐碎基础 0.前言 1.RN: react native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。 2.ts与js js:是弱…...

linux安装极狐gitlab

1. 官网寻找安装方式 不管我们使用任何软件,最靠谱的方式就是查看官方文档。gitlab提供了相应的安装文档,并且有对应的中文文档。地址如下: https://gitlab.cn/install/ 我在这里以CentOS作为安装示例,大家可根据自己的需要选择…...

软考高级信息系统项目管理(高项)原创论文——人力资源管理

人力资源管理 某市某国有装备制造公司智能安防信息管控平台项目是在公司推进企业信息化进程和实现企业可持续发展的背景下于2016年8月提出来的,我公司积极应标并最终顺利中标,而我有幸被任命为项目经理,担任起该项目的管理工作。该项目投资金额为530万元,其中软件部分为360…...

Java Lambda表达式 匿名内部类 函数式接口(FunctionalInterface)

Java Lambda表达式定义背景示例匿名类实现Lambda表达式实现对比匿名类和Lambda实现Lambda表达式(调用)说明Lambda表达式的语法Java 1.8 新特性:函数式接口jdk 1.8 自带的函数式接口 (举例)定义 参考Oracle官网&#x…...

javaEE 初阶 — 流量控制与拥塞控制

文章目录1. 流量控制2. 拥塞控制TCP 工作机制:确认应答机制 超时重传机制 连接管理机制 滑动窗口 1. 流量控制 流量控制是一种干扰发送的窗口大小的机制,滑动窗口,窗口越大,传输的效率就越高(一份时间,…...

HTML自主学习 - 2

一、表格 基本语法 <table><tr><td>单元格内容1</td><td>单元格内容2</td><td>单元格内容3</td></tr></table> 1、<table> </table>标签用于定义表格 2、<tr> </tr>标签用于定义表格的…...

【转载】通过HAL库实现MODBUS从机程序编写与调试-----STM32CubeMX操作篇

通过HAL库实现MODBUS从机程序编写与调试-----STM32CubeMX操作篇[【STM32】RS485 Modbus协议 采集传感器数据](https://blog.csdn.net/qq_33033059/article/details/106935583)基于STM32的ModbusRtu通信--ModbusRtu协议(一)基于STM32的ModbusRtu通信--终极Demo设计(二)STM32RS48…...

【C++】string类(上)

文章目录1.为什么要学习string类2.标准库中的string类1.string分类2.string类对象的常见构造1.string3. string类对象的容量操作1.size2.capacity3.reserve4.resize扩容初始化删除数据4. string类对象的修改操作1.push_back2.append3.operator1.为什么要学习string类 c语言的字…...

Java泛型

文章目录一、泛型介绍1. 背景2. 概念3. 好处二、泛型声明泛型类型符号泛型声明方式三、类型擦除1. 什么是类型擦除桥接方法2. 为何需要类型擦除3. 类型信息并未完全擦除四、泛型使用1. 泛型类2. 泛型接口3. 泛型方法五、泛型扩展1. 泛型的上下边界泛型的上边界泛型的下边界2. 泛…...