聊聊web的底层-HTTP

HTTP全称Hypertext Transfer Protocol,即超文本传输协议。超文本即我们常说的富文本。


HTTP的最新版本是1.1,从1997年至今,由于其稳定性和实用性,一直就没有正式的升级过。2.0的协议现在还没有正式版,因为1.1的稳定以及普遍性,完全替代,还遥遥无期。但是2.0一些新特性,比如长连接(服务器推送消息),已经在最新的浏览器和服务器中实现。

聊聊web的底层-HTTP_第1张图片


HTTP每次连接,都包含2个部分:头域(头文件)和实体。这些名词太专业有木有,举个简单的例子吧。

比如发顺丰快递,对方的地址,电话号码,以及包裹详情就是头文件,而包裹本身就是请求实体。其实HTTP连接就是PC之间互相发包裹而已。

聊聊web的底层-HTTP_第2张图片


我们来看看HTTP头域包含哪些内容吧。头域分为请求头和响应头,先来看看请求百度CSS文件的HTTP详情:

聊聊web的底层-HTTP_第3张图片


头域主要包含如下字段

1. User-Agent,Remote Address,Request URL等等

这是客户端发送自己的信息给服务器,服务器用这些信息为每个客户生成唯一的Token(SessionID)。我在上篇文章中,一直强调HTTP的无状态性,很多同学就要问了,服务器怎么确定请求是来自于同一个客户呢(Session)? 答案就是Token。Token是以Cookie的方式进行传输的。


2.缓存

缓存是属于头文件中比较复杂的了。由于其HTTP的版本迭代,包含不同版本缓存的配置方法。比如:cache-control,date,etag,expires,last-modified等等。但是它的实用度远远大于它的复杂度。有兴趣的同学,推荐深入研究一下。


3.Connection:keep-Alive

这个名词叫长连接,但请别被这个词骗了。在HTTP1.1中只是连接复用而已,即每次HTTP连接使用后,不直接销毁。供其他请求使用。现在主流的Web服务器如Apache,Tomcat等都实现了这个功能。


4.关于Cookie

上面提到,Token是以Cookie的形式存储的。大家可能都了解Cookie的机制,但是大家可能不知道的是,客户端的每次请求,都会携带所有的Cookie到服务器,对是所有!所以千万不要以Cookie作为存储数据的媒介。并且,在老版IE中,Cookie的容量只有5KB,存储也会不安全。


HTTP头域主要的就这么多内容了,其他的一些是服务器HTTP的版本,请求编码,相应编码,请求类型等等。


说到请求类型,这里插一段HTTP GET和POST的不同区别吧。

Get提交的数据由于在URL中传输,所以在老版的IE7中,传输的数据量最多不超过256K,GET数据会使用HTTP的缓存来加快速度。

而POST本身对数据量没有限制,但是POST请求本身就屏蔽了缓存功能。所以在使用时,尽可能多的使用GET,至于具体情景,比如保存数据,就另当别论了。


HTTP实体,就是HTTP连接的请求数据以及响应数据。这个就是包裹本身了。并没有什么可讲的。


做技术这么久,真心感到技术和生活是想通的!技术上的种种机制以及趋势,都和生活中的种种是相对的,所谓佛本是道呀!所以我一直钟情于用通俗简单的话语,来讲解很多人认为高深的技术,而不是为了深度而深度。希望大家也保持一颗不畏技术的心!


本次WEB的底层讲解,就到这里了。如果您对我的文章有兴趣,请关于我的微信公众号,谢谢。

聊聊web的底层-HTTP_第4张图片







版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(聊聊web的底层-HTTP)