网络基础知识02-HTTP协议
参考书:《图解HTTP协议》
HTTP协议
http是不保存状态的协议,要通过Cookie进行状态管理。
报文结构

请求行:请求方式 URI 协议版本
响应行: 协议版本 状态码 状态码的原因短句
报文传输,提升传输速率
1.报文主体压缩
- 常见的内容编码格式:
- gzip
- compress
- defalte
- identity
2.报文主题切割
将实体主体的功能进行切割为分块
HTTP协议响应码
|类别|原因短语|
--|--|--
1XX|信息性状态码|接收到请求正在处理
2XX|成功状态码|请求正常处理完毕
3XX|重定向状态码|需要进行附加操作以完成请求
4XX|客户端错误状态码|服务器无法处理请求
5XX|服务器错误状态码|服务器处理请求出错
响应的几种状态码
2XX
-
204 请求处理成功,但是没有资源返回
-
206 表示多重范围请求,例如图片总共7000字节,分成两部分请求1-4000,4000-7000
#首部字段
Range: bytes=1~4000
3XX
- 301 永久重定向。
# 漏了最后的斜杠
http://example.com/sample
-
302 临时重定向
-
303 明确返回客户端应该采用那种请求方式
4XX 客户端请求
-
400 请求报文中存在语法错误。
-
401 表示需要认证
-
403 服务器不允许访问,一般是请求方式不同造成的,是否POST请求用成了GET
-
404 没找到资源
5XX 服务器错误
-
500 系统出现bug
-
503 表示服务器暂时处于超负载或者进行停机维护中。
HTTP 通用首部字段
- Cach-Controller
-- 缓存请求指令
no-cache 指令的目的是为了防止从缓存中返回过期的资源,表示不会接收返回的缓存资源。
max-age 表示资源保存为缓存的最长时间
-- 缓存响应指令
# 缓存指令
public : 表示其他用户可利用缓存
private :表示响应特定的用户作为对象
-
Date 表明创建HTTP报文的日期和时间
-
Transfer-Encoding 表示传输编码方式
-
via 为了追踪客户端与服务器之间的请求和响应报文的传输路径。
-
Warning 告知用户一些与缓存相关的的问题警告。
-
Upgrade 表示指定完全不同的通信协议
请求和响应首部字段
请求首部字段
-
Accept 表示接收的资源
-
图片 :image/jpeg;image.gif
-
文本文件: text/html;text/plain
-
视频文件: video/qicktime
-
应用程序使用的二进制文件 application/octet-stream,application/zip
-
Accept:tex/html;q=0.3,text/html
-
Accept-Charset 通知服务器用户代理的字符集及字符集的相对优先顺序。q表示权重
-
Accept-Encoding 表示用户代理支持的内容编码,gzip,defalte等
-
Accept-Language 服务器代理处理的语言集
-
Authorization 用户代理的认证信息
-
From 用来告知服务器代理的用户的电子邮件地址
-
Host 请求资源所在的互联网主机名和端口号
-
Max-Forwards 表示经过的请求转发
-
Referer 请求URI是从那个Web页面发起的。
- 一般伪跨站请求就是判断这个字段,是否与应该请求的URI是否一直.
请求首部字段
-
Accept-Range 告知客户端服务器能处理的范围请求
-
Location 用域响应接收方请求URI位置不同的资源。 一般是重定向的URI
实体首部字段
包含请求保温盒响应报文实体部分所使用的首部。
- Allow 通知客户端支持的HTTP方法
Allow: Get , HEAD
- Content-Encoding 告诉客户端,服务器对实体的主题部分选择的内部编码方式
Content-Encoding: gzip
- Content-Length 实体部分的大小
Content-Length: 15000
-
Content-Type 表示实体对象的媒体类型
-
Expires 资源失效日期
-
Last-Modified 指明资源最终修改的时间
-
Cookie
字段名称 | 说明 | 首部类型 |
---|---|---|
Set-Cookie | 开始状态管理所使用的Cookie信息 | 响应首部字段 |
Cookie | 服务器接收的Cookie信息 | 请求首部字段 |
Set-Cookie: name=value;secure// secure限制Web页面仅在HTTPS安全连接时,才可以发送Cookie
Set-Cookie: name=value;HttpOnly 防止跨站脚本攻击XSS
Cookie: status=enable
HTTPS
HTTP的缺点
-
通信使用明文,内容可能被窃听
- TCP/IP 是可能被窃听的网络
-
不验证通信放身份,可能遭遇伪装
- 任何人都能发起请求,造成海量请求的DOS(Denies of Service)攻击。
-
无法证明报名的完整性,可能被篡改
HTTPS = HTTP + 加密 + 认证 + 完整性保护
-
HTTPS 并不是一种新的协议
-
HTTP 是 直接和TCP进行通信的
-
HTTPS 是 HTTP 通过SSL (Secure Socket Layer) 和 TLS (Transport Layer Security) 协议代替和TCP进行通信。
-
-
SSL 协议采用公开密钥加密 的方式
-
使用两把密钥进行加密,一把私钥,一把公钥
-
相对HTTP,HTTPS的速度比较慢。SSL通信比较慢, 并且会销号大量的CPU和内存;
-
-
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制
- 公开密钥需要认证,

- HTTPS 的安全通信机制

常见的WEB攻击技术及漏洞
WEB攻击技术
-
跨站脚本攻击
非法的标签或者javascript脚本进行攻击。是预先设计好的。
例如:
# 原始的表单
<btn click="login()" >
# 改变点击的事件
<btn click="login(),other()" >
<script>
other(){
//做一些其他的操作,获取登录信息
var username = document.getElementById('username');
var password = document.getElementById('password');
}
</script>
# 获取页面信息
<script src="......"/>
<script>
查询账户的钱
或者
获取cookie数据
var content = escape(document.cookie);
</script>
- SQL注入攻击
# 正常的查询SQL
select * from order where username='zhangsan' and flag = 1
#传入错误参数 zhangsan' --
select * from order where username='zhangsan'--' and flag = 1
SQL语句的-- 表示注解的意思
-
HTTP首部注入攻击:向首部主体添加内容
-
重置Location字段,让访问进行重定向
-
修改cookie数据
-
响应截断的方式进行攻击
-
# 对响应进行截断
%0D%0A%0D%0A是两个换行的分隔符号,
对响应数据进行修改Set-Cookie=123;%0D%0A%0D%0A<html><a>付款连接</a></html>
- 文件遍历攻击
漏洞
- 会话劫持
- 会话固定攻击
- 跨站点伪造请求
-
密码破解
-
通过网络试错
- 穷举法
- 字典攻法
-
侵入系统获取加密算法
-
-
DOS 攻击,海量访问攻击。会让服务器瘫痪
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