HTTP协议详解
结合本人WEB安全中的学习经验,这个帖子主要是分享在Web安全基础中对HTTP协议以及HTTP协议的常见请求方式的梳理工作。
如有误解或不足的地方,请指正 万分感谢!
0x01 什么是HTTP?
HTTP协议默认端口:80
HTTP是超文本传输协议,HTTP协议是一种请求/响应协议
它是基于TCP协议之上的应用层协议,也是TCP协议的封装。
客户端和服务器之间通信时,发送的数据要遵守的规则,称为HTTP协议。
协议中的数据又称为报文。
HTTP协议是无状态的协议:不能保存信息,每次请求和响应都是相互独立的。
在网站中建立不同的传输连接时,都是占用一个TCP连接的(TCP/UDP端口数量1-65535),这样也就起到了降低网络冗余,提高网络响应速率的一个作用
0x02 什么是HTTPS?
HTTPS协议默认端口:443
HTTPS 是基于HTTP协议的安全的超文本传输协议,通过验证SSL证书对数据进行加密传输
HTTPS是用来弥补HTTP明文传输的缺陷,在端与端之间传输加密后的消息,保护传输数据的隐私性和完整性
0x03 HTTP的工作原理
1. 客户端向服务端请求建立TCP连接
2. 客户端向WEB服务器发送HTTP请求
3. WEB服务器接收到来自浏览器的HTTP请求,并响应请求,返回响应消息报文
4. 返回的内容为客户端请求的内容
(1) 浏览器可以基于HTTP协议向服务器请求字符流(文字内容)
(2) 字节流(图片、视频等信息内容)
5. 每次的请求与响应都是独立进行着的
6. 服务器响应完毕即会向客户端关闭TCP连接,并等待下一次请求
0x04 HTTP请求消息与响应消息详解
什么是请求消息?
- 请求消息通常指从客户端访问服务端的请求消息
- 请求消息包括:请求行、请求头、请求空行、请求体
什么是响应消息?
- 响应消息通常指服务端响应给客户端的请求访问的内容,即响应消息,也称之为响应报文
- 响应消息包括:响应行、响应头、响应空行、响应体
请求消息详解:
- 请求行: 包含(请求方式GET;POST、请求访问的url、协议以及版本号HTTP/1.1)
- 请求头: 通常是以键值对的形成存在
(1) HOST: 当前页面请求的域名或ip地址
(2) User-Agent: 浏览器向服务器表明浏览器的版本信息和操作系统信息
(3) Referer: 向服务器表明是从通过哪里去访问的
(4) Cookie: 浏览器保存的用户凭据信息 登陆状态
(5) Accept_language: 支持的语言
(6) Keep_alive: 保持连接状态 - 请求空行: 发送回车符或换行符,告诉服务器以下不再是请求头信息
- 请求体: 保存POST请求方法数据
请求消息报文图解:
响应消息详解:
- 响应行 协议以及版本号响应状态码
- 响应头 服务器响应给浏览器的东西 不同网站不同请求返回响应头不一样
- 响应空行 格式
- 响应体 响应的具体内容
响应消息报文图解:
常见响应状态码
1xx:提示信息
2xx:请求消息发送成功
3xx:重定向
- 302 重定向|页面跳转
- 304 访问页面缓存
4xx:客户端错误,客户端发送给的请求有语法错误
- 403 权限不允许
- 404 请求访问的资源不存在
- 405 请求方法不被允许
5xx:服务端错误 [500-504]
0x05 HTTP的常见请求方法
GET与POST
(1) GET 用于获取URL的传参,常用于获取信息、查询数据
(2) POST 可以向服务端发送修改请求,比如论坛上的回帖、在博客中评论时,会通过请求方法查询数据库数据获取数据,起到一个更新评论的作用。POST不仅可以发送修改请求,还可以像GET请求方法那样从URL中获取信息 接收传参
GET与POST的常见区别
(1) GET的参数在URL中,POST参数在请求体中
(2) GET只能传递字符流,POST可以传输字符流(文字文本)与字节流(媒体)两者皆可
(3) GET请求参数是有长度限制的,POST没有长度限制
0x06 GET与POST的请求报文区别
(1)请求行中的url,GET是能看到参数的,POST不行,因为POST的参数在请求体当中
(2)在请求头中,POST相比较GET请求方式,多出了
(3)Content-Length(内容长度) 虽然POST型不限制请求长度,但是也要告诉服务器要传多长数据
(4)Content-Type(内容类型) 因为POST型可以传输字符或字节,所以要告诉服务器自己传输的内容类型
不同请求方法图解对比
此致!敬礼!闻道有先后 小白鸹貔靠
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南