HTTP协议:网络通信的基石

news2025/1/15 19:48:48

一、引言

HTTP(HyperText Transfer Protocol),即超文本传输协议,是当今互联网世界中最为重要的协议之一。它是客户端和服务器之间进行通信的规则和标准,使得我们能够在浏览器中浏览网页、下载文件、提交表单等各种操作。

HTTP协议--超文本传输协议,底层采用TCP传输,视频、音频、图片、文字等都会被看作字节流传输,这种将各种类型的数据都转化为字节流的方式具有很多优势。例如,它简化了数据传输的过程,使得服务器和客户端能够以一种通用的格式来处理和交换信息。

二、HTTP 工作原理

HTTP 基于客户端-服务器模型工作。客户端(通常是浏览器)向服务器发送一个请求,请求中包含了要访问的资源的路径、使用的方法(如 GET、POST、PUT 等)以及其他相关的信息。服务器接收到请求后,根据请求的内容进行处理,并返回一个响应给客户端。响应中包含了请求的资源、状态码(如 200 表示成功,404 表示未找到等)以及其他相关的头部信息。

例如,当我们在浏览器中输入一个网址时,浏览器会向服务器发送一个 GET 请求,请求获取该网址对应的网页资源。服务器接收到请求后,如果资源存在且可以访问,就会返回一个包含网页内容的响应,浏览器再将其渲染展示给我们。

HTTP报文格式:

HTTP 报文分为请求报文和响应报文两种类型,它们都有着特定的格式。

请求报文格式

  1. 请求行:包括请求方法(如 GET、POST、PUT 等)、请求的 URL 和 HTTP 版本。例如:GET /example.html HTTP/1.1 。
  2. 请求头部:由一系列的键值对组成,用于提供关于请求的附加信息,如 User-Agent 表示客户端的类型,Content-Type 表示请求体的数据类型等。
  3. 空行:用于分隔请求头部和请求体。
  4. 请求体(内容):并非所有请求都有,通常在 POST 等方法中用于携带数据,如表单数据。

响应报文格式

  1. 状态行:包含 HTTP 版本、状态码(如 200 表示成功,404 表示未找到等)和状态描述。例如:HTTP/1.1 200 OK 。
  2. 响应头部:与请求头部类似,包含各种关于响应的信息。
  3. 空行:分隔响应头部和响应体。
  4. 响应体(内容):承载服务器返回的具体数据,比如 HTML 页面、JSON 数据等。

例如,当您在浏览器中输入一个网址并请求访问时,浏览器会向服务器发送一个请求报文。服务器接收到请求后,会根据请求的内容进行处理,并返回一个响应报文,其中包含您请求的网页内容或相关的错误信息等。

再比如,当您通过表单提交数据到服务器时,请求报文中的请求体就会包含您填写的表单数据,服务器处理后在响应报文中返回处理结果。


在网络通信中,HTTP内置了序列化和反序列化的工作,以行为分割符就可以把一个报文内的不同字段分割开来。

下面就是一次HTTP具体的请求和响应内容:

URL:

平时我们俗称的 "网址" 其实就是说的 URL

URL的编解码:

域名后从斜杠开始的,就是要访问的服务器资源,/是web根目录,直到结尾或问号,如果有问号,说明这次向服务器发起的请求需要传参,比如登录、搜索等;参数之间通过&分割。

那么像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义. 转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

如图,"+" 被转义成了 "%2B"

三、HTTP 请求方法

最常用的就是GET和POST,他们都可以传参,GET是通过URL中?携带的参数,所以能传递的参数有限,而POST是通过正文content传参,理论上是无限的;GET的私密性较差,POST的私密性较好,但其实他们都不安全。

四、HTTP 状态码

状态码是服务器返回给客户端的一个数字代码,用于表示请求的处理结果。常见的状态码有:

  1. 200 OK:表示请求成功,服务器成功返回了请求的资源。
  2. 404 Not Found:表示服务器未找到请求的资源。
  3. 500 Internal Server Error:表示服务器内部错误,无法完成请求的处理。

