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

计算机网络:http协议

计算机网络:http协议

  • 一、本文内容与前置知识点
    • 1. 本文内容
    • 2. 前置知识点
  • 二、HTTP协议工作简介
    • 1. 特点
    • 2. 传输时间分析
    • 3. http报文结构
  • 三、HTTP版本迭代
    • 1. HTTP1.0和HTTP1.1主要区别
    • 2. HTTP1.1和HTTP2主要区别
    • 3. HTTPS与HTTP的主要区别
  • 四、参考文献

一、本文内容与前置知识点

1. 本文内容

HTTP自己用到的状态码,方法,HTTP各版本区别。

2. 前置知识点

  1. c++关于指针和内存分配知识点

二、HTTP协议工作简介

1)面向事物的应用层协议。
2)请求-应答模型,这部分可以理解为同步通信。
工作图解如下
参考《计算机网络》6.4.3 超文本传输协议HTTP p267
在这里插入图片描述

1. 特点

1)基于TCP连接:保证了数据可靠传输,所以HTTP不再需要考虑数据丢失和重传。
2)本身是无连接协议:从http协议层面来说,不存在http连接建立。
3)无状态的:服务器并记录客户访问的过程,每一个都是新的独立的http请求,简化了服务器设计,提高效率。

2. 传输时间分析

1)客户端和服务器tcp连接三次握手,第三次握手的时候会传输http请求报文。(1.5RTT时间)
2)服务器收到http请求报文之后进行数据准备,分片发送文件,需要花费时间T。
3)分片发送文件的最后一片到达的时间为1.5RTT+T+0.5RTT = 2RTT+T。
综上,一次http请求从开始到返回应答的时间是2RTT+T

在此之后会有四次挥手的连接释放过程,但是在此之前已经拿到应答了。

3. http报文结构

如下图所示:
参考《计算机网络》6.4.3超文本传输协议HTTP p271
在这里插入图片描述
1)开始行
用于区分请求报文和响应报文,会有所不同,请求报文主要是方法和URL,响应报文主要是状态码。
个人用到的常见方法

方法意义
OPTION请求一些选项信息
GET读取URL标志的星系
POST给服务器添加信息
DELETE删除URL所标志的资源

状态码
1xx表示通知消息,2xx表示成功,3xx表示重定向,4xx表示客户端出错,5xx表示服务器差错。
个人用到常见状态码

状态码含义
200OK,请求成功
400Bad Request,错误请求
404Not Found,服务器无法找到请求资源
503Service Unavailable,服务器暂时无法处理请求,因为忙碌或超载

2)首部行

3)实体主体
消息传输的载体,一般服务器返回的数据就在这个实体主题显示,在机器人API的数据请求指令中,实体主体内会包含json字符串格式的数据。

三、HTTP版本迭代

1. HTTP1.0和HTTP1.1主要区别

1)引入了长连接,一次http请求应答之后,tcp连接会继续持续一段时间,此时可以继续发送其他http请求,提高效率。
"Connections:close"代表此次http请求后会将长连接断开。
"Connections:keep-alive"代表此次http请求后还会有额外的请求,不打算断开tcp连接。
2)http1.1流水线模式(请求管线化),每个http请求不需要等待上一个请求应答就可以立刻发送,tcp连接建立后,访问所有对象都只需要一个RTT时间。但是响应必须按照请求发出顺序返回,存在头部阻塞

2. HTTP1.1和HTTP2主要区别

1)数据分帧:帧是 HTTP/2 协议中的最小单位。所有的 HTTP/2 通信都通过帧进行。每个帧都包含一个固定长度的头部(标识所属于的stream流)和一个可变长度的负载
2)引入了多路复用:有了固定长度头部之后,就可以表面这个帧属于那一个http请求流,此时头部阻塞问题解决,实现了真正的并发,所有流使用同一个tcp连接进行,

3. HTTPS与HTTP的主要区别

1)HTTPS使通过SSL\TLS进行了加密
2)端口号不同,HTTP是80默认,HTTPS443
3)HTTPS需要CA证书
4)HTTP 的连接简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身 份认证的网络协议,比 HTTP 协议安全。

四、参考文献

《计算机网络》6.4.3 超文本传输协议HTTP p267
《计算机网络》6.4.3超文本传输协议HTTP p271

相关文章:

计算机网络:http协议

计算机网络:http协议 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、HTTP协议工作简介1. 特点2. 传输时间分析3. http报文结构 三、HTTP版本迭代1. HTTP1.0和HTTP1.1主要区别2. HTTP1.1和HTTP2主要区别3. HTTPS与HTTP的主要区别 四、参考文献 一、本文内容…...

