HTTP协议介绍
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(例如 HTML)的应用层协议。它是构建在TCP协议之上的,基于客户端-服务器模型,通过请求-响应方式进行通信。 HTTP协议定义了客户端和服务器之间交流的规则和格式。它使用统一资源标识符(URI)来标识要访问的资源,并使用请求方法(例如 GET,POST,PUT,DELETE等)来描述对资源的操作。
HTTP协议1.0 1.1 2.0区别
- HTTP1.0: 服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)
- HTTP1.1: KeepAlived长连接避免了连接建立和释放的开销;通过Content-Length来判断当前请求数据是否已 经全部接受(有状态)
- HTTP2.0: 引入二进制数据帧和流的概念,其中帧对数据进行顺序标识;因为有了序列,服务器可以并行的传输数据。
http1.0和http1.1的主要区别如下:
- 缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match)
- 网络连接的优化:1.1支持断点续传
- 错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态
- Host头处理:支持Host头域,不在以IP为请求方标志
- 长连接:减少了建立和关闭连接的消耗和延迟。
http1.1和http2.0的主要区别:
- 新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式
- 多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请 求)
- header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的 hearder大小
- 服务端推送:同google的SPDUY(1.0的一种升级)一样
HTTP与HTTPS之间的区别
| HTTP | HTTPS |
|---|---|
| 默认端口80 | HTTPS默认使用端口443 |
| POST明文传输、数据未加密、安全性差 | 传输过程ssl加密、安全性较好 |
| 响应速度快、消耗资源少 | 响应速度较慢、消耗资源多、需要用到CA证书 |
HTTPS建立连接过程:
- 首先客户端先给服务器发送一个请求
- 服务器发送一个SSL证书给客户端,内容包括:证书的发布机构、有效期、所有者、签名以及公钥
- 客户端对发来的公钥进行真伪校验,校验为真则使用公钥对对称加密算法以及对称密钥进行加密
- 服务器端使用私钥进行解密并使用对称密钥加密确认信息发送给客户端
- 随后客户端和服务端就使用对称密钥进行信息传输
详细参考:blog.csdn.net/weixin_4384…
GET和POST区别
| GET | POST | |
|---|---|---|
| 可见性 | 数据在URL中对所有人可见 | 数据不会显示在URL中 |
| 安全性 | 与post相比,get的安全性较差因为所发送的数据是URL的一部分 | 安全,因为参数不会被保存在浏览器 |
| 历史或web服务器日志中 | ||
| 数据长度 | 受限制,最长2kb | 无限制 |
| 编码类型 | application/x-www-form-urlencoded | multipart/form-data |
| 缓存 | 能被缓存 | 不能被缓存 |
HTTP常见响应状态码
类别
原因短语
1xx(信息性状态码):表示接收到请求并且正在处理。
- 100 Continue:服务器已经接收到请求头,并且客户端应继续发送请求主体。
- 101 Switching Protocols:服务器已经理解请求,并将切换到不同的协议,如HTTP/2。
2xx(成功状态码):表示请求已成功处理。
- 200 OK:请求已成功,服务器返回所请求的信息。
- 201 Created:请求已成功并创建了新的资源。
- 204 No Content:请求已成功,但没有返回任何内容。
3xx(重定向状态码):表示需要客户端采取进一步的操作才能完成请求。
- 301 Moved Permanently:永久性重定向,请求的资源已被永久性地移动到新的URL。
- 302 Found:临时性重定向,请求的资源已被临时性地移动到新的URL。
- 304 Not Modified:客户端发送的请求的资源未被修改,服务器直接返回304 Not Modified。
4xx(客户端错误状态码):表示客户端发送的请求有误。
- 400 Bad Request:请求有语法错误或请求无法被服务器理解。
- 401 Unauthorized:请求需要用户身份验证。
- 403 Forbidden:服务器拒绝请求。
- 404 Not Found:请求的资源不存在。
5xx(服务器错误状态码):表示服务器无法完成请求。
- 500 Internal Server Error:服务器内部错误。
- 502 Bad Gateway:作为网关或代理服务器工作的服务器从上游服务器收到无效的响应。
- 503 Service Unavailable:服务器暂时无法处理请求。
重定向和转发区别
重定向:redirect
- 地址栏发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是两次请求。不能使用request对象来共享数据
转发:forward
- 转发地址栏路径不变
- 转发只能访问当前服务器下的资源
- 转发是一次请求,可以使用request对象共享数据
重定向(Redirect)和转发(Forward)是在网络通信中常用的两个概念,它们有一些区别:
-
目标地址不同:重定向是将请求的目标地址修改为新的地址,而转发是将请求发送到另一个目标地址,但客户端不会感知到地址的变化。
-
HTTP状态码不同:重定向使用HTTP状态码3xx(如301、302等)来通知客户端进行地址重定向,而转发则不会改变HTTP状态码。
-
客户端行为不同:在重定向中,当客户端收到重定向响应后,会根据重定向的地址重新发送请求;而在转发中,客户端发送的请求最终会到达转发的目标地址,客户端不会察觉到转发的过程。
-
服务器行为不同:在重定向中,服务器会返回一个包含新地址的响应,要求客户端重新发送请求;而在转发中,服务器会将客户端的请求发送到另一个目标地址,并将目标服务器的响应返回给客户端。
-
浏览器地址栏显示不同:在重定向中,浏览器地址栏会显示新的地址;而在转发中,浏览器地址栏的URL不会改变。
浏览器输入URL过程
DNS解析、TCP连接、发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器渲染、结束
当您在浏览器中输入URL时,以下是大致的过程:
-
- 当您在浏览器中输入URL并按下回车键时,浏览器会将该URL发送到计算机网络上的DNS服务器,以获取与该URL对应的IP地址。
-
- 当DNS服务器接收到URL时,它会检查其缓存,以查找与该URL对应的IP地址。如果找不到,则DNS服务器会向其他DNS服务器发送请求以获取该IP地址,直到找到为止。
-
- 一旦DNS服务器收到与URL对应的IP地址,它会将其返回给您的浏览器。
-
- 您的浏览器会使用该IP地址与Web服务器建立连接。在建立连接时,您的浏览器会发送一个请求,该请求向Web服务器请求页面或其他资源。
-
- 一旦Web服务器收到请求,它会查找所请求的资源,并将其返回给您的浏览器。
-
- 您的浏览器接收到Web服务器返回的响应,并将其解析为可视化的内容。这可能包括HTML、CSS和JavaScript代码。
-
- 您的浏览器将解析后的内容渲染为可视化的页面,并将其显示在浏览器窗口中。