网络原理(TCP/IP五层协议)(三)

news2024/9/22 13:30:23

目录

    • 4.滑动窗口(效率机制)
    • 5.流量控制(安全机制)
    • 6.拥塞控制(安全机制)
    • 7.延迟应答(效率机制)
    • 8.捎带应答(效率机制)
    • 9.面向字节流
    • 10.TCP的异常处理

4.滑动窗口(效率机制)

滑动窗口存在的意义就是在保证可靠性的前提下,尽量提高传输效率。

在这里插入图片描述
在这里可以看到,由于确认应答机制的存在,导致了当前每次执行一次发送操作,都需要等待上个ACK的到达,大量的时间都花在等ACK上。

滑动窗口,本质就是在“批量的发送数据”,一次发一波数据,然后一起等一波ACK。
在这里插入图片描述
在这里插入图片描述
当前有一个核心问题:丢包

在滑动窗口的背景下,如果丢包,该如何重传呢?

情况一:数据包已经抵达,ACK被丢了。
在这里插入图片描述

情况二:数据包就直接丢了。
在这里插入图片描述
在这里插入图片描述
这里的重传只需要把丢了的那一块数据给重传即可,其他的已经到了的数据就不必再重传了。所以,整体的传输效率还是比较高的。

5.流量控制(安全机制)

流量控制是滑动窗口的延伸,目的是为了保证可靠传输,因为在 滑动窗口 中,窗口越大,传输速率就越高。而接收端处理数据的速度是有限的。如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等一系列连锁反应。

因此 TCP 支持根据接收端的处理能力,来决定发送端的发送速度。这个机制就叫做流量控制(Flow Control)。流量控制的关键,就是得能够衡量接收方的处理速度。
此处就直接使用接收方接收缓冲区剩余空间大小,来衡量当前的处理能力。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当接收缓冲区满了,是不是 A 就不再发送数据了?
虽然 B 反馈的窗口大小是 0,但是 A 也不能完全不发数据;A 需要定期的发送一个 探测报文,探测报文不传输实际的数据,只是为了触发 ACK,用于知道当前 缓冲区的大小是多少。

在这里插入图片描述

6.拥塞控制(安全机制)

滑动窗口的延伸,同时也是限制滑动窗口发送的速率。
拥塞控制衡量的是,发送方到接收方这整个链路之间的拥堵情况(处理能力)
在这里插入图片描述
具体这个拥塞窗口是如何变化的呢?
在这里插入图片描述

  • 最开始的时候,取的初识窗口大小,非常小。纵轴是1个单位(一个单位具体是1字节,10字节......不一定,具体单位是多少,看操作系统代码怎么实现的)
  • 指数增长规律:初识情况下给的窗口太小了,可能合适的值是一个更大的值。(既希望速度快,又希望不丢包)
  • 当到达阈值,由指数增长转为线性增长,线性增长,当增长到一定程度,就会出现丢包。一旦丢包,此时发送方立即就让窗口变小(回归初识的窗口大小),继续重复刚才的指数增长+线性增长的过程。
    直接让窗口回归初始值,一个主要的目的是:网络的情况是复杂的不稳定的!
    如果出现丢包,很可能你只将速度降下来一点是不能解决问题的。
    如果降的太慢,就会出现持续性的丢包,就会对网络通信质量带来很大的影响,一瞬间让窗口变得很小,就是期望这次的传输一定可以成功。
    
  • 期望的最理想的效果,窗口大小在"阈值"和“丢包窗口”之间
  • 7.延迟应答(效率机制)

    相当于流量控制的延伸
    流量控制是控制了发送方的传输速率
    而延时应答,是想在这个基础上,能够尽量的再让窗口大一些
    在这里插入图片描述

    在这里插入图片描述
    在 A 发送收据到缓冲区时,B 也同时在从“缓冲区”中拿出数据,这个延时应答,就是为了能够让 B 在这个延时的时间内,多拿走一些数据,这样缓冲区的空间就更大了,A 也就通过返回的 ACK 感知到了一个认为比较大空间,就可以发送更到的数据了。

    8.捎带应答(效率机制)

    捎带应答时延迟应答的延伸
    客户端和服务器之间的通信有以下几种类型:

    1. 一问一答,客户端发送一个请求,服务器就返回一个对应的响应(浏览器请求页面)
    2. 多问一答(上传文件)
    3. 一问多答(下载文件)
    4. 多问多答(直播)

    因为延迟应答的存在,导致 ACK 不一定是立即返回的。
    如果当前的延迟应答导致 ACK 的返回时机和应用程序代码中返回的响应时机重合了,就可以把这个 ACK 和 响应数据 合二为一。
    在这里插入图片描述

    9.面向字节流

    TCP 发送接收数据是面向字节流的,而面向字节流的机制会存在一个问题:粘包问题
    TCP 粘包粘的是 应用层数据报,在 TCP 接收缓冲区中,若干个“应用层数据包”混在一起了。

    解决方案:关键就是在应用层协议加入包之间的边界。

    10.TCP的异常处理

    1. 进程终止
      在这里插入图片描述

    2. 机器关机
      按照操作系统约定的正常流程关闭
      正常流程的关机。会让操作系统杀死所有进程,然后再关机。

    3. 机器掉电 / 网线断开
      直接拔电源
      此时操作系统没有任何反应时间,更不会有任何的处理措施。

    在这里插入图片描述
    TCP / UDP 分别在怎么样的场景适合使用

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSP 学生成绩管理系统myeclipse定制开发sqlserver数据库网页模式java编程jdbc

