HTTP协议-HTTP\1扩展一

2019-09-20  本文已影响0人  Wu杰语

序言

HTTP \1协议是一个可扩展的协议,而在真是的网络世界中,HTTP做了哪些扩展从而达到商用的级别呢?

HTTP扩展

HTTP传输的内容

HTTP传输的内容,使用了MIME 规范的一部分,用来标记 body 的数据类型。常用的有:

对于浏览器,如果收到HTTP报文,对于不同的类型是做不同的处理的。例如说text/html,就进一步的解析走渲染流程;如果是application,就会进行下载或者执行。

传输过程,特别是对文本,为了传输更有效率,可以选择进行压缩,Encoding type 就少了很多,常用的只有下面三种:

对于字符来说,传输有编码,需要定义传输的语言和字符集。
在实际中,以访问简书为例,从chome network面板中查看:

:authority:www.jianshu.com
:method:GET
:path:/p/65f83aa86db8
:scheme:https
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-encoding:gzip, deflate, sdch, br
accept-language:zh-CN,zh;q=0.8

如上,格式之间用,隔开,其中;用来表示对该项的修饰,例如 zh;q=0.8,表示zh的比重是0.8。在header中accept中有多项,表示客户端可能支持这些类型,发送给服务器做协商。
服务器协商后得到通讯使用的实际类型,如下:

content-encoding:gzip
content-type:text/html; charset=utf-8
HTTP长连接

http的默认是个短连接,连接过程有:

当传送的HTTP报文比较短的时候,基本都消耗在TCP的建链和断开链接了。

因此HTTP扩展出了长连接,在报文头中增加:

Connection: keep-alive

此时,就是保持一个长连接。

虽然长连接有这个好处,但是也带来了问题,如果有些长连接不活跃,以及长连接过多,会带来资源消耗。因此一般服务器都需要设计一定的策略,例如说Ngix,设计了超时时间或者请求最大次数,超过时间或者最大次数就将连接断开。

小结

今天这个小文章总结了HTTP下最基本的两个扩展,承载内容以及长连接。HTTP本身就是个协议,而不是实体,所以需要到实现它的浏览器或者web服务器中,去看到它的实现。学习浏览器和web服务器知识也是相当重要的。

上一篇 下一篇

猜你喜欢

热点阅读