计算机网络
TCP和UDP
TCP如何保证传输的可靠性
- 基于数据块传输:应用数据被分割成TCP认为最适合的数据块,传输给网络层,称为报文段
- 连接管理:三次握手和四次挥手
- 对失序数据包重新排序以及去重:每个数据包有一个序列号,有序列号就可以排序,去重
- 校验和:TCP会在发送端和接收端分别计算数据的校验和,如果不一致,就丢弃这个报文段和不确认收到此报文段
- 确认应答:接收方成功收到消息会有确认应答(ACK)
- 超时重传:当发送方发送数据后,会启动定时器等待接收方确认收到发送的报文段,接收方收到报文段会有返回确认信息,如果超时,就进行重传
- 流量控制:TCP连接的每一方都有固定大小缓冲空间,TCP协议报头包含16位的窗口大小,接收方会在返回ACK时同时把自己的即时窗口填入,发送方就根据报文中窗口的大小控制发送速度。TCP接收端只允许发送端发送可以被接收端缓冲区接纳的数据,当接收端来不及处理信息的时候,会提示发送端降低发送速率,防止包丢失。
- 拥塞控制:刚开始发送数据的时候,拥塞窗口是1,以后每次收到ACK拥塞窗口+1,然后将拥塞窗口和收到的窗口取较小值作为实际发送的窗口,如果发生超时重传,拥塞窗口重置为1。
TCP如何实现流量控制
TCP利用滑动窗口实现流量控制
TCP的发送窗口可以划分成四个部分:
1.已经发送且确认
2.已经发送未确认
3.未发送但接收方准备接受(即将发送)
4.未发送且接收方未准备接受(不可发送)

SND.WND(发送窗口)
SND.UNA(指向发送窗口的第一个字节)
SND.NXT(指向可用窗口的第一个字节)
TCP接受窗口:
1.已经接收且确认
2.等待接收且允许发送
3.不可接受且不允许发送

RCV.WND:接受滑动窗口大小
RCV.NXT:等待接受的第一个字节
接收窗口的大小是根据接收端处理数据的速度动态调整的。
TCP的拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中

TCP发送方维持拥塞窗口,拥塞控制窗口的大小取决于网络拥塞程度,动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个
ssthresh:慢开始门槛,慢开始算法变为阻塞避免算法。如果遇到重传计时器溢出,就将慢开始门槛变成阻塞时候窗口值的一半,阻塞窗口变为1。(图中2超时情况)
遇到三次ACK的情况采用FRR算法(图中4情况)ssthresh变为阻塞窗口的一半,阻塞窗口也变为一半,所以直接开始阻塞避免算法。
- 慢开始:当主机开始发送数据时,由小到大逐渐增大拥塞窗口数值,初始值为1,依次加倍
- 拥塞避免:让拥塞窗口缓慢增大,加一
- 快重传和快恢复:FRR拥塞控制算法,快速恢复丢失的数据包。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。
HTTP常见状态码
1XX:信息性状态码:接受的请求正在处理
2XX:成功状态码:请求正常处理完毕
3XX:重定向状态码:需要进行附加操作完成请求
4XX:客户端错误状态码:服务器无法处理请求
5XX:服务器错误状态码:服务器处理请求出错
200 OK :请求被成功处理。
201 Created :请求被成功处理并且在服务端创建了一个新的资源。
202 Accepted :服务端已经接收到了请求,但是还未处理。
204 No Content : 服务端已经成功处理了请求,但是没有返回任何内容。
301 Moved Permanently : 资源被永久重定向了。比如你的网站的网址更换了。
302 Found :资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。
404 bad Request : 发送的HTTP请求存在问题。比如请求参数不合法、请求方法错误。
401 Unauthorized : 未认证却请求需要认证之后才能访问的资源
403 Forbidden :直接拒绝HTTP请求,不处理。一般用来针对非法请求。
404 Not Found : 你请求的资源未在服务端找到。比如你请求某个用户的信息,服务端并没有找到指定的用户。
500 Internal Server Error : 服务端出问题了(通常是服务端出Bug了)。
502 Bad Gateway :我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。
HTTP报文
请求报文
请求行,请求头,请求体


响应报文
响应行、响应头、响应体

