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

【计算机网络】什么是http?

目录

前言

1. 什么是HTTP协议?

2. 为什么使用HTTP协议?

3. HTTP协议通信过程

4. 什么是url?

5. HTTP报文

5.1 请求报文

5.2 响应报文

6. HTTP请求方式

7. HTTP头部字段

8. HTTP状态码

 9. 连接管理

长连接与短连接

管线化连接


前言

在日常的Web项目练习中,我们会发现老师会让我们在打开服务器之后使用 http://localhost/...进行项目效果测试和预览,偶尔会有同学尝试使用 https://localhost/... 进行服务请求,但出现“无法访问”的情况,这是为什么呢?当时也没有学习“《计算机网络》”,对此一无所知,只知道https是通信安全的协议;现今,我们将对 http https 进行学习理解。

本栏其他文章:https的工作原理以及和http的区别


1. 什么是HTTP协议?

HTTP协议是 Hyper Test Transfer Protocol(超文本传输协议)的缩写


2. 为什么使用HTTP协议?

HTTP协议是用于服务器与客户端浏览器之间传输超文本数据(文字、图片、视频、音频)的应用层协议


3. HTTP协议通信过程

http协议通信过程步骤:

1. 用户发起一个请求时,浏览器会对服务器的 TCP 请求连接

2. 服务器与浏览器会按照 TCP 协议的三次握手,建立 TCP 连接

3. 浏览器按照 http 协议格式,创建请求数据包(http请求报文),然后将请求数据包发送给服务器

4. 服务器按照 http 协议格式,解析请求数据包,执行请求处理,调用相关业务的方法,产生相应数据,然后将响应数据封装成响应数据包(http 响应报文)并发送给浏览器

5. 浏览器按照 http 协议格式,对响应数据包进行解析,将响应数据显示到浏览器页面,为用户展示


4. 什么是url?

HTTP协议使用 url(Uniform Resource Locator,统一资源定位符)定位资源

格式:http://host[ ":" port ][abs_path]

示例:http://127.0.0.1:8080/index.html

  • http :表示要通过 http 协议定位网络资源
  • host :表示合法的 Internet Web 服务器或者 IP 地址
  • port:指定一个端口号,为空则使用缺省端口80
  • abs_path:指定请求资源的URI

URL(url) : URI(Uniform Resource Identifier,统一资源标识符)的子集,URL 在 URI 的基础上增加了定位能力 

URN:只是用来定义一个资源的名称,并不具备定位该资源的能力


5. HTTP报文

5.1 请求报文

浏览器通过URL发起一个请求时,会发送一个 http 请求报文给目标服务器,服务器会根据请求报文中携带的请求数据进行处理

5.2 响应报文

当服务器处理完请求后,会将响应数据放入 http 响应报文中返回给浏览器


6. HTTP请求方式

  • GET:获取资源

        用于使用给定的 URL 从给定服务器中检索信息,完成从指定资源中请求数据。只是检索数据,并不会对数据产生其他影响。

  • POST:提交数据增加资源

        用于将数据发送到服务器以创建增加资源。使用 post 方法,如果两个请求相同,后一个请求不会覆盖第一个请求,所以 post 用于增加资源。

  • HEAD:获取响应头

        与 GET 方法类似,但是不反悔响应报文内容主体部分,仅传输响应报头部分。主要用于确认 URL 的有效性以及资源更新的日期时间等。

  • PUT:修改资源

        用于修改资源,要求在请求报文的主体中包含数据内容,然后保存到请求 URL 指定位置。使用 put 方法,如果两个请求相同,后一个请求会覆盖第一个请求,所以 put 用于修改资源。

  • DELETE:删除资源

        用于删除指定的资源。

  • OPTIONS:查询支持的方法

        查询指定的 URL 能够支持的方法。会返回 Allow:GET,POST,HEAD,OPTIONS等请求方式内容。

-------------------------------------------------------------------------------------------------------------------------

