HTTP协议— 基于 TCP 的请求-响应协议 相关交互过程详细介绍

本文详细介绍了HTTP协议的工作流程,包括HTTP请求和响应的格式,分析了请求行、请求头、请求正文以及响应状态码等内容。重点讲解了GET和POST方法的区别,探讨了登录功能为何通常使用POST,还阐述了Cookie和Session在会话管理中的作用及其区别。此外,还提及了常见的HTTP状态码及其含义。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

HTTP 叫做:超文本传输协议(Hyper Text TransferProtocol,HTTP)是一个简单的请求-响应协议,它通常运行在 TCP/IP 五层协议栈的应用层。是一种非常广泛的应用层协议(客户端和服务器建立连接在应用层)。

1. HTTP 工作过程

如果用户操作作为一个客户端,使用浏览器(网络交互),输入一个“网址”,就会触发和对应的服务器的一次交互过程,这里也就是 HTTP请求,服务器收到了这个请求,需要返回给客户端一个结果(你输入了啥,想搜索什么关键字),经过计算处理,再通过HTTP协议交互,就会返回一个 HTTP响应,浏览器页面就会显示出你想要的结果。

在这里插入图片描述

1.1 HTTP 协议格式

HTTP 是⼀个文本格式的协议. 可以通过 浏览器 “开发者工具”(F12 / Fn+F12), 或者 Fiddler抓包工具 分析 HTTP 请求/响应的细节。
在这里插入图片描述

在这里插入图片描述
这里我使用的 Fiddler 工具相当于是一个“代理”,用来展示 客户端(浏览器前端) 和 服务器(浏览器后端) 交互的数据细节。

浏览器访问 baidu.com 时, 就会把 HTTP 请求先发给 Fiddler, Fiddler 再把请求转发给 baidu 的服务器. 当 baidu 服务器返回数据时, Fiddler 拿到返回数据, 再把数据交给浏览器.

因此 Fiddler 对于浏览器和 baidu 服务器之间交互的数据细节, 都是非常清楚的.

HTTP 是前后端交互的基石

1.1.1 分析一个HTTP请求

在这里插入图片描述
请求分为 4 个部分:

  1. 请求行(首行),包含三个部分
    ① HTTP 的方法,方法就是这个请求是什么类型的,一般有:GET/POST
    ② URL 请求地址,描述了要访问的网络上的资源是在哪
    ③ 请求的 HTTP 版本号
  2. 请求头(header),包含了很多行
    每一行都是一个键值对,键和值之间用":空格"来分割。
  3. 空行,相当于请求头结束的标记
    空行的作用也是为了分隔第二部分(请求头)和第三部分(请求正文)。
  4. 请求正文(body),可以有也可以没有

1.1.2 分析一个HTTP响应

在这里插入图片描述
响应分为 4 个部分:

  1. 首行,包含三个部分
    ① HTTP 版本号
    ② 状态码,描述了这个相应是一个表示"成功"还是"失败"。不同的状态码,描述了失败的原因
    ③ 状态码的描述,通过一个/一组简单的单词,来描述当前状态码的含义
  2. 响应头(header),包含了很多行
    每一行都是一个键值对,键和值之间用":空格"来分割。
  3. 空行,相当于响应头结束的标记
  4. 响应正文(body)
    相应正文的可能有各种不同的格式,内容就是服务器返回给客户端的具体数据。

1.1.3 协议格式图解

在这里插入图片描述
为什么 HTTP 报文中要存在 “空行”?

  • 因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空行就相当于是 “报头的结束标记”, 或者是 “报头和正文之间的分隔符”.
  • HTTP 在传输层依赖 TCP 协议, TCP 是面向字节流的. 如果没有这个空行, 就会出现 “粘包问题”(数据传输没有结束标示就会出现的一种数据混乱现象)

2. HTTP请求详细解释

2.1 请求地址 URL

URL 其实就是我们一般称作的“网址”,它的全称是:(Uniform Resource Locator 统一资源定位符)。

为什么可以通过互联网进行信息交互,其他主机上的信息为什么可以通过另外的主机获取到? 其实这就跟我们本地文件的原理一样,我们自己电脑上的每一个文件们都有他独有的保存地址,我们通过这个本机地址可以访问到电脑上的所有文件。

那么不难想象,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

下面我们来分析一个具体的 URL :

https://v.baidu.vip/personInf/student?userId=10000&classId=100
  • https : 协议方案名, 描述了当前这个 URL 是给那个协议来使用的
  • user:pass : 登陆信息.,现在的网站进行身份认证一般不再通过 URL 进行了.(不安全) 一般都会省略。
  • v.baidu.vip : 服务器地址,描述当前要访问的主机的地址。此处是一个 “域名”, 域名会通过 DNS 系统解析成一个具体的 IP 地址.
  • 端口号(0-65535)<

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值