带新手走进神秘的HTTP协议

在开发的时候经常需要访问网络,比如Android就有好多这方面的框架:Volley、OkHttp、Retrofit等,当你看这些框架源码时,可能会很好奇关于http的部分,它的首部字段是什么意思,http是如何工作的??等等,希望这篇文章会为你解惑。

一、概念

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

带新手走进神秘的HTTP协议

HTTP默认的端口号为80,HTTPS的端口号为443。

浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。

二、简史

HTTP/0.9
HTTP 于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。现在的 HTTP 其实含有 HTTP1.0 之前 版本的意思,因此被称为 HTTP/0.9。

HTTP/1.0

HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初 期标准,但该协议标准至今仍被广泛使用在服务器端。
RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0
 

HTTP/1.1

1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。
RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1
 
可见,作为 Web 文档传输协议的 HTTP,它的版本几乎没有更新。新一代 HTTP/2.0 正在制订中,但要达到 较高的使用覆盖率,仍需假以时日。

三、统一资源定位符

URL 的一般形式是:

<URL的访问方式>://<主机>:<端口>/<路径>

带新手走进神秘的HTTP协议

四、HTTP 的操作过程 

每个Web站点都运行一个服务器进程,它不断地监听TCP的端口80,以便发现是否有向它发来连接请求;

一旦收到请求并建立了TCP连接之后,浏览器就向服务器发出某个页面的请求,服务器接着就返回请求的页面作响应;

最后连接被释放。这之间一系列信息的传输都遵循HTTP。 

五、Web工作过程

带新手走进神秘的HTTP协议

上图用户点击鼠标后所发生的事件:

(1) 浏览器分析超链指向页面的 URL;

(2) 浏览器向 DNS 请求解析 的 IP 地址;

(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址;

(4) 浏览器与服务器建立 TCP 连接;

(5) 浏览器遵循HTTP协议发出取文件命令:

GET /chn/yxsz/index.htm;

(6) 服务器给出响应,把文件 index.htm 发给浏览器;

(7) TCP 连接释放;

(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

六、HTTP 的报文种类 

HTTP 有两类报文:

请求报文——从客户向服务器发送请求报文。

响应报文——从服务器到客户的回答。 

6.1 HTTP 的报文结构  6.1 请求报文

带新手走进神秘的HTTP协议

报文由三个部分组成,即开始行、首部行和实体主体

在请求报文中,开始行就是请求行。

1.  方法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13954.html