一、概述
1.HTTP1.0 最早在1996年在网页中被使用,那时只是使用在一些较为简单的网页上和网络请求上。
2.HTTP1.1 在 1999年开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1 也是当前使用最为广泛的 HTTP 协议。
3.HTTP1.0和HTTP1.1都不提供加密和身份验证机制。2者主要区别如下:
二、缓存处理
1.HTTP1.0 中主要使用 header 里的If-Modified-Since,Expires ,Pragma等字段进行缓存处理。
2.HTTP1.1 引入了更多的缓存控制策略,例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match等,这样可以使用更多可供选择的缓存头来控制缓存策略。
三、带宽优化及网络连接的使用
1.HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象传输到客户端,这是因为它不支持断点续传功能。
2.HTTP1.1 则在请求头引入了 range 字段,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样通过支持断点续传功能方便了开发者充分利用带宽和连接。
四、错误通知的管理
1.在 HTTP1.1 中新增了 24 个错误状态响应码,如 409(Conflict)
表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
2.HTTP1.1 中可以使用Transfer-Encoding头字段来传输错误信息。
五、Host 头处理
1.在 HTTP1.0 中认为每台服务器都绑定一个唯一的 IP 地址,因此,请求消息中的 URL 并没有传递主机名(Hostname)。
2.但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享同一个 IP 地址。HTTP1.1 的请求消息和响应消息都支持 Host 头域,且请求消息中如果没有 Host 头域会报告一个错误(400 Bad Request)。这使得在同一个IP地址上部署多个域名成为可能,极大地推动了虚拟主机技术的发展。
六、长连接
1.HTTP 1.1 支持长连接(Persistent Connection或Keep-Alive连接)和请求的流水线(Pipelining)处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。在 HTTP1.1 中默认开启 Connection:Keep-Alive,弥补了 HTTP1.0 每次请求都要创建连接的缺点。
2.HTTP1.0 不支持请求管道化,即在一个连接上不能同时发送多个请求。
HTTP1.1 支持请求管道化,同一连接上可以同时发送多个请求。但服务器必须按照请求的顺序进行响应,因此可能会造成对头阻塞(Head of Line Blocking)问题。
七、内容协商
1.HTTP1.0内容协商功能有限。
2.HTTP1.1引入了Accept,Accept-Charset,Accept-Encoding,Accept-Language等头部字段,允许进行更灵活的内容协商。
八、传输大小和压缩
1.HTTP1.0默认没有限制传输的大小,对数据压缩支持有限。
2.HTTP1.1引入了chunked机制,允许数据分块传输,并且可以传输大小未知的数据。支持Content-Encoding压缩数据,支持Transfer-Encoding进行分块传输。
九、请求方法
1.HTTP1.0支持基本的请求方法,如GET,POST,HEAD等。
2.HTTP1.1新增了一些请求方法,如OPTIONS,PUT,DELETE,TRACE,CONNECT等。
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!