GET 和 POST 的区别

  • GET 用于获取资源,POST 用于提交数据。
  • GET 和 POST 的请求报文格式不同。
  • GET 使用请求报文中的首部字段 URL 传递请求参数,POST 使用 Request Body 提交数据。
  • GET 是幂等且可缓存,POST 非幂等且不可缓存;

        [幂等]:意思是多次执行相同的操作,结果都是[相同]的。


7. HTTP头部字段

  • Host 字段:浏览器在发送请求时,用来指定服务器的域名;
  • Content-Length 字段:服务器在响应数据时,会通过 Content-Length 字段,表示本次响应数据的长度;
  • Connection 字段:Connection 字段用于浏览器要求服务器使用长连接,以便其他请求复用该连接;
  • Content-Type 字段:Content-Type 字段用于服务器响应时,告诉浏览器本次响应数据的内容类型;
  • Accept 字段:Accept 字段用于浏览器发送请求时,声明可以接受哪些响应数据格式;
  • Content-Encoding 字段:Content-Encoding  字段说明数据的压缩方法,表示服务器响应的数据使用的压缩格式;
  • Accept-Encoding 字段:客户端在请求时,用 Accept-Encoding 字段说明自己可以接受哪些压缩方法;

8. HTTP状态码

服务器返回的 响应报文 的第一行为状态行,包含了状态码以及描述信息,用来告诉客户端请求后的响应结果。

状态码代表具体含义常见状态码
1xx信息提示100、101
2xx成功,报文已经收到且被正确处理200、201、204
3xx重定向,资源位置发生变动,需要客户端重新发起请求301、302、304
4xx客户端错误,请求报文有误,服务器无法处理400、401、403、404、405
5xx 服务器错误,服务器在处理请求时内部发生了错误500、502、503、504

1xx 信息:属于提示信息

  • 100:客户端可以继续发送请求
  • 101:服务器已经理解并接受请求,正在切换协议

2xx 信息:服务器成功处理了客户端的请求

  • 200:请求成功
  • 201:已创建新资源
  • 204:请求成功,但没有返回任何内容
  • 206:请求成功,但响应返回的 body 数据不是资源的全部,而是其中的一部分

3xx 信息:客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源

  • 301:永久性重定向,请求的资源不存在,需改用新的 URL 再次访问
  • 302:临时性重定向,请求的资源还在,但暂时需要用另一个 URL 来访问
  • 304:客户端可以使用缓存的内容

4xx 信息:客户发送的报文有误,服务器无法处理

  • 400:请求无效
  • 401:未经授权
  • 403:权限不足
  • 404:请求的资源不存在
  • 405:请求方法不被允许

5xx 信息:客户端请求报文正确,但服务器处理时内部发生了错误,属于服务器端的错误码

  • 500:服务器内部错误
  • 502:网关错误
  • 503:服务器不可用
  • 504:网关超时

 9. 连接管理

长连接与短连接

HTTP 1.0 默认使用短连接,HTTP 1.1 默认使用长连接,也叫持久性连接。

  • 短连接:每次使用 HTTP 协议进行通信,都需要重新按照三次握手的方式建立一个独立的 TCP 连接,响应完毕后,通过四次挥手断开连接。循环往复,增加了通信的开销;
  • 长连接:只需要建立一次 TCP 连接就能进行多次 HTTP 通信,减少了 TCP 连接的重复建立和断开所造成的额外开销,减少了服务端的负载;

管线化连接

  • 通过长连接将多个 HTTP 请求整批提交,在传送过程中不需先等待服务端的回应。 

相关文章:

【计算机网络】什么是http?

​ 目录 前言 1. 什么是HTTP协议? 2. 为什么使用HTTP协议? 3. HTTP协议通信过程 4. 什么是url? 5. HTTP报文 5.1 请求报文 5.2 响应报文 6. HTTP请求方式 7. HTTP头部字段 8. HTTP状态码 9. 连接管理 长连接与短连接 管线化连接…...

