HTTP 协议简介
什么是 HTTP
HTTP(超文本传输协议)是一种客户端到服务器端的请求响应协议,它通常运行在 TCP 之上。这个协议定义了客户端可以发送什么样的消息给服务器以及服务器返回的响应消息。HTTP 请求和响应的头部信息是以 ASCII 格式给出的,而消息内容则具有类似 MIME 的格式。HTTP 是分布式、协作式和超媒体信息系统的应用层协议,是万维网(WWW)数据通信的基础。
设计 HTTP 的初衷是为了发布和接受 html 页面
HTTP 工作流程
HTTP 基于客户端/服务器模式,面向连接的工作方式如下:
客户端与服务器建立连接。
客户端向服务器发送请求。
服务器接受请求,并返回相应的文件作为响应。
客户端与服务器关闭连接。
HTTP 连接是一次性的,意味着每次连接只处理一个请求,服务器处理完客户的请求并收到客户的应答后,即断开连接。这种方式可以节省传输时间,提高服务器的执行效率。HTTP 是无状态协议,服务器不保留与客户交易时的任何状态,这减轻了服务器的记忆负担,保持了快速的响应速度。
什么是 B/S、C/S 架构、
C/S(Client/Server)客户机和服务器架构
B/S(Brower/Server)浏览器和服务器架构

在 HTTP0.9 和 1.0 中,TCP 连线在每一次请求/回应对之后关闭。
在 HTTP1.1 中,引入了保持连线的机制,一个连接可以重复在多个请求/回应使用。
持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新运行 TCP 握手程序
统一资源定位符(URL)
天我将和大家说的 URL,实际上就是我们在互联网生活中非常常见的一个东西。URL 是 web 页的地址,这种地址会在浏览器顶部附近的 Location 或者 URL 框内显示出来。鼠标指针移至某个超链接上方时, URL 也会在屏幕的底部显示出来。
URL 是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎处理它。

统一资源标志符(URI)
URI:(全称:Uniform Resource Identifier)统一资源标识符,它是一个字符串 用来标示抽象或物理资源。
Web 上可用的每种资源( HTML 文档、图像、音频、视频片段、程序等)都由一个通用资源标识符(Uniform Resource Identifier, 简称”URI”)进行定位。
URI 的格式也由三部分组成:
访问资源的命名机制。
存放资源的主机名。
资源自身的名称,由路径表示。
URI、URL 和 URN 的联系
URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
客户端请求消息
HTTP 请求报文:web 客户端向服务器发送的请求
HTTP 请求由四个部分组成:
请求行
请求头部
空行
请求数据
请求行:
请求行:Method Request-URI HTTP-Version CRLF
Method: 表示请求方法;
Request-URI:是一个统一资源标识符;
HTTP-Version:表示请求的 HTTP 协议版本;
CRLF:表示回车和换行;
请求方法:
GET:请求从服务器获取指定资源。这是最常用的方法,用于访问页面。
POST:请求服务器接受并处理请求体中的数据,通常用于表单提交。
PUT:请求服务器存储一个资源,并用请求体中的内容替换目标资源的所有内容。
DELETE:请求服务器删除指定的资源。
HEAD:与 GET 类似,但不获取资源的内容,只获取响应头信息。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求、
CONNECT:保留将来使用,HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
PATCH:用于将局部修改应用到资源.(由 RFC5789 指定的方法)
请求头部字段(Request Header Fields)
Header :Header_Value CRLF
允许客户端传递关于自身的信息和希望的响应形式。
在 HTTP/1.1 协议中,所有的请求头,除 Host 外,都是可选的。
空行:表示请求头结束,请求正文(请求体)开始
请求数据:GET方法:提交数据时,数据参数会做为URL的一部分放在文件路径后面发送给服务器,被称为查询字符串
POST方法:发送的数据在请求中
服务器响应消息
HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也由四个部分组成,分别是:
状态行
消息报头
空行
响应正文