五、HTTP 头部信息

头部信息包含了关于请求和响应的各种元数据,如:

Content-Type:指定资源的类型,如 text/html 表示 HTML 文档。

User-Agent:客户端的信息,如浏览器类型和版本。
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

六、HTTP 与 HTTPS 的区别

HTTP 与 HTTPS 的区别

HTTP(超文本传输协议)和 HTTPS(安全超文本传输协议)在以下几个方面存在明显区别:

  1. 安全性

    • HTTPS 通过 SSL/TLS 协议对数据进行加密传输,确保数据在传输过程中的保密性和完整性,防止数据被窃取或篡改。而 HTTP 数据以明文形式传输,安全性较低。
    • 例如,在进行在线支付等涉及敏感信息的操作时,使用 HTTPS 能有效保护信用卡号等重要信息;而使用 HTTP 则可能导致这些信息被黑客截取。
  2. 端口

    • HTTP 通常使用 80 端口,而 HTTPS 使用 443 端口。
  3. 证书

    • HTTPS 需要服务器配置有效的 SSL 证书来验证服务器的身份。如果证书无效或不匹配,浏览器会发出警告。HTTP 则不需要证书。
    • 比如,知名的电商网站会使用经过权威机构认证的证书,让用户确信他们正在与真实可靠的服务器进行通信。
  4. 性能

    • 由于加密和解密的过程,HTTPS 相对 HTTP 会有一定的性能开销,但随着技术的进步,这种影响已经逐渐减小。
  5. 成本

    • 部署和维护 HTTPS 证书需要一定的成本,包括购买证书、服务器配置等。而 HTTP 则没有这些额外成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968288.html

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

相关文章

AT32F403A/421 SVPWM驱动无刷电机开环速度测试

AT32F403A/421 SVPWM驱动无刷电机开环速度测试 📌相关篇《HAL STM32F4 ARM DSP库跑SVPWM开环速度测试》 ✨本测试工程基于上面的运行例程移植而来。主要用来测试驱动无刷电机性能方面的差异。 🔖工程基于AT32_Work_Bench创建。 🔰AT32F403A和…

卷积神经网络随记

1.问题描述:一般而言,几个小滤波器卷积层的组合比一个大滤波器卷积层要好,比如层层堆叠了3个3x3的卷积层,中间含有非线性激活层,在这种排列下面,第一个卷积层中每个神经元对输入数据的感受野是3x3&#xff…

Verilog语言和C语言的本质不同点是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 在c语言中,如果你…

7.Redis的Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于HashMap结构。 问题 String结构是将对象序列化为json字符串后存储,当需要修改对象某个字段是不是很方便。 key value…

【计算机遥感方向】SCI期刊推荐!水刊、顶刊齐聚在此,速投!

本期将为您带来五本计算机SCI 妥妥毕业神刊! IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING International Journal of Applied Earth Observation and Geoinformation INTERNATIONAL JOURNAL OF REMOTE SENSING Geocarto International RADIO SCIEN…

蔚来智驾的大模型之路:自研芯片 + 世界模型 + 群体智能

作者 |德新 编辑 |王博 7月27日上周末,蔚来举办第二届NIO IN。 李斌说,2023年的第一届NIO IN像是一个大纲,第一次对外完整展示了蔚来布局的12大技术领域。 而这届,更像第一个交付的章节。它重点展示了5项阶段性的进展&#xff…

智能电池管理,soc、soh、comsol锂电池仿真

锂离子电池,作为能源转型与电动车市场崛起的基石,正迎来研发与应用的飞跃。面对繁杂设计参数与实验盲点,电池仿真技术,尤以COMSOL为代表的多物理场仿真,精准解析电池内部机理,从微观行为到宏观性能&#xf…

LoRA:大模型的轻量级高效微调方法