一、源码特点 JSP 学生成绩管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为SQLServer2008&#x…

layui 富文本layedit编辑、存储和回显

一、创建一个富文本编辑框 先定义一个textarea标签&#xff0c;给定一个id值&#xff0c;向页面引入layedit&#xff0c;然后调用layedit.build(id, options)构建富文本框 //官方给出的模板 <textarea id"demo" style"display: none;"></textar…

Linux的目录相关操作

目录 前言 处理目录的常见命令 cd&#xff08;change directory&#xff0c;切换目录&#xff09; pwd&#xff08;print working directory&#xff0c;显示目前所在的目录&#xff09; mkdir&#xff08;make directory&#xff0c;建立新目录&#xff09; rmdir&#x…

代码随想录算法训练营第十三天 | 第六章二叉树-理论基础,递归遍历,迭代遍历,统一迭代

一、参考资料二叉树理论基础文章讲解&#xff1a;https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 递归遍历题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%8…

Mobilenet v1-v3

MobileNet V1 理解 MobileNetV1的关键是理解深度可分离卷积 深度可分离卷积 Depthwise Separable Conv 深度可分离卷积单通道卷积&#xff08;提取特征&#xff09;逐点卷积&#xff08;增加维度&#xff09; 普通卷积 输入一个 12123 的一个输入特征图&#xff0c;经过256…

微服务/分布式初始

1.单体服务架构的特点 当服务单一、规模小、逻辑简单时&#xff0c;用一个单体服务就挺 单体服务的缺点 复杂程度高。维护成本越来越高&#xff0c;各个模块之间边界模糊&#xff0c;一个模块的改动可能导致整个服务出现问题&#xff0c;一点内存泄漏、一处指针错误就会让整…

汉诺塔+汉诺四塔(C/C++)

目录 汉诺塔 1 简介 2 代码思路 2.1 对于次数的理解 2.2 对于移动的理解 3 代码 4 加深理解 汉诺四塔 1 思路 2 代码 汉诺塔 1 简介 汉诺塔(Tower of Hanoi)&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三…

关于e^x的部分公式和约算方法

常用的几个不等式: ex≥x1e^{x}\geq x1ex≥x1ln⁡x≤x−1\ln x\leq x-1lnx≤x−1ex≥exe^{x} \geq exex≥exex≥1xx22e^x\geq1x\frac{x^2}{2}ex≥1x2x2​ 当x>0时&#xff0c;ex≥ex(x−1)2x2−(e−2)x1e^x\geq ex(x-1)^{2}x^2-(e-2)x1ex≥ex(x−1)2x2−(e−2)x1 上述算式在…

数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解

文章目录概念回顾1、函数依赖的定义1.1 平凡函数依赖和非平凡函数依赖1.2 完全函数依赖和部分函数依赖1.3 传递函数依赖2、码2.1 主码和候选码2.1主属性与非主属性2.2 全码2.3 外部码3、范式3.1 第一范式&#xff08;1NF&#xff09;3.2 第二范式&#xff08;2NF&#xff09;3.…

现在的互联网技术,已蜕变成区块链技术,人工智能技术

