计算机网络: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. 前置知识点
- 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表示服务器差错。
个人用到常见状态码
| 状态码 | 含义 |
|---|---|
| 200 | OK,请求成功 |
| 400 | Bad Request,错误请求 |
| 404 | Not Found,服务器无法找到请求资源 |
| 503 | Service 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)分析。通过一句命令即可展示动态效应…...
文心一言 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:响应式编程的现代方式
在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJ…...
Maven 依赖漏洞扫描检查插件 dependency-check-maven 的使用
前言 在现代软件开发中,开源库的使用愈加普遍,然而这些开源库中的漏洞往往会成为潜在的安全风险。如何及时的发现依赖的第三方库是否存在漏洞,就变成很重要了。 本文向大家推荐一款可以进行依赖包漏洞检查的 maven 插件 dependency-check-m…...
2. 下载rknn-toolkit2项目
官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git或者直接去github下载压缩文件,解压即可。...
xhr、ajax、axois、fetch的区别
一、XMLHttpRequest (XHR)、AJAX、Axios 和 Fetch API 都是用于在不重新加载整个页面的情况下与服务器进行通信的技术和库。它们在处理超时、终止请求、进度反馈等机制上有一些显著的差异。以下是它们的详细比较: 1. XMLHttpRequest (XHR) XMLHttpRequest 是一种浏…...
【HuggingFace Transformers】OpenAIGPTModel源码解析
OpenAIGPTModel源码解析 1. GPT 介绍2. OpenAIGPTModel类 源码解析 说到ChatGPT,大家可能都使用过吧。2022年,ChatGPT的推出引发了广泛的关注和讨论。这款对话生成模型不仅具备了强大的语言理解和生成能力,还能进行非常自然的对话,…...
macOS安装Java和Maven
安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…...
SpringBoot教程(安装篇) | Elasticsearch的安装
SpringBoot教程(安装篇) | Elasticsearch的安装 一、确定Elasticsearch版本二、下载elasticsearch(windows版本)官网下载如何解压配置 允许 别人跨域 访问自己启动运行 三、Es可视化工具安装(elasticsearch-head&#…...
前端登录鉴权——以若依Ruoyi前后端分离项目为例解读
权限模型 Ruoyi框架学习——权限管理_若依框架权限-CSDN博客 用户-角色-菜单(User-Role-Menu)模型是一种常用于权限管理的设计模式,用于实现系统中的用户权限控制。该模型主要包含以下几个要素: 用户(User)…...
【Tools】大模型中的自注意力机制
摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样 🎵 方芳《摇太阳》 自注意力机制(Self-Attention)是一…...
PhotoZoom Classic 9软件新功能特性及安装激活图文教程
PhotoZoom Classic 9这款软件能够对数码图片进行放大,而且放大后的图片没有任何的品质的损坏,没有锯齿,不会失真,如果您有兴趣的话可以试试哦! PhotoZoom Classic 9软件新功能特性 通过屡获殊荣的 S-Spline XL 插值…...
【数据结构】直接插入排序
目录 一、基本思想 二、动图演示 三、思路分析 四、代码实现 五、易错提醒 六、时间复杂度分析 一、基本思想 直接插入排序(Straight Insertion Sort)是一种简单直观的排序算法,其基本思想是: 把待排序的一个记录按其关键码…...
JavaScript 实现虚拟滚动技术
虚拟滚动 虚拟滚动(有时称为 虚拟列表、虚拟滚动条)是 JavaScript 中的一种技术,旨在优化大数据量的列表渲染,尤其是当有成千上万的数据项时,直接渲染整个列表会导致性能问题。虚拟列表通过只渲染用户视口中可见的那一…...
【重学 MySQL】十八、逻辑运算符的使用
【重学 MySQL】十八、逻辑运算符的使用 AND运算符OR运算符NOT运算符异或运算符使用 XOR 关键字使用 BIT_XOR() 函数注意事项 注意事项 在MySQL中,逻辑运算符是构建复杂查询语句的重要工具,它们用于处理布尔类型的数据,进行逻辑判断和组合条件…...
关于 QImage原始数据格式与cv::Mat原始数据进行手码数据转换 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141996117 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含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…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
