HTTP协议深入解析

来源:互联网 发布:淘宝卖家短信催好评 编辑:程序博客网 时间:2024/06/09 20:48

大家都知道HTTP是超文本传输协议,我们通过HTTP可以浏览到网页,获取很多的知道,但是可能很多人不知道更深层的一些知识,今天我就跟大家分享一下HTTP协议的深入解析。

HTTP流程 

客户端                                                  服务器

=============================》》

通过URL查找到服务器

《《=====================》》

建立TCP连接

========================》》

发送HTTP报文请求

《《=====================

返回报文

《《======================》》

释放TCP链接

通过流程图我们可以知道HTTP是建立于TCP协议的基础之上的,HTTP是比TCP高级的协议。

HTTP本身是没有状态的,我们平时可以登录账号密码,保持登录状态是借用了其他机制,可以看我的其他博客,介绍cookie和session的。

HTTP协议的发展

HTTP1.0

HTTP本身是没有协议的,双方保持连接是靠TCP连接,所以每次传输文件的时候,TCP都是要保持连接的,当文件传输完的时候,TCP协议释放,浏览器和服务器就没有连接了,彼此独立,服务器就可以释放内存。


我们可以看到,在客户端与服务器连接的过程中,其实发送了两个请求,占用了两个请求时间。

在HTTP1.0中,客户端收到文档后,TCP协议就会立刻停止。

问题来了,

如果我们在index.html引入本地的图片,那么按照1.0的协议,我们会先返回index.html这个文档,断开TCP,然后重新去连接TCP协议,重新请求图片资源,然后再断开TCP资源,如果我们一个首页有很多图片,这样就浪费了很多TCP连接建立的时间。于是1.1协议来了。


HTTP1.1


在HTTP1.1中,引入了长连接的概念,也就是说,我们建立了TCP协议后,我们先请求了index.html之后,我们不着急断开连接,直接发送HTTP报文请求,请求返回a.jpg的图片,直到同一台服务器的所有资源全部返回了,然后才断开TCP连接。这样就可以减少很多TCP连接的时间。

注:如果index文件加入了

<link href="www.baidu.com/1.jpg">

这种其他服务器上的资源,依然会建立多个TCP连接,TCP的长连接仅仅针对于同一台服务器。

大家如果非常有兴趣的话,可以用wireshark之类的抓包软件,抓取HTTP的包,查看一下连接的过程。


HTTP报文格式

HTTP报文有两种
1请求报文
2响应报文

请求报文
方法 空格 URL 空格 版本 回车
首部字段名空格值回车
``````(许多个首部)
回车
实体主体


响应报文
版本空格状态吗空格短语回车
首部字段名空格:值 回车
(多个首部行)回车
回车
实体主体

举例:
请求报文:
GET http://www.baidu.com HTTP/1.1
相应报文:
HTTP/1.1 202 Accepted




0 0
原创粉丝点击