请求方法
1.GET 请求制定页面信息,返回实体主体
2. HEAD 类似于GET请求,不过返回相应中没有具体的内容,用于获取报头
3. POST 向指定资源提交数据处理请求
4. PUT 传送的数据取代指定的文档内容
5. DELETE 删除指定的页面
6. OPTIONS 允许客户端查看服务器性能
7. TRACE 回显服务端收到的请求,用于测试或诊断
8. PATCH 对PUT方法的补充,用来对已知资源的局部更新
GET请求和POST请求的区别
- GET 请求的请求参数是添加到 head 中,可以在 url 中可以看到;POST 请求的请求参数是添加到body中,在url 中不可见。
- 因为请求的url有长度限制,这个限制由浏览器和服务器决定,因为GET请求添加在url中,所以GET请求对请求参数长度有限制,POST请求没有。
相关文章:
计算机网络
TCP和UDP TCP如何保证传输的可靠性 基于数据块传输:应用数据被分割成TCP认为最适合的数据块,传输给网络层,称为报文段连接管理:三次握手和四次挥手对失序数据包重新排序以及去重:每个数据包有一个序列号,…...
【Unity VR开发】结合VRTK4.0:将浮点操作转换为布尔操作
语录: 奈何桥上奈何愁,奈何桥下浣溪流,奈何人人奈何泪,奈何奈何洗春秋。 前言: 有时,您可能希望使用 一个值来激活或停用操作类型。例如,按下控制器上的扳机轴会导致在完全按下扳机时发生操作。…...
error when starting dev server:Error: Failed to resolve vue/compiler-sfc.
对于node 的包管理工具,我一般习惯用 yarn,但是最近使用 yarn 创建前端项目的时候出了一些问题。yarn create vite vite-project报错如下:error when starting dev server:Error: Failed to resolve vue/compiler-sfc.vitejs/plugin-vue requ…...
Vue2之完整基础介绍和指令与过滤器
Vue2之基础介绍和指令与过滤器一、简介1、概念2、vue的两个特性2.1 数据驱动视图2.2 双向数据绑定3、MVVM二、vue基础用法1、导入vue.js的script脚本文件2、在页面中声明一个将要被vue所控制的DOM区域3、创建vm实例对象(vue实例对象)4、样例完整代码三、…...
JY-7A/3DK/220 19-130V静态【电压继电器】
系列型号 JY-7A/1DK不带辅助电源电压继电器;JY-7B/1DK不带辅助电源电压继电器; JY-7/1DK/120不带辅助电源电压继电器;JY-7/1DK/120不带辅助电源电压继电器; JY-7A/1DKQ不带辅助电源电压继电器;JY-7B/1DKQ不带辅助电源…...
[ECCV 2018] Learning to Navigate for Fine-grained Classification
Contents MethodNavigator-Teacher-Scrutinizer Network (NTS-Net)Navigator and TeacherScrutinizerNetwork architectureJoint training algorithmExperimentReferencesMethod Navigator-Teacher-Scrutinizer Network (NTS-Net) Approach Overview:NTS-Net 在不使用额外的 …...
关于apifox和postman接口工具我有话要说~~
Apifox 和 Postman 都是流行的接口测试工具,各自有其优势和缺点。Apifox 的优势在于它提供了强大的可视化界面,可以方便地测试和监控 API。它还支持多种请求方式,并且支持对请求和响应进行代码生成。但是,Apifox 的缺点在于它不太…...
Vue3通透教程【二】更高效的构建工具—Vite
文章目录🌟 写在前面🌟 webpack🌟 Vite是什么?🌟 使用Vite创建项目🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更…...
前端中如何判断在线状态?
判断在线状态为了判断浏览器的在线状态,HTML5提供了两种方法来检测是否在线。(1)onLine属性:通过navigator对象的onLine属性可返回当前是否在线。如果返回true,则表示在线;如果返回false,则表示…...
[MySQL教程①] - MySQL的安装
目录 ❤ Windows下安装MySQL ❤ 下载mysql installer安装 ❤ 下载zip安装包安装 现在作为服务器操作系统的一般有三种,Windows Server,Linux,Unix,在这里我们只介绍在windows下和linux下安装mysql,Unix下安装应该…...
第八节 Linux 设备树
Linux3.x 以后的版本才引入了设备树,设备树用于描述一个硬件平台的板级细节。在早些的linux内核,这些“硬件平台的板级细节”保存在linux 内核目录“/arch”,以ARM 平台为例“硬件平台的板级细节”保存在“/arch/arm/plat-xxx”和“/arch/arm…...
一文了解kafka消息队列,实现kafka的生产者(Producer)和消费者(Consumer)的代码,消息的持久化和消息的同步发送和异步发送
文章目录1. kafka的介绍1.2 Kafka适合的应用场景1.2 Kafka的四个核心API2. 代码实现kafka的生产者和消费者2.1 引入加入jar包2.2 生产者代码2.3 消费者代码2.4 介绍kafka生产者和消费者模式3. 消息持久化4. 消息的同步和异步发送5. 参考文档1. kafka的介绍 最近在学习kafka相关…...
数学建模学习笔记(20)典型相关分析
典型相关分析概述:研究两组变量(每组变量都可能有多个指标)之间的相关关系的一种多元统计方法,能够揭示两组变量之间的内在联系。 典型相关分析的思想:把多个变量和多个变量之间的相关化为两个具有代表性的变量之间的…...
EL表达式
EL的概念JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。EL的作用用于替换作用域对象.getAttribute("name");3. EL的应用(获取基本类型、字符串)既可以用来创建算术表达式也可以用来创建逻辑表达式。在…...
优先级队列(PriorityQueue 和 Top-K问题)
一、PriorityQueue java中提供了两种优先级队列:PriorityQueue 和 PriorityBlockingQueue。其中 PriorityQueue 是线程不安全的,PriorityBolckingQueue 是线程安全的。 PriorityQueue 使用的是堆,且默认情况下是小堆——每次获取到的元素都是…...
计算机组成与设计04——处理器
系列文章目录 本系列博客重点在深圳大学计算机系统(3)课程的核心内容梳理,参考书目《计算机组成与设计》(有问题欢迎在评论区讨论指出,或直接私信联系我)。 第一章 计算机组成与设计01——计算机概要与技…...
IT行业那么辛苦,我们为什么还要选择它?
疫情三年,我们学会了什么?工作诚可贵,技能价更高。 搞IT辛苦?有啥辛苦的?说什么辛苦?能有工作,工资又高,还要什么自行车,有啥搞啥吧!每次看到网络上有人问有…...
PyTorch学习笔记:nn.CrossEntropyLoss——交叉熵损失
PyTorch学习笔记:nn.CrossEntropyLoss——交叉熵损失 torch.nn.CrossEntropyLoss(weightNone, size_averageNone, ignore_index-100, reduceNone, reductionmean, label_smoothing0.0)功能:创建一个交叉熵损失函数: l(x,y)L{l1,…,lN}T&…...
【VictoriaMetrics】什么是VictoriaMetrics
VictoriaMetrics是一个快速、经济、可扩展的监控解决方案和时间序列数据库,有单机版和集群版本,基础功能及集群版本基本功能不收费,VictoriaMetrics有二进制安装版本、Docker安装版本等多种安装方式,其源码及部署包更新迭代很快,VictoriaMetrics具有以下突出特点: 它可以作…...
(第五章)OpenGL超级宝典学习:统一变量(uniform variable)
统一变量 前言 本篇在讲什么 本篇记录对glsl中的变量uniform的认知和学习 本篇适合什么 适合初学Open的小白 适合想要学习OpenGL中uniform的人 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 …...
FireRedASR-AED-L在Windows系统的部署问题解决方案
FireRedASR-AED-L在Windows系统的部署问题解决方案 1. 引言 如果你正在Windows系统上尝试部署FireRedASR-AED-L这个强大的语音识别模型,可能会遇到各种让人头疼的问题。环境配置、依赖冲突、GPU兼容性——这些都是Windows环境下部署深度学习模型时常见的拦路虎。 …...
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置 在AI绘图领域,ComfyUI和Stable Diffusion WebUI(简称WebUI)各有优势。ComfyUI以其高度可定制的工作流著称,而WebUI则提供了…...
Python制作简易PDF查看工具——PDFViewerV1.0
PDFViewer PDF浏览工具,是使用Python语言(使用PyQt5开发界面,PDF解析使用PyMuPDF开源模块)开发的PDF查看工具,已经实现基本翻页浏览、OCR文字识别(基于开源主流文字识别模型实现)、内容查找高亮…...
HP-Socket版本发布后用户反馈分析:情感、主题与趋势
HP-Socket版本发布后用户反馈分析:情感、主题与趋势 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件,…...
FLUX.1文生图优化技巧:SDXL风格节点参数这样调,图片效果更出彩
FLUX.1文生图优化技巧:SDXL风格节点参数这样调,图片效果更出彩 1. 快速上手:FLUX.1文生图工作流基础操作 1.1 工作流启动指南 启动FLUX.1文生图工作流只需简单三步: 在ComfyUI左侧面板找到"FLUX.1-dev-fp8-dit文生图&quo…...
探索Comsol在光子晶体光纤SPR - PCF传感器及光学仿真中的奇妙世界
Comsol光子晶体光纤spr pcf传感器comsol光 Comsol光子晶体光纤spr pcf传感器 comsol光学仿真spr。 利用几何相位缺陷态光子晶体实现谷自旋分离在光学领域,光子晶体光纤(PCF)以及表面等离子体共振(SPR)相关的研究一直热…...
foobox-cn个性化定制指南:打造专属foobar2000音乐界面
foobox-cn个性化定制指南:打造专属foobar2000音乐界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn是一款为foobar2000播放器设计的DUI(自定义用户界面࿰…...
DanKoe 视频笔记:生活哲学:理解生活的三个阶段
在本节课中,我们将学习一个关于个人成长与生活节奏的框架。通过理解“强度”、“一致性”和“好奇心”这三个循环往复的阶段,你可以更好地定位自己当前的状态,并学会顺应而非对抗生活的自然周期,从而减少迷茫,更有效地…...
ComfyUI-Easy-Use:让AI绘画工作流像搭积木一样简单
ComfyUI-Easy-Use:让AI绘画工作流像搭积木一样简单 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.com/gh_mirro…...
构建全渠道智能通知系统:从高可用架构到用户体验优化
1. 全渠道智能通知系统的核心价值 想象一下这样的场景:你在电商平台下单后,系统立即通过短信发送订单确认通知;当你忘记支付时,APP推送会及时提醒;订单发货后,邮箱里静静躺着物流信息;而站内信则…...