文章目录 1. 模型微调的两种方式2. LoRA 实现 LoRA是一种轻量化且效果非常突出的大模型微调方法,与使用Adam微调的GPT-3 175B相比,LoRA可以将可训练参数的数量减少10000倍,并将GPU内存需求减少3倍。 paper:LoRA: Low-Rank Adapta…

二维码门楼牌管理应用平台建设:流程优化与全面考量

文章目录 前言一、工作流程优化:移动端采集与实时更新二、数据完整性与准确性保障三、效率提升与成本节约四、扩展性与未来发展五、数据安全与隐私保护六、用户培训与技术支持 前言 随着智慧城市建设的不断深入,二维码门楼牌管理应用平台作为城市管理的…

电脑浏览器缓存怎么清除 Mac电脑如何清理浏览器缓存数据 macbookpro浏览器怎么清理

浏览器已经成为我们日常生活中不可或缺的工具。然而,随着时间的推移,浏览器缓存的积累可能会逐渐影响我们的上网体验,导致网页加载速度变慢、浏览器运行卡顿等问题。因此,定期清理浏览器缓存变得尤为重要。那么Mac怎么清除浏览器缓…

Springboot学习-day16

Springboot学习-day16 Springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整…

layui+jsp框架下实现对pdf或图片预览功能

功能 对上传的文件实现预览功能&#xff0c;文件类型为图片或pdf。 效果展示 实现 引入 jQuery&#xff1a; <script src"https://code.jquery.com/jquery-3.5.1.min.js"></script>引入 Bootstrap 的 CSS 和 JavaScript&#xff1a; <link href&quo…

Java面试必看!知己知彼才能百战百胜,如何做好面试前的准备?

随着 Java 这个赛道的不断内卷&#xff0c;这两年&#xff0c;Java 程序员的面试&#xff0c;从原来的常规八股文&#xff08;有 标准答案&#xff09;到现在&#xff0c;以项目、场景问题、技术深度思考为主&#xff0c;逐步转变成没有标准答案&#xff0c; 需要大家基于自己的…

【大厂笔试】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树

检查两棵树是否相同 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 思路解透 两个根节点一个为空一个不为空的话&#xff0c;这两棵树就一定不一样了若两个跟节点都为空&#xff0c;则这两棵树一样当两个节点都不为空时&#xff1a; 若两个根节点的值不相同&#xff…

【时时三省】(C语言基础)函数的嵌套调用和链式访问

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 嵌套调用 每一个函数都只能在大括号的外面独立存在 不能在一个函数的里面还有一个函数 这样是不行的 函数是不能嵌套定义的 但是函数可以嵌套调用 比如在外面建立函数1&函数 然后在mai…

小区房布置超五类网线,怎么网络只有100Mbps?

前言 最近有粉丝找到小白&#xff0c;说家里的网络怎么一直都是100Mbps&#xff0c;宽带明明是1000Mbps的&#xff0c;只用了十分之一。 一开始小白以为是家里的网络使用的是两对双绞线的那种网线&#xff08;一共四芯&#xff09;。 随即她说水晶头接的都是8根&#xff0c;…

JSP分页写法

一、写界面框架&#xff1a; <html> <head><title>学生管理系统</title><style>body { font-family: 微软雅黑; background-color: #e0f7fa; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; margin-top…

log4j2漏洞练习

log4j2 是Apache的一个java日志框架&#xff0c;我们借助它进行日志相关操作管理&#xff0c;然而在2021年末log4j2爆出了远程代码执行漏洞&#xff0c;属于严重等级的漏洞。apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程&#xff0c;受影响的版本…

C++·哈希

1. unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到logN。后来在C11中STL又提供了4个unordered系列的关联式容器&#xff0c;这四个容器与红黑树结构的使用方法类似&#xff0c;但是底层结构不同&…

【C++】类和对象——Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C &#x1f680;本系列文章为个人学习笔记…