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

计算机网络

TCP和UDP

TCP如何保证传输的可靠性

  1. 基于数据块传输:应用数据被分割成TCP认为最适合的数据块,传输给网络层,称为报文段
  2. 连接管理:三次握手和四次挥手
  3. 对失序数据包重新排序以及去重:每个数据包有一个序列号,有序列号就可以排序,去重
  4. 校验和:TCP会在发送端和接收端分别计算数据的校验和,如果不一致,就丢弃这个报文段和不确认收到此报文段
  5. 确认应答:接收方成功收到消息会有确认应答(ACK)
  6. 超时重传:当发送方发送数据后,会启动定时器等待接收方确认收到发送的报文段,接收方收到报文段会有返回确认信息,如果超时,就进行重传
  7. 流量控制:TCP连接的每一方都有固定大小缓冲空间,TCP协议报头包含16位的窗口大小,接收方会在返回ACK时同时把自己的即时窗口填入,发送方就根据报文中窗口的大小控制发送速度。TCP接收端只允许发送端发送可以被接收端缓冲区接纳的数据,当接收端来不及处理信息的时候,会提示发送端降低发送速率,防止包丢失。
  8. 拥塞控制:刚开始发送数据的时候,拥塞窗口是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. 慢开始:当主机开始发送数据时,由小到大逐渐增大拥塞窗口数值,初始值为1,依次加倍
  2. 拥塞避免:让拥塞窗口缓慢增大,加一
  3. 快重传和快恢复: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请求的区别
  1. GET 请求的请求参数是添加到 head 中,可以在 url 中可以看到;POST 请求的请求参数是添加到body中,在url 中不可见。
  2. 因为请求的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编辑器 本篇的特色 …...

基于reflectt-node的WebSocket RPC实践:构建实时协作待办应用

1. 项目概述与核心价值 最近在折腾一个需要实时双向通信的Web应用,传统的轮询和长轮询方案在性能和资源消耗上总感觉差那么点意思。后来把目光投向了WebSocket,但原生WebSocket的API相对底层,自己管理连接、心跳、重连、消息序列化这些琐事&a…...

别再死记硬背了!用这3个真实网络场景,彻底搞懂华为ACL的配置逻辑

华为ACL实战指南:3个典型场景解锁访问控制精髓 每次看到新手工程师面对ACL配置时一脸茫然的样子,我就想起自己当年在机房通宵排错的经历。访问控制列表(ACL)作为网络安全的"门禁系统",其重要性不言而喻&…...

告别繁琐配置!用Spring Integration MQTT Starter 5分钟搞定SpringBoot消息通信

SpringBoot与MQTT的极速集成:5分钟构建高效消息通信系统 在物联网和微服务架构盛行的今天,轻量级消息通信协议MQTT凭借其低功耗、低带宽占用和高效发布/订阅模式,成为设备互联的首选方案。但对于SpringBoot开发者而言,传统MQTT集成…...

量子误差缓解技术与BBGKY层次结构的应用

1. 量子误差缓解的现状与挑战在当前的NISQ(噪声中等规模量子)时代,量子计算机的实际应用面临着一个根本性障碍:量子噪声。与经典计算机不同,量子比特极易受到环境干扰,导致计算错误。这种噪声主要来源于量子…...

契约驱动开发:用AI守护代码质量,告别技术债

1. 项目概述:从“技术债”到“可持续开发”的范式转变 如果你和我一样,长期在技术一线摸爬滚打,那你一定对“技术债”这个词又爱又恨。爱它,是因为它给了我们一个快速交付的借口;恨它,是因为它总在项目最脆…...

【Zotero-Perplexity协同系统白皮书】:基于127个真实科研场景验证的整合失败率下降91.6%的工程化方案

更多请点击: https://intelliparadigm.com 第一章:Zotero-Perplexity协同系统白皮书概览 Zotero-Perplexity协同系统是一个面向学术研究者的智能文献工作流增强框架,它将Zotero本地文献管理能力与Perplexity AI的实时语义检索、上下文感知问…...

利用 JiuwenClaw AgentTeam 打造自动化研发团队

利用 JiuwenClaw AgentTeam 打造自动化研发团队 本文介绍如何通过 JiuwenClaw AgentTeam 构建自动化研发团队,实现字幕软件开发、AtomGit Issue/PR 智能处理与飞书文档同步。 目录 JiuwenClaw 平台概述 系统架构预置智能体类型 什么是 AgentTeams飞书群中添加机器人…...

GDB与QEMU实现的可逆调试技术详解

1. 可逆调试技术概述可逆调试(Reversible Debugging)是一种革命性的调试技术,它允许开发者在程序执行过程中不仅能够向前执行,还能向后追溯程序状态。想象一下,如果你在调试时发现了一个内存损坏问题,传统的…...

AI增强自动化工作流:从规则驱动到意图驱动的智能决策实践

1. 项目概述:当AI遇见自动化工作流最近在GitHub上看到一个挺有意思的项目,叫“NitroRCr/AIaW”。光看名字,可能有点摸不着头脑,但点进去研究一下,你会发现它其实是一个将人工智能(AI)与自动化工…...

基础模型全生命周期管理的混合架构实践与优化

1. 基础模型全生命周期管理的架构挑战基础模型(Foundation Models)正在重塑AI技术栈的每个环节,从预训练到推理部署的全生命周期管理面临前所未有的系统架构挑战。传统HPC(高性能计算)集群和云原生平台各自为政的局面&…...