【python开发】并发编程(上)

并发编程(上) 一、进程和线程(一)多线程(二)多进程(三)GIL锁 二、多线程开发(一)t.start()(二)t.join()(三)t.…...

用c语言实现扫雷游戏

文章目录 概要整体架构流程代码的实现小结 概要 学习了c语言后,我们可以通过c语言写一些小程序,然后我们这篇文章主要是,扫雷游戏的一步一步游戏。 整体架构流程 扫雷网页版 根据上面网页版的基础扫雷可以看出是一个99的格子,…...

LeetCode 2882.删去重复的行

DataFrame customers ------------------- | Column Name | Type | ------------------- | customer_id | int | | name | object | | email | object | ------------------- 在 DataFrame 中基于 email 列存在一些重复行。 编写一个解决方案,删除这些重复行&#…...

对OceanBase进行 sysbench 压测前,如何用 obdiag巡检

有一些用户想对 OceanBase 进行 sysbench 压测,并向我询问是否需要对数据库的各种参数进行调整。我想起有一个工具 obdiag ,具备对集群进行巡检的功能。因此,我正好借此机会试用一下这个工具。 obdiag 功能的比较丰富,详细情况可参…...

每天学习几道面试题|Kafka架构设计类

文章目录 1. Kafka 是如何保证高可用性和容错性的?2. Kafka 的存储机制是怎样的?它是如何处理大量数据的?3. Kafka 如何处理消费者的消费速率低于生产者的生产速率?4. Kafka 集群中的 Controller 是什么?它的作用是什么…...

.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 近年来,勒索病毒的威胁日益增加,其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点,以及如何恢复被其加密的数据文件,并提供预防措施&a…...

安卓性能优化面试题 11-15

11. 简述APK安装包瘦身方案 ?(1):剔 除掉冗余的代码与不必要的jar包;具体来讲的话,我们可以使用SDK集成的ProGuard混淆工具,它可以在编译时检查并删除未使用的类、字段、方法 和属性,它会遍历所有代码找到无用处的代码,所有那些不可达的代码都会在生成最终apk文件之前被…...

Python错题集-9PermissionError:[Errno 13] (权限错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\5-《Python数学建模算法与应用》程序和数据\02第2章 Python使用入门\ex2_38_1.py", line 9, in <module> fpd.ExcelWriter(data2_38_3.xlsx) #创建文件对象 File "D:…...

QT TCP通信介绍

QT是一个跨平台的C应用程序开发框架&#xff0c;它提供了一套完整的工具和库&#xff0c;用于开发各种类型的应用程序&#xff0c;包括图形用户界面(GUI)应用程序、命令行工具、网络应用程序等。QT提供了丰富的功能和类来简化网络通信的开发&#xff0c;其中包括TCP通信。 TCP…...

保姆级教学!微信小程序设计全攻略!

微信小程序开启了互联网软件的新使用模式。在各种微信小程序争相抢占流量的同时&#xff0c;如何设计微信小程序&#xff1f;让用户感到舒适是设计师在产品设计初期应该考虑的问题。那么如何做好微信小程序的设计呢&#xff1f;即时设计总结了以下设计指南&#xff0c;希望对准…...

日期差值的计算

1、枚举所有数值进行日期判断 时间复杂度是o(n)的&#xff0c;比较慢&#xff0c;单实例能凑合用&#xff0c;多实例的话时间复杂度有点高。 核心代码就是判断某个八位数能否表示一个日期。 static int[] month {0,31,28,31,30,31,30,31,31,30,31,30,31};static String a, b…...

为什么需要Occupancy?

1.能够得到3D的占用信息 在基于BEV (鸟瞰图) 的2D预测模型中&#xff0c;我们通常仅具有二维平面&#xff08;x和y坐标&#xff09;上的信息。这种方法对于很多应用场景来说已经足够&#xff0c;但它并不考虑物体在垂直方向&#xff08;z轴&#xff09;上的分布。这限制了模型的…...

SSA优化最近邻分类预测(matlab代码)

SSA-最近邻分类预测matlab代码 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&#xff0c;主要是受麻雀的觅食行为和反捕食行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8&#…...

nginx相关内容的安装

nginx的安装 安装依赖 yum install gcc gcc-c automake autoconf libtool make gd gd-devel libxslt-devel -y 安装lua与lua依赖 lua安装步骤如下: mkdir /www mkdir /www/server #选择你自己的目录即可,不需要跟我一致 cd /www/server tar -zxvf lua-5.4.3.tar.gz cd lua-5.4…...

基于SpringBoot和Echarts的全国地震可视化分析实战

目录 前言 一、后台数据服务设计 1、数据库查询 2、模型层对象设计 3、业务层和控制层设计 二、Echarts前端配置 1、地图的展示 2、次数排名统计 三、最终结果展示 1、地图展示 2、图表展示 总结 前言 在之前的博客中基于SpringBoot和PotsGIS的各省地震震发可视化分…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)

