HTTP协议
HTTP协议
-
网络通信分层
-
-
一个http请求的分层解析流程
-
![image]()
-
![image]()
- 当用户访问一个网站时,首先输入访问的 URL,先通过 DNS 进行域名解析,将域名解析成对应的 IP 地址
- 经过解析之后,浏览器会发起一个 TCP 的连接请求
- 服务器接受请求后,通过三次握手建立连接
- 客户端在确认建立连接成功后,向服务端发送 HTTP 请求格式的数据包
- 服务器端解析 HTTP 数据包,执行用户的这次请求并生成一个 HTTP 响应格式的数据包,发送给客户端
- 浏览器在收到服务器端的数据包之后再进行解析,再通过 HTML 格式呈现给用户
- 客户端再通过四次握手释放连接
-
-
基础介绍
-
定义
-
HTTP是一种无状态的、基于请求-响应模式的协议,最初设计用于传输超文本(如HTML文档),现在已支持任意类型的数据传输。
-
-
特点
-
-
-
- 无连接:早期版本每次请求建立新连接,HTTP/1.1支持持久连接
- 无状态:服务器不记录客户端状态信息
- 媒体独立:可传输任意类型数据
- 支持C/S架构:客户端-服务器模型
-
-
-
报文格式
-
请求报文和相应报文基本相同,包括
- 起始行:描述请求和相应的基本信息
- 头部字段集合:使用key_value形式详细的说明报文
-
通用头部字段
-
Cache-Control:缓存控制
-
Connection:连接管理
-
Date:消息创建时间
-
-
请求头部字段
-
Accept:可接受的媒体类型
-
Authorization:认证信息
-
User-Agent:客户端信息
-
-
响应头部字段
-
Server:服务器信息
-
Set-Cookie:设置Cookie
-
Location:重定向目标
-
-
- 消息正文:实际传输的消息,纯文本、图片、视频等二进制
-
![image]()
-
请求报文格式
-
![image]()
- 组成部分:请求行 请求头 请求体
- 请求格式
-
请求方法
- GET:获取资源
- POST:提交数据
- PUT:更新完整资源
- DELETE:删除资源
- PATCH:部分更新资源
- HEAD:获取头部信息
- OPTIONS:查询支持的方法
- 请求目标
- 版本号
-
-
-
相应报文格式
-
版本号:HTTP协议版本
-
状态码:一个三位数,表示处理结果
-
状态码范围
-
1xx:信息性状态码
-
2xx:成功状态码
-
3xx:重定向状态码
-
4xx:客户端错误状态码
-
5xx:服务器错误状态码
-
-
常用状态码
-
200 OK:请求成功
-
301 Moved Permanently:永久重定向
-
400 Bad Request:错误请求
-
404 Not Found:资源未找到
-
500 Internal Server Error:服务器内部错误
-
-
-
原因:状态码的补充
-
-
-
-
-
HTTP版本演进
- HTTP/0.9
- 简单协议,只支持GET方法
- 无头部字段,无状态码
- HTTP/1.0
- 引入方法、状态码、头部字段
- 每次请求建立新连接
- HTTP/1.1(当前主流)
- 持久连接
- 管道化
- 分块传输编码
- 缓存优化
- HTTP/2
- 二进制分帧
- 多路复用
- 头部压缩
- 服务器推送
- HTTP/3
- 基于QUIC协议(UDP)
- 改进连接建立
- 更好的移动网络支持
- HTTP/0.9
-
-
-
Cookie和Session
- Cookie机制
- 服务器通过Set-Cookie头部设置
- 客户端自动在请求中携带Cookie
- 用于状态保持
- Session机制
- 服务器端存储用户状态
- 通过Session ID标识
- Cookie机制
-
-
关于URL
-
URL 概述
-
URL(Uniform Resource Locator),即 统一资源定位器,是因特网的万维网服务程序上用于指定信息位置的表示方法。
-
- URL组成
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。也可认为由4部分组成:协议、主机、端口、路径。
-
-
-
http://host[:port]/[a_path] http://IP(主机名/域名):端口/访问的资源路径 http 表示要通过 HTTP 协议来定位网络资源; host 表示合法的 Internet 主机域名或者IP地址; port 指定一个端口号,端口号为空则使用缺省端口 80; a_path 指定请求资源的 URl;如果 URL 中没有给出 a_path,那么当它作为请求 URl 时,必须以 “/” 的形式给出,通常这个工作浏览器自动帮我们完成。
-
-






浙公网安备 33010602011771号