思维导图
http简介
定义:
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网应用层通信的核心协议,定义了客户端(如浏览器)与服务器之间的数据交互规则。
简介:
1.HTTP是应用层协议
2.HTTP是一个基于TCP通信协议传输来传递数据(HTML 文件, 图片文件, 查询结果等)
3.HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL主动向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求后,向客户端发送响应信息。
4.HTTP默认端口号为80,但是你也可以改为其他端口
http特点
特点
1.无状态性
协议不保存会话上下文,每个请求独立处理。需通过Cookie、Session或Token实现状态管理(如用户登录状态)。2.无连接(短连接)
默认每次请求独立建立TCP连接,完成即断开(HTTP/1.1通过Connection: keep-alive
支持持久连接,减少握手开销)注意:HTTP协议本身是无连接的,即每个请求和响应都是独立的。但是http是基于TCP协议的连接管理方式,想要与长连接和短连接用于优化HTTP请求和响应的传输效率。长连接是指在一个TCP连接上可以发送多个HTTP请求和响应,而不需要每次请求都建立和关闭一个新的TCP连接。短连接是指每个HTTP请求和响应都使用一个新的TCP连接
3.明文传输(HTTP)与加密传输(HTTPS)
HTTP:数据以明文传输,存在窃听风险。
HTTPS:基于TLS/SSL加密,保障数据隐私和完整性,默认端口443。
4.HTTP是媒体独立:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
解析:
由此可见HTTP 协议是以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用开号、密码等。
为了解决 HTTP 协议的这一缺陷,需要使用另一种协议:HTTPS 协议。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单来说就是 HTTP 的安全版。即在 HTTP 下加入 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS 和 HTTP 的区别主要为以下三点:
1.http 是超文本传输协议,信息是明文传输;https 协议是由 http + ssl 协议构建的可进行加密传输、身份认证的网络协议,信息是密文传输,比 http 协议安全。
2.https 协议需要到 ca 申请证书,一般免费证书很少,需要缴费
3.http 和 https 使用的默认端口也不一样,前者是 80,后者是 443
http协议格式
地址栏区分:
https ://www.example.com: 443 /path/page.html ?query=param #section
└─┬─┘ └──────┬──────┘ └┬┘ └─────┬─────┘ └───┬───┘ └──┬──┘
协议 主机 端口 路径 查询参数 锚点
1.请求数据格式
(这里最好结合着思维导图看)
客户端(网页)发送一个HTTP请求到服务器的请求消息包括以下格式:请求行、请求头部、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
(1).请求行
请求行是由请求方法字段、url字段、http协议版本字段3个部分组成。
- 请求方法
- GET:获取资源(幂等,可缓存)。
- POST:提交数据(非幂等,如表单提交)。
- PUT/DELETE:更新/删除资源(RESTful API常用)。
- OPTIONS:查询支持的方法(如CORS预检请求)。
- 状态码分类
- 1xx:信息响应(如101 Switching Protocols)。
- 2xx:成功(如200 OK、201 Created)。
- 3xx:重定向(如301永久重定向、304缓存未修改)。
- 4xx:客户端错误(如404未找到、403禁止访问)。
- 5xx:服务器错误(如500内部错误、503服务不可用)。
- 缓存机制
- 强缓存:通过
Cache-Control: max-age=3600
或Expires
控制本地缓存有效期。- 协商缓存:利用
Last-Modified
或ETag
校验资源是否更新,服务器返回304状态码避免重复传输。(2).请求头部
也被称作消息报头,请求头是由一些键值对组成,每行一对,关键字和值用英文冒号“:”分隔。允许客户端向服务器发送一些附加信息或者客户端自身的信息
(3).空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。也就是请求头结束的标志。
(4).请求体(请求数据)
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
2.响应数据格式
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
(1).状态行
位置:响应首行
格式:HTTP版本 状态码 状态短语
由三部分组成,HTTP协议的版本号、状态码、以及对状态码的文本描述。
例如:HTTP/1.1 200 OK 。(200表示请求已经成功)
(协议版本)(状态码)(CRLF)
状态码:
200 OK:请求成功
301 Moved Permanently:资源永久重定向
304 Not Modified:资源未修改(缓存有效)
400 Bad Request:客户端请求错误
401 Unauthorized:需要身份验证
403 Forbidden:禁止访问
404 Not Found:资源不存在
500 Internal Server Error:服务器内部错误
(2).消息报头
位置:状态行之后,空行之前
(3).空行
位置:报头结束后
格式:\r\n
(回车换行)
作用:分隔报头和正文的边界(4).响应正文
位置:空行之后
内容:服务器返回的实际数据
示例:
看完之后我们就能看出,HTTP协议就是客户端发送请求消息,服务器识别后对数据处理,返回给客户端,所以格式都是很相似的,都是分为四个部分。
客户端发送的请求数据,第一行就是请求行,空行前都是请求头部,空行后就是请求数据:
服务端返回的响应: