我所认识的HTTP
咱们都知道HTTP是超文本协议。但更具体一点,咱们应该怎么去理解协议?有人说能够类比咱们说的语言,由于语言是咱们人类交流的基础。加上目前HTTP所造成的技术家族,把它类比成语言一点不为过,基于HTTP的应用有不少,它们都经过HTTP来传输信息。典型的应用就是浏览器与Web服务器。类比虽然是成立的,可是好像不能帮助咱们去理解HTTP,这是由于咱们的语言自己也够抽象了,至少不能让咱们直观地认识到HTTP是什么了。html
为了更好的理解HTTP,咱们能够追溯到HTTP的早期版本,那个时候HTTP仍是一个简单的协议,为互联网通讯提供了基础,为了应对互联网的不肯定性,就须要设计一系列的策略去规避问题同时保证信息可以顺利传输,解决的是单个场景的问题。而这种场景相对比较简单,咱们能够想象生活中的一个例子,有人找你借钱,你会发现他找的时机特别合适,好比你刚领了工资,再加上他的借钱理由完胜你不想借的理由,你有多不舍,他就有多执着,这个场景和你老婆压缩你零用钱的场景如出一辙,成年人的奔溃是从借钱开始的,在你犹豫不觉时,他又补了一刀,说回头就给你,这样他顺利借走了你的钱,终结了工资带给你的短暂喜悦。咱们把借钱看成一个场景,借钱的人考虑了不少已知和未知的场景,而且处理的很是得当,他借走了你的钱。整个流程的处理特别想早期版本的HTTP。浏览器
HTTP协议在Web中属于底层知识,又或者说是网络架构,而Web开发人员来讲很难有机会去接触它,由于B/S架构中,浏览器已经封装了HTTP,咱们更多的是处理咱们的业务场景。服务器
目前来讲,互联网上存在着数以亿万计的资源文件信息,而且这些分布在全球各个地方,咱们可使用电脑或者手机经过HTTP来访问这些信息,由于HTTP是可靠的数据传输协议,这种可靠能够保证数据在传输时不会被损坏或则丢失,这一点对于用户或者Web开发者来讲都是一件好事,开发者能够专一业务的开发。网络
Web服务器也叫HTTP服务器,由于Web服务器使用是HTTP协议,这些HTTP服务器存储着互联网上绝大部分的数据,并在有HTTP请求时返回这些数据给HTTP客户端,其中最多见的客户端就是浏览器。架构
对于Web资源来讲,它能够是你可以想到的任何格式,好比文本,图片,音视频等,这些资源一般称做为静态资源,可是须要注意一点的是,Web资源除了静态资源之外,还能够是软件根据须要生成资源,好比依据身份不一样而产生的不一样内容。ide
Web资源有不少类型,HTTP为了可以更好的识别不一样的数据类型,引入了媒体类型,也叫MIME
类型,它是一种数据格式标签,当浏览器从Web服务器上获取到一个资源时,会首先查看该资源的MIME类型,以便如何处理这个资源。MIME的格式,一般是一个大类型/子类型。
HTML格式的文本使用text/html来标记,JPEG的图片使用image/jpeg来标记。
常见的MIME有上百个。设计
为了准确的获取到目标资源,HTTP引入了统一资源标识符,URI,它是全世界范围内的惟一标识符,HTTP能够经过统一资源标识符准确地定位资源文件。同时URI有两种形式,URL和URN.
URL,统一资源定位符,也是目前最多见的资源标识符形式,描述了特定服务器上的特定资源的位置。第一部分,访问资源的协议类型(scheme);第二部分,服务器的互联网地址;第三部分,资源文件的路径。目前来讲,URI和URL是等价的。
URN,统一资源名,是一种与资源名称有关,而与资源地址无关。使用场景在,经过一个名字,可使用多作网络协议去访问。但URN还存于试验阶段,没有大范围使用。code