摘要&#xff1a;开发农作物害虫检测系统对于提高农业生产效率和作物产量具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个农作物害虫检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0…...

21 # 高级类型:条件类型

条件类型&#xff08;Conditional Types&#xff09;是一种高级的类型工具&#xff0c;它允许我们基于一个类型关系来选择另一个类型。条件类型通常使用条件表达式 T extends U ? X : Y 的形式&#xff0c;其中根据泛型类型 T 是否可以赋值给类型 U 来确定最终的类型是 X 还是…...

Java之List.steam().sorted(Comparator.comparing())排序异常解决方案

使用steam().sorted(Comparator.comparing())对List<T>集合里的String类型字段进行倒序排序&#xff0c;发现倒序失效。记录解决方案。 异常代码如下: customerVOList customerVOList.stream().sorted(Comparator.comparing(CustomerVOVO::getCustomerRate).reversed()…...

js判断对象是否有某个属性

前端判断后端接口是否返回某个字段的时候 <script>var obj { name: "John", age: 30 };console.log(obj.hasOwnProperty("name")); // 输出 trueconsole.log(obj.hasOwnProperty("email")); // 输出 falselet obj11 { name: "Joh…...

CleanMyMac X2024永久免费的强大的Mac清理工具

作为产品功能介绍专员&#xff0c;很高兴向您详细介绍CleanMyMac X这款强大的Mac清理工具。CleanMyMac X具有广泛的清理能力&#xff0c;支持多种文件类型的清理&#xff0c;让您的Mac始终保持最佳状态。 系统垃圾 CleanMyMac X能够深入系统内部&#xff0c;智能识别并清理各种…...

等保测评的知识

结合自己所学的知识和网络上的一些知识做个小总结。 目录 一、概念&#xff1a; 二、等级划分&#xff1a; 三、技术要求&#xff1a; 四、管理要求&#xff1a; 五、等保测评实施过程&#xff1a; 六、典型的网络架构&#xff1a; 一、概念&#xff1a; 全称为信息安全等级保…...

【算法】多路归并(鱼塘钓鱼)

有 N 个鱼塘排成一排&#xff0c;每个鱼塘中有一定数量的鱼&#xff0c;例如&#xff1a;N5 时&#xff0c;如下表&#xff1a; 鱼塘编号12345第1分钟能钓到的鱼的数量&#xff08;1..1000&#xff09;101420169每钓鱼1分钟钓鱼数的减少量&#xff08;1..100)24653当前鱼塘到下…...

unity3d Animal Controller的Animal组件中General基础部分理解

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…...

css背景从上到下颜色渐变、css背景从左到右颜色渐变、 css框线展示外阴影、css框线展示内阴影

