<返回更多

图解HTTP原理

2019-06-25    
加入收藏

不管是前端还是后端,必须要了解的知识中,HTTP是必不可少的。所以就有必要来讲解下HTTP。还是从终极三问的“什么”开始吧!

什么是HTTP?

HTTP是超文本传输协议。它是应用层协议的一种,是无状态的协议。主要是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。默认HTTP的端口号为80,我们来看下它在TCP/IP协议栈中的位置:

图解HTTP原理

HTTP协议本身是不对请求和响应之间的通信状态保存的。那为什么要这样呢?其实这主要是为了更快地处理大量的请求,确保协议的可伸缩性,特意将协议设计的这么简单。

那如果要保存状态该怎么办?HTTP/1.1就提出了解决方案,虽然还是无状态的,但是引入了cookie技术,相比大家上网的话都应该碰到过“询问退出是否清楚cookie”,就是这个东西。当有了cookie之后,就可以管理状态了。

HTTP方法

面向对象编程的时候,对象总是会有一些操作方法。以此类推HTTP作为协议,它也有操作方法。HTTP的方法有哪些呢?它有什么用处呢?,下面一一为大家解答。

图解HTTP原理 图解HTTP原理 图解HTTP原理 图解HTTP原理

keep alive

在HTTP协议中,每一次通信就会连接和断开一次TCP链接。如下图:

图解HTTP原理

在每一次的请求和响应都是一次完整的TCP连接的建立和断开,TCP的握手和挥手的开销对于频繁的通信来说是不可接受的。所以为了解决这个问题,提出了持久连接。也就是keep alive 。看下图:

图解HTTP原理

这样做的优点:

  1. 减少TCP握手和挥手的开销
  2. 减轻了服务器的负载

你以为做就完美了吗?其实不然,每一次通信都需要HTTP响应,才能发送下一个包,这样效率岂不是很慢。所以就引入了管线化技术

管线化

也就是不用等待响应,就可以直接发送下包数据了。如下图所示:

图解HTTP原理

cookie技术

在上文中,讲述到cookie技术,它的原理就是:根据服务端发送来的响应报文中,有个set-Cookie的首部字段,通知客户端保存cookie。等到下次客户端需要访问服务端的时候,将保存的cookie发送出去。如下图所示:

第一次请求:

图解HTTP原理

第二次请求:

图解HTTP原理

总结

本文只是讲了原理,提供了一种理解HTTP的思路,当然HTTP远不止这么简单。要精通HTTP还需多实践,毕竟实践出真知。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>