【stata】自写命令分享dynamic_est,一键生成dynamic effect

1. 命令简介 dynamic_est 是一个用于可视化动态效应(dynamic effect)的工具。它特别适用于事件研究(event study)或双重差分(Difference-in-Differences, DID)分析。通过一句命令即可展示动态效应&#xf…...

文心一言 VS 讯飞星火 VS chatgpt (342)-- 算法导论23.2 1题

一、对于同一个输入图,Kruskal算法返回的最小生成树可以不同。这种不同来源于对边进行排序时,对权重相同的边进行的不同处理。证明:对于图G的每棵最小生成树T,都存在一种办法来对G的边进行排序,使得Kruskal算法所返回的…...

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。 nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台…...

oc打包:权限弹窗无法正常弹出

在遇到编写了权限无法弹出弹窗时,需要查看是不是调用时机不对,这里直接教万能改法。 将权限获取方法编写在applicationDidBecomeActive 进入前台的生命周期接口中,如下: if (@available(iOS 14, *)) {NSLog<...

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中&#xff0c;异步编程和事件驱动的架构变得越来越重要。RxJava&#xff0c;作为响应式编程&#xff08;Reactive Programming&#xff09;的一个流行库&#xff0c;为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJ…...

Maven 依赖漏洞扫描检查插件 dependency-check-maven 的使用

前言 在现代软件开发中&#xff0c;开源库的使用愈加普遍&#xff0c;然而这些开源库中的漏洞往往会成为潜在的安全风险。如何及时的发现依赖的第三方库是否存在漏洞&#xff0c;就变成很重要了。 本文向大家推荐一款可以进行依赖包漏洞检查的 maven 插件 dependency-check-m…...

2. 下载rknn-toolkit2项目

官网链接&#xff1a; https://github.com/airockchip/rknn-toolkit2 安装好git&#xff1a;[[1. Git的安装]] 下载项目&#xff1a; git clone https://github.com/airockchip/rknn-toolkit2.git或者直接去github下载压缩文件&#xff0c;解压即可。...

xhr、ajax、axois、fetch的区别

一、XMLHttpRequest (XHR)、AJAX、Axios 和 Fetch API 都是用于在不重新加载整个页面的情况下与服务器进行通信的技术和库。它们在处理超时、终止请求、进度反馈等机制上有一些显著的差异。以下是它们的详细比较&#xff1a; 1. XMLHttpRequest (XHR) XMLHttpRequest 是一种浏…...

【HuggingFace Transformers】OpenAIGPTModel源码解析

OpenAIGPTModel源码解析 1. GPT 介绍2. OpenAIGPTModel类 源码解析 说到ChatGPT&#xff0c;大家可能都使用过吧。2022年&#xff0c;ChatGPT的推出引发了广泛的关注和讨论。这款对话生成模型不仅具备了强大的语言理解和生成能力&#xff0c;还能进行非常自然的对话&#xff0c…...

macOS安装Java和Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本&#xff0c;注意这里我们要下载的是Java8&#xff0c;对应的JDK1.8 需要登陆Oracle&#xff0c;没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…...

SpringBoot教程(安装篇) | Elasticsearch的安装

SpringBoot教程&#xff08;安装篇&#xff09; | Elasticsearch的安装 一、确定Elasticsearch版本二、下载elasticsearch&#xff08;windows版本&#xff09;官网下载如何解压配置 允许 别人跨域 访问自己启动运行 三、Es可视化工具安装&#xff08;elasticsearch-head&#…...

前端登录鉴权——以若依Ruoyi前后端分离项目为例解读

权限模型 Ruoyi框架学习——权限管理_若依框架权限-CSDN博客 用户-角色-菜单&#xff08;User-Role-Menu&#xff09;模型是一种常用于权限管理的设计模式&#xff0c;用于实现系统中的用户权限控制。该模型主要包含以下几个要素&#xff1a; 用户&#xff08;User&#xff09;…...

【Tools】大模型中的自注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样 &#x1f3b5; 方芳《摇太阳》 自注意力机制&#xff08;Self-Attention&#xff09;是一…...

PhotoZoom Classic 9软件新功能特性及安装激活图文教程

PhotoZoom Classic 9这款软件能够对数码图片进行放大&#xff0c;而且放大后的图片没有任何的品质的损坏&#xff0c;没有锯齿&#xff0c;不会失真&#xff0c;如果您有兴趣的话可以试试哦&#xff01; PhotoZoom Classic 9软件新功能特性 通过屡获殊荣的 S-Spline XL 插值…...

【数据结构】直接插入排序

目录 一、基本思想 二、动图演示 三、思路分析 四、代码实现 五、易错提醒 六、时间复杂度分析 一、基本思想 直接插入排序&#xff08;Straight Insertion Sort&#xff09;是一种简单直观的排序算法&#xff0c;其基本思想是&#xff1a; 把待排序的一个记录按其关键码…...

JavaScript 实现虚拟滚动技术

虚拟滚动 虚拟滚动&#xff08;有时称为 虚拟列表、虚拟滚动条&#xff09;是 JavaScript 中的一种技术&#xff0c;旨在优化大数据量的列表渲染&#xff0c;尤其是当有成千上万的数据项时&#xff0c;直接渲染整个列表会导致性能问题。虚拟列表通过只渲染用户视口中可见的那一…...

【重学 MySQL】十八、逻辑运算符的使用

【重学 MySQL】十八、逻辑运算符的使用 AND运算符OR运算符NOT运算符异或运算符使用 XOR 关键字使用 BIT_XOR() 函数注意事项 注意事项 在MySQL中&#xff0c;逻辑运算符是构建复杂查询语句的重要工具&#xff0c;它们用于处理布尔类型的数据&#xff0c;进行逻辑判断和组合条件…...

关于 QImage原始数据格式与cv::Mat原始数据进行手码数据转换 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141996117 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

前端WebSocket客户端实现

// 创建WebSocket连接 var socket new WebSocket(ws://your-spring-boot-server-url/websocket-endpoint);// 连接打开时触发 socket.addEventListener(open, function (event) {socket.send(JSON.stringify({type: JOIN, room: general})); });// 监听从服务器来的消息 socke…...

蛋白质设计新范式:QUBO建模与迭代学习框架解析

1. 项目概述与核心思路在生物信息学和计算生物学领域&#xff0c;蛋白质设计一直是一个“圣杯”级别的挑战。简单来说&#xff0c;它要回答一个逆向问题&#xff1a;给定一个我们想要的蛋白质三维结构&#xff0c;如何从头设计出能折叠成这个结构的氨基酸序列&#xff1f;传统方…...

云安全与合规

云安全与合规 1. 技术分析 1.1 云安全概述 云安全是云计算的关键考量&#xff1a; 云安全维度数据安全: 加密、访问控制网络安全: 防火墙、VPN身份管理: IAM、SSO合规性: GDPR、SOC2安全责任:服务商: 基础设施安全用户: 数据和应用安全1.2 云安全架构 安全层次物理层: 数据…...

华为OD机试 新系统 C++实现【社交网络相同爱好好友查询】

社交网络相同爱好好友查询 华为OD新系统机试真题 华为OD新系统上机考试真题 5月13号 200分题型 本题更多语言题解&#xff0c;可点击查看:华为OD机试新系统真题 - 社交网络相同爱好好友查询(C/C/Py/Java/Js/Go)题解 题目内容 在一个社交网络中&#xff0c;用户之间通过"…...

Windows下JMeter高并发压测端口耗尽问题排查与修复

1. 为什么压测做到一半&#xff0c;JMeter突然报“Connection refused”却查不到服务端异常&#xff1f;你正在用JMeter对一个新上线的订单接口做5000并发压测&#xff0c;线程组配置妥当&#xff0c;监听器数据也正常跳动。跑到第3分钟&#xff0c;错误率陡然飙升到92%&#x…...

Kubernetes性能优化指南:提升集群运行效率

Kubernetes性能优化指南&#xff1a;提升集群运行效率 引言 在生产环境中&#xff0c;Kubernetes集群的性能优化是一个持续的过程。通过优化&#xff0c;可以提高资源利用率、减少响应时间、提升用户体验。 今天就来分享一下Kubernetes性能优化的经验和方法。 资源优化 Pod资源…...

ssm出租车投诉管理系统(10092)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

高效拦截微信撤回消息:WeChatIntercept一站式解决方案

高效拦截微信撤回消息&#xff1a;WeChatIntercept一站式解决方案 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;仅MAC可用&#xff0c;支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 还在为微信聊天…...

中文医疗对话数据集:构建医疗大语言模型的黄金语料库

中文医疗对话数据集&#xff1a;构建医疗大语言模型的黄金语料库 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data 在医疗AI领域&#x…...

Zotero文献去重插件:高效清理重复文献的完整解决方案

Zotero文献去重插件&#xff1a;高效清理重复文献的完整解决方案 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 在学术研究过程中&#xff0c…...

如何在OpenClaw项目中集成Taotoken提供的大模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何在OpenClaw项目中集成Taotoken提供的大模型能力 OpenClaw是一个用于构建智能体工作流的流行框架&#xff0c;它原生支持通过配…...