【计算机网络】什么是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://xiahunao.cn/news/2871282.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于web的精品课程网站设计

基于web的精品课程网站设计 C#asp.netSqlServer 带论文 功能模块: 基于web的精品课程网站设计 C#asp.netSqlServer 学生功能模块 学生登录系统后,可以在留言板页面给老师进行留言,并且可以查看课程和题库 可以在首页进行考试并且可以修改…

从电影《沙丘》说起——对人工智能的思考

从《沙丘》开始说起 之前看《沙丘》电影,里面有一类角色叫门泰特,这类人大脑可以飞快地运算,在电影设定里是替换人工智能、机器运算的存在。男主保罗也是这类型的人,但他可能基因更强大,吸食了香料后,他的…

力扣111---二叉树的最小深度(简单题,Java,递归+非递归)

目录 题目描述: (递归)代码: (非递归、层次遍历)代码: 题目描述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

1、计划任务介绍

Windows计划任务介绍 1、含义: 简单点就是定时执行任务。 在许多场景下,我们定时执行一些任务。比如:定时拉取、备份文件,更新代码等等操作。 WinR打开运行框,输入:control schedtasks,就会…

大胆投资自己

> Keep Thinking 保持思考 1. 关于投资 首先需要做到 “ 精明 ” 的活着,如何做到精明呢? 所谓精明,也即清醒认识到自己当前所处的阶段,清楚知道下一步的应该朝哪一个方向努力!人生就是一场长跑, 我们…

如何订阅Midjourney

Midjourney介绍 Midjourney作为目前AI绘画领域效果卓越且备受青睐的工具,对于新用户而言,可能无法享受到免费试用的机会。因此,为了持续利用这款软件进行绘画创作,用户需要购买会员资格并开通订阅服务。那么,关于midj…

【Godot 4.2】常见几何图形、网格、刻度线点求取函数及原理总结

概述 本篇为ShapePoints静态函数库的补充和辅助文档。ShapePoints函数库是一个用于生成常见几何图形顶点数据(PackedVector2Array)的静态函数库。生成的数据可用于_draw和Line2D、Polygon2D等进行绘制和显示。因为不断地持续扩展,ShapePoint…

ping和telnet的区别

ping是ICMP协议,只包含控制信息没有端口,用于测试两个网络主机之间网络是否畅通 telnet是TCP协议,用于查看目标主机某个端口是否开发。 总结:ping是物理计算机间的网络互通检查,telnet是应用服务间的访问连通检查&am…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说,当然这块内容也比较简单,就是当我们有一段完整素材时,如下: 我在网上随便找的素材,当然我们平时在使用素材时要注意尊重他人的著作权,不管是字体图片还是别的,不然后面不小心侵…

滑动窗口最大值(leetcode hot100)

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输…

【白嫖】100%中奖阿里云实物键盘、游戏机、苹果15

1.扫描下方二维码或者直接点击链接跳转 [阿里云-通义灵码] (https://developer.aliyun.com/topic/lingma/activities/202403?taskCode14508&recordIdb0e97482e51e08068012bbb1eb743a15#/?utm_contentm_fission_1%20%20%E3%80%8C%E9%80%9A%E4%B9%89%E7%81%B5%E7%A0%81%20…

Linux:系统初始化,内核优化,性能优化(2)

优化ssh协议 Linux:ssh配置_ssh配置文件-CSDN博客https://blog.csdn.net/w14768855/article/details/131520745?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171068202516800197044705%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fb…

拼多多商品详情接口数据采集

拼多多商品详情接口数据采集是一个相对专业的任务,通常涉及到使用API接口或第三方采集工具等技术手段。以下是一些基本步骤和注意事项,供您参考: 请求示例,API接口接入Anzexi58 申请开发者账号:如果您打算使用API接口…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)中篇

onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) > boolean) 刷新或关闭场景下,在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点,才会触发此回调。 参数…

【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. BP神经网络2. 麻雀搜索算法3. SSA-BP神经网络模型的构建4. 部分代码展示5. 仿真结果展示 【可更换其他算法,获取资源请见文章第6节:资源获取】 1. BP神经网络 BP&…

【开源】SpringBoot框架开发就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

训练YOLOv8m时AMP显示v8n

在训练Yolov8模型时,使用AMP(Automatic Mixed Precision)可以加速训练过程并减少显存的使用。AMP是一种混合精度训练技术,它通过将模型参数的计算转换为低精度(如半精度)来提高训练速度,同时保持…

《LeetCode热题100》笔记题解思路技巧优化_Part_3

《LeetCode热题100》笔记&题解&思路&技巧&优化_Part_3 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题链表🟢1. 相交链表🟢2. 反转链表&…

第四章:数据操作Ⅰ 第十三节:与MySQL联动

我们可以使用MySQL数据库来保存R的数据,或者可以借助数据框的强大功能协助R进行数据处理 一、MySOL安装和测试 MYSQL安装教程:https://blog.csdn.net/m0_52559040/article/details/121843945 注意:在选择账户界面时,我们除了要设置…

JavaScript 中实现请求并发控制

文章目录 浏览器并发请求限制数(图)实现代码三方插件 假设有 30 个待办任务要执行,而我们希望限制同时执行的任务个数,即最多只有 3 个任务能同时执行。当正在执行任务列表 中的任何 1 个任务完成后,程序会自动从 待办…