在互联网的进化过程中&#xff0c;我们看到了互联网技术的不断孪生与蝶变。现在的互联网技术&#xff0c;早已不再是传统意义上的互联网技术&#xff0c;而是蜕变成为了大数据技术&#xff0c;云计算技术&#xff0c;蜕变成为了区块链技术&#xff0c;人工智能技术。这些新的技…

【STM32笔记】HAL库ADC测量精度提高方案(利用内部参考电压VREFINT计算VDDA来提高精度)

【STM32笔记】HAL库ADC测量精度提高方案&#xff08;利用内部参考电压VREFINT计算VDDA来提高精度&#xff09; 多数STM32的MCU 都没有内部基准电压 如L496系列 但在外接VDDA时&#xff08;一般与VCC 3.3V连接&#xff09; 有可能VCC不稳定 导致参考电压不确定 从而使ADC测量不…

深度学习调参炼丹术(总结向)

调参控制变量&#xff0c;每次调一个值。 1.初始化方式&#xff1a;FC/CNN用kaiming uniform或normalize&#xff0c;Emendding选截断normalize 2.activation function&#xff1a;sigmoid(淘汰)、tanh(淘汰)、relu(推荐)、leakey-relu 3.优化器&#xff1a;SGD动量&#xff0…

若依配置教程(三)新建模块

若依模块化管理&#xff0c;使代码更加规范化&#xff0c;方便在不同文件夹下进行修改和开发。 接下来是新建模块的步骤&#xff1a; 文章目录**接下来是新建模块的步骤&#xff1a;**1.创建新的module2.配置pom.xml1.创建新的module 项目上鼠标右击&#xff1a; 然后修改项…

Kettle 实战教程

Kettle 实战教程1.引言....................................................................................81.1 编写目的...........................................................81.2 阅读对象...........................................................91.3 术…

DBCO-SS-Mal;DBCO二硫键-马来酰亚胺-点击化学

DBCO-SS-Maleimide&#xff1b;Mal-SS-DBCO 英 文 &#xff1a;DBCO-SS-Maleimide 中文&#xff1a;二苯并环辛炔-二硫键-马来酰亚胺 分子式&#xff1a;C30H30N4O5S2 分子量&#xff1a;590.71 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 用 途&#xff…

做自媒体,有哪些好用的工具和软件,这6大自媒体工具,力荐!

工具一&#xff1a;效率控 效率控是一个汇集很多工具的工具APP。使用它可以用来习惯养成&#xff0c;表情制作&#xff0c;二维码生成&#xff0c;倒数日&#xff0c;文字识别&#xff0c;配色方案等等。 它特别一个亮点的功能是剪切板增强&#xff0c;还有一个特别实用的功能是…

DevStyle,一个让Java开发更现代化的工具!

如果您喜欢Eclipse的强大功能&#xff0c;但对它的可用性和美观度没有很高的要求&#xff0c;那么从今天开始&#xff0c;请准备好从全新的角度来看待Eclipse。在之前暗黑的插件基础上&#xff0c;MyEclipse官方团队为大家带来了DevStyle。使用DevStyle&#xff0c;开发人员可以…

小程序提升篇-组件

提升篇学习目标如何自定义小程序组件小程序组件中behaviors的作用安装和配置vant-weapp组件库如何使用MobX实现全局数据共享如何对小程序API进行Promise化小程序组件学习目标创建并引用组件&#xff08;全局、局部、usingComponent&#xff09;修改组件样式&#xff08;option-…

Java JVM:字节码执行引擎(六)

执行引擎是 Java 虚拟机核心的组成部分之一&#xff0c;执行引擎由软件自行实现 目录一、运行时栈帧结构二、方法调用三、基于栈的字节码解释执行引擎四、OSGI&#xff1a;灵活的类加载器架构一、运行时栈帧结构 Java 虚拟机以方法作为最基本的执行单元&#xff0c;“栈帧”则…

如何用ffmpeg截取视频片段 以及 截取时间不准确的坑

之前在工作中&#xff0c;有遇到需要程序化截取视频片段的场景&#xff0c;这里使用ffmpeg命令行就可以很容易实现&#xff0c;这里也记录下我们使用过程中遇到的坑&#xff0c;希望对大家也有所帮助。    举个例子&#xff0c;当我们要截取视频文件中input.mp4的第15秒到第9…