HTTP详解!你了解有多少?(系列一)
Posted 强码人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP详解!你了解有多少?(系列一)相关的知识,希望对你有一定的参考价值。
今天花点时间,来整理一下http的知识!
以往了解到的http相关的知识都是在和页面打交道的时候所了解到的一些。零零散散,不得真形。作为一个前端开发人员,全面了解http是十分有必要的,因为它将能给我们的日常开发带来许多便捷,同时也能帮助我们去了解到更深层次的浏览器工作原理。
我将从以下几个方面来详细道来:
一.http是什么
HTTP(hypertexttransport protocol)其英文翻译为超文本传输协议。
百度百科对http协议的介绍:
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
简而言之,我们可将这个词组拆分开来看:
超文本
传输
协议
首先来说超文本,超文本比文本多了一个“超”字,其实就是在文本的基础上,更加丰富的内容,比如说像图片、音频、视频等,比传统的文本内容更加丰富多彩化。
传输,则是超文本在网络中流动的一环,从一端到另一端或多端,这个沟通的环节。
协议呢,就是超文本在网络中流通需要遵守的协议。理解起来不是很困难,像是国家公民遵守国家的法律一般。
二.不同版本的http
先来关注一波http的发展史。
最早的http,在1990年,HTTP就成为WWW的支撑协议。当时由其创始人WWW之父蒂姆·贝纳斯·李(TimBerners—Lee)提出,随后WWW联盟(WWW Consortium)成立,组织了IETF(Internet Engineering Task Force)小组进一步完善和发布HTTP协议。第一个版本是:
http/0.9
0.9协议是适用于各种数据信息的简洁快速协议,但是远不能满足日益发展的各种应用的需要。0.9协议就是一个交换信息的无序协议,仅仅限于文字。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容是什么,也就是图片是无法显示和处理的。只能通过get的请求方式,从服务器获取到页面的html文档,服务器响应之后就关闭请求。
应用层的HTTP建立在传输层的TCP之上并运用TCP可靠性等特性,先三次握手建立连接
客户端请求建立连接(此时只有GET)
服务端响应请求,数据以 ASCII 字符流返回给客戶端
传输完成,断开连接。
http0.9之后,随之而来的是http1.0,到了1.0协议阶段,也就是在1982年,随着时代的进步,仅仅文本的传输无法满足使用,更多情况需要采用图文的方式才能满足人们日益增长的网络需求。TimBerners-Lee提出了HTTP/1.0。在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。新的http版本增加了许多全新的功能:
之前只有Get方法,现在增加Post(加参数),Head方法
加入协议版本号,同时添加文件处理类型
加入HTTP Header,让HTTP处理请求更加灵活
增加响应状态码,标记出错的原因
提供国际化(不同语言)支持
典型的请求过程:
GET /image.html HTTP/1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)
200 OK
Date: Tue, 17 Nov 2020 09:15:31 GMT
Content-Type: text/html
<HTML>
一个包含图片的页面
<IMG SRC="/image.gif">
</HTML>
通信过程:
可以看出,在请求体中发生了更加复杂的信息交换,在这个过程中处理了更加复杂的数据类型,服务器的处理压力同样也增大了。
在http1.0之后,就是http1.1了。网景公司和微软开启浏览器大战,谁都想当老大。1999年HTTP/1.1发布并成为标准,写入RFC,以为以后不管是网关还是APP等,只要你要使用HTTP,就得遵守这个标准。在1.1版本里,继续增加put等请求方法,并允许客户端与服务端的长连接。
随着文件越来越大,图片等信息越来越复杂,如果每一次上传下载文件都需要建立连接断开连接的过程将增加大量的开销。为此,提出了持久连接,也就是一次TCP连接可以具有多个HTTP请求。当然持久连接是可选择的,如果考虑关闭,只需要使用Connection:close关闭即可。
原因1 TCP自带慢启动
原因2 多条TCP连接带宽竞争
原因3 头部阻塞
进一步解决线头阻塞问题。通过独立不同流,让各个流之间实现相互独立传输,互不干扰
http内容比较多,本期主要总结了一下http的起源与发展史,简单了解不同阶段http的特点。下一期将更加深入剖析http的连接底层。敬请期待~
以上是关于HTTP详解!你了解有多少?(系列一)的主要内容,如果未能解决你的问题,请参考以下文章