1. css背景从上到下颜色渐变 body {background: linear-gradient(to bottom, #ff0000, #ffff00); /* 这里的#ff0000表示红色&#xff0c;#ffff00表示黄色 */ }2. css背景从左到右颜色渐变 要实现CSS背景从左到右的颜色渐变&#xff0c;可以使用linear-gradient函数。以下是一…...

Nacos学习笔记

Nacos官网 https://github.com/alibaba/nacos/releases https://www.bilibili.com/video/BV1q3411Z79z 1. Nacos介绍 Nacos是Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 在这个…...

微信小程序 nodejs+vue+uninapp学生在线选课作业管理系统

基于微信小程序的班级作业管理助手使用的是MySQL数据库&#xff0c;nodejs语言和IDEA以及微信开发者工具作为开发工具&#xff0c;这些技术和工具我在日常的作业中都经常的使用&#xff0c;并且因为对编程感兴趣&#xff0c;在闲暇时间也进行的进行编程的提高&#xff0c;所以在…...

trpc-go 博客系统

trpc-go 博客系统 使用go语言构建的全栈项目&#xff0c;充分利用了go的简洁性、高性能和并发处理能力。 系统采用了trpc-go框架和北极星进行分布式开发&#xff0c;展示了如何基于腾讯开源技术栈构建微服务架构&#xff0c;实现高效的服务通信和管理。 https://github.com/…...

【JAVA】Servlet开发

目录 HttpServlet HttpServletRequest HttpServletResponse 错误页面 设置网页自动刷新时间 构造重定向相应 js发起http请求 服务器端对js发起的http请求进行处理 前端获取后端数据&#xff0c;添加到当前页面的末尾&#xff0c;代码示例&#xff1a; 前后端交互&…...

k8s helm 删除 tiller

kuberneter 上面装了 helm 想卸载还并不是那么简单, 参考 stackoverflow 回复 kubectl get -n kube-system secrets,sa,clusterrolebinding -o name|grep tiller|xargs kubectl -n kube-system delete kubectl get all -n kube-system -l apphelm -o name|xargs kubectl dele…...

好视频下载软件/网站推广优化公司

函数调用中的意义不明确的参数&#xff08;Naked parameters &#xff09;可能会影响可读性&#xff0c;当参数名称的含义不明显时&#xff0c;请为参数添加 C 样式注释 (/* ... */) Bad // func printInfo(name string, isLocal, done bool)printInfo("foo", true…...

淘宝网站怎么做的好坏/建立网站的步骤

最近看到了去哪儿的一个添加自己旅行记录的栏目 里面中国地区用的百度地图 这是去哪儿的效果 实在很强大 我只调了他的地图块模仿了一下 下面是自己根据百度API 模仿去哪儿的 下面有下载的代码 去哪儿的这个栏目的数据好像是用百度自身地图搜索的结果数据 但是有些功能好像百度…...

怎么查寻一个网站做的竞价/站长工具ip地址

今天自己的电脑上发布一个asp.net到iis上时&#xff0c;出现了这个错误&#xff0c;baidu一下解决了&#xff0c;记录下来&#xff0c;以便以后在遇到时可以迅速解决。 开发工具&#xff1a;vs2010 windows&#xff1a;win7 iis&#xff1a;7&#xff08;window 7 自带的&#…...

网站建设任务清单/产品推广软文范文

cin>>n>>m;//输入被除数和除数int lenn.length();int ans0;for(int i0;i<len;i){ans(int)(((long long)ans*10n[i]-0)%m);}cout<<ans; 转载于:https://www.cnblogs.com/Fy1999/p/8976511.html...

有域名怎么建设网站/朝阳seo排名优化培训

我的独立域名博客~~ http://codingnow.cn...

网站制作青岛/营销推广的方法有哪些

效果图 归位&#xff08;back&#xff09; 表达式代码与注释 var s 1.70158; ///< 用于 "归位" 的超越量/// note 归位函数 function outBack(t, b, c, d) {if (s null)s 1.70158;return c * ((t t / d - 1) * t * ((s 1) * t s) 1) b; }/// note 实际调…...