前端必知必会HTTP请求系列(一)了解Web及网络基础

图片描述
在当前大前端的环境下,先后端分离,先后端同构等开发协同的工做模式的出现,对前端的要求愈来愈高,前端须要懂得的知识面也愈来愈广,常常会有朋友在面试的时候被问到,在浏览器输入一个连接到浏览器显示整个网页内容发生的一些列过程,那么这个过程就脱离不开咱们今天要分享的HTTP请求了!也有不少同窗在和后端同窗在协调先后端api接口的时候前端同窗总是处于下分,今天这个系列能让前端的同窗重回巅峰(稍微有点夸张哈哈)。html

http诞生了

在深刻学习以前咱们来了解一下他的背景,同时了解一下当时制定http的初衷,这样有助于咱们更好的理解。前端

为知识共享而规划的web

在1989年3月,互联网还只属于少数人,在互联网的前期,http诞生了。
CERN(欧洲核子研究组织)的蒂姆·博纳斯-李博士提出了一种能让远隔两地的研究者们共享知识的设想。
最初的设想是借助多文档之间相互关联造成的超文本(HyperText).连接可相互参阅的www(就是咱们俗称的万维网)。
www这一名称,是web浏览器当年用来浏览超文本的客户端应用程序的名称。web

Web的成长时代

1990年11月,CERN成功研发了世界上第一台Web服务器和Web浏览器。(小编那时候还没出生😄)
1993年1月,现代浏览器的祖先NCSA(美国国家超级计算机应用中心)研发的Mosaic问世。它以in-line(内联)的形式显示html的图像,在图像方面出色的表现使它迅速在世界范围内流行起来。面试

Mosaic浏览器
这就是早期的mosaic浏览器配图是维基百科上的[https://zh.wikipedia.org/wiki...]()
1994年12月,网景通讯公司发布 Netscape Navigator 1.0
1995年微软公司发布Internet Explorer 1.0 和 2.0
紧随其后的是如今已然成为Web服务器标准之一的Apache,当时它以Apache 2.0 的姿态出如今世人眼前。HTML也发布了2.0版本。哪一年Web技术发展日新月异。segmentfault

时光飞逝,在1995年左右,微软公司与网景公司之间爆发浏览器大战,两家公司都各自对HTML作了扩展,因而致使在编写HTML页面的时候,必须考虑兼容他们两家公司的浏览器,时至今日,这个问题仍让令咱们这些前端工程师棘手。
在这场浏览器供应商之间的竞争中。他们不只对当时发展中的各类web标准化视而不见。还多次出现新增功能,没有对应的说明文档的状况。
2000年先后这场浏览器战争,随着网景通信公司的衰落而暂告一段落。可是在2004年,Mozila基金会发布了Firefox(火狐)浏览器,第二次浏览器大战随即爆发。
Internet Exprlorer 浏览器的版本从6到7先后花费了5年时间,以后接二连三发布了8,9,10版本。另外Chrome,Opera,Safari等浏览器也纷纷抢占市场份额。后端

驻足不前的HTTP

HTTP/0.9
HTTP于1990年问世,可是的HTTP并无做为正式的标准被创建。这时的HP其实还有HTTP/1.0以前版本的意思,所以被称为HTTP/0.9。 api

HTTP/1.0
HTTP正是做为标准被公布,是在1996年的五月版本被命名为HTTP1.0N记载于RFC1945,虽然说是初七标准,但该协议标准至今仍被普遍使用,在服务器端。 浏览器

HTTP/1.1
1997年1月公布的HTTP1.1是目前主流的HTTP协议版本,当初的标准是RFC2068以后发布的修订版RFC2616是当前的最新版本安全

HTTP/2.0
在2010年到2015年,谷歌经过实践了一个实验性的SPDY协议,证实了一个在客户端和服务器端交换数据的另类方式。其收集了浏览器和服务器端的开发者的焦点问题。明确了响应数量的增长和解决复杂的数据传输,SPDY成为了HTTP/2协议的基础。
在2015年5月正式标准化后,HTTP/2取得了极大的成功,在2016年7月前,8.7%的站点已经在使用它,表明超过68%的请求。高流量的站点最迅速的普及,在数据传输上节省了可观的成本和支出。服务器

网络基础TCP/IP

为了了解HTTP,咱们有必要事先了解一下TCP/IP协议族,一般使用的网络。是在TCP/IP协议族的基础上运做的,儿HTTP,属于它内部的一个子集。

TCP/IP协议族

计算机与网络设备要相互通讯。双方就必须基于相同的方法,好比,如何探测到通讯目标,由哪一边先发起通讯,使用哪一种语言进行通讯,怎么结束通讯等规则都须要事先肯定,不一样的硬件,操做系统之间的通讯,全部的这一切都须要一种规则,而咱们就把这种规则称为协议。
协议中存在各类各样的内容,从电缆的规格到IP地址的选定方法,寻找异地用户的方法,双方创建通讯的顺序以及握把页面显示须要处理的步骤等等。像这样把互联网。相关联的协议集合起来总称为TCP/IP,也有说法认为TCP/IP是指TCP和IP种协议,还有一种说法认为,TCP/IP是在IP协议的通讯过程当中使用到协议族的统称.

TCP/IP的分层管理

把TCP/IP层次化是有好处的。好比,若是互联网只有一个协议统筹,某个地方须要改变,设计师就必须把全部部分总体替换掉,而分层以后只需把变更的成替换掉便可。把各层之间的接口部分规划好之后。每一个层次内部的设计就变得自由改动。值得一提的是,层次化之后。设计也变得相对简单了,处于应用层上的应用能够只考虑分配给本身的任务,而不须要弄清对方在地球的哪个地方,对方的传输路线是怎样的,是否能确保传输达。等问题。

一、应用层
应用层决定了向用户提供应用服务时通信的活动,TCP/IP协议组内内存的各种通讯通用的应用服务,好比。FTP和DNS。服务就是其中两类HTTP协议也处于该层
二、传输层
传输层,对上层应用程。提供处于网络链接中的两台计算机之间的数据传输。在传输层有两个性质不一样的协议,TCP和UDP 三、网络层
网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位,该成规定的经过怎样的路径。所谓的传输路线,到达对方计算机,并把数据包传送给对方。与对方计算机之间经过多台计算机或网络设备进行传输时,网络层所起的做用就是在众多的选项,那选择一条传输路线
四、链路层
用来处理连接网络的硬件部分,包括控制操做系统,硬件的设备驱动。NC。以及光纤等物理可见部分。硬件上的范畴均在链路层的做用范围以内

TCP/IP通讯传输流


利用TCP/IP协议族进行网络通讯时,会经过分层顺序与对方进行通讯发送端从应用层往下走,接收端则从链路层往上走,咱们用HTTP,举例来讲明。首先做为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
接着为了传输方便,在传输层TCP协议,把从应用层处收到的数据HTTP请求报文进行分割,并在各个报文上打上标记序号及端口号转发给网络层。
在网络层,IP协议增长做为通讯目的地的Mac地址。后转发给链路层,这样一来,发往网络的通讯请求就准备齐全了。
接收端的服务器在链路层接收到数据,按顺序往上层发送。一直到应用层,当传输到应用层,才能算真正接收到有客户端发过来的HTTP请求。


发送端在层与层之间传输数据时,每通过一层时,一定会打上一个改为所属的首部信息,反之,接收端在层与层传输数据时,每通过一层是会把对应的手不消去。这种数据行销信息包装起来的作法成为封装

与HTTP关系密切的协议。IP、TCP和DNS

下面咱们分别针对TCP/IP协议组中与HTTP密不可分的三个协议,IP、TCP和DNS进行说明

负责传输的IP协议

按层次分,IP网络协议位于网络层。Internet protoct这个名称可能听起来有点夸张。但事实正是如此,由于几乎全部使用网络的系统都会用到IP协议,TCP/IP协议族中的IP指的就是晚期协议,协议名称中占据了一半位置,其重要性可见一斑,可能有人会把IP和IP地址搞混,IP实际上是一种协议的名称
IP协议的做用是把各类数据包传送给对方,而要保证传送到对方那里,则须要知足各种条件,其中两个重要的条件是IP地址和Mac地址
IP地址指明了节点被分配到的地址,Mac地址是指网卡所属的固定地址,IP地址能够和Mac地址进行配对,IP地址可变化,但mac基本上不会更改。
一、使用ARP协议,凭借MAC地址进行通讯
IP间的通讯依赖Mac地址。在网络上,通讯的双方在同一局域网内的状况是不多的,一般是通过多台计算机和网络设备中转才能链接到对方,而在进行中转时,会利用下一站中转设备的Mac地址来搜索下一个中转目标,这时会采用ARP协议,ARP是一种用以解析地址的协议。根据通讯方的地址,IP地址就能够反查出对应的MAC地址。
二、没有人可以全面掌握互联网中的传输状情况
在达到通讯目标前的中转过程当中,那些计算机和路由器等网络设备只能获悉,很粗略的传输路线。
这种机制称为路由选择,有点像快递公司的送货过程,想要寄快递的人,只要将本身的货物送到集散中心,就能够知道快递公司是否肯收件发货,该快递公司的集散中心检查货物的送达地址,明确下帐该送完哪一个区的集散中心,接着那个区域的集散中心智慧判断。是否能送到对方的家中。
咱们是想经过这个比喻说明,不管哪台计算机那台网络设备,他都没法全面掌握互联网中的细节。

确保可靠性的TCP协议

所谓的字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理,而可靠的传输服务是指可以把这些数据准确可靠地传给对方,一言以敝之TCP协议,为了更容易传送大数据,才把数据进行分割,并且TCP协议可以。确认数据最终是否。送达到对方。

确保数据等到达目标


为了准确无误的将数据送达目标处,TCP协议采用了三次握手特色,用TCP协议把数据包送出去之后,TCP不会对传送后的状况置之不理,他必定会向对方确认是否成功送达。握手过程当中使用了TCP的标志。SYN和ACK
发送端首先发送一个带SYN标志的数据包给对方接收,单收到后回传一个带有SYN/ACK 的标志的数据包已经是传达确认信息,最后发送端再回传一个带有ACK 标志的数据包表明握手结束。若握手过程当中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包
除勒上述三次握手,TCP协议,还有其余各类手段来保证通讯的可靠性。

负责域名解析的DNS服务

DNS服务适合TPHP鞋同样位于应用层的协议,它提供域名到IP地址之间的解析服务
计算机系能够被赋予IP地址,也能够被赋予主机名和域名,好比 www.google.com
用户一般使用主机名或域名来访问对方的计算机,而不是直接经过IP地址访问,由于与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名,更符合人类的记忆习惯。可是让计算机去理解民生,相对而言就变得困难了,由于计算机更擅长处理一长串数字,为了解决上述的问题,DNS服务应运而生,DNS协议提供经过域名查找IP地址或逆向同IP地址反查域名的服务。

URI和URL

与URI(统一资源标识符)相比,咱们更熟悉URL(统一资源定位符)。URL正式使用浏览器等访问web页面时,须要输入的网页地址。看到下图


URI用字符串标识某一互联网资源。而URL表示资源的地点。互联网上所处的位置,可见URI是URL的子集。

URI格式

表示指定的URL。要使用涵盖所有必要信息的绝对URI,绝对URL以及相对URL相对URL,是指从浏览器中基本UI处指定的URL。咱们如今了解一下绝对URL的格式


一、登陆信息认证
指定用户名和密码做为从服务端获取资源是必要的,登陆信息,身份证此项是可选项
二、服务器地址
绝对的UI必须指定在访问的服务器地址,地址能够是相似这种DNS解析的名称或者是。192.168.101这类IPv4地址名
三、服务器端口号
指定服务器链接的网络端口号,此项也是可选项,若用户省省略,则自动使用默认端口号
四、带层次的文件路径
指定服务器上的文件路径来定位特指的资源,这语音系统的文件目录结构类似
五、查询查询字符串
针对一指定的文件,路径内的资源可使用查询字符串传入任意参数时,选可选
六、片断标识符
使用片断标识符一般能够标记出已获取资源中的资源资源,文档内的某个位置,但在FC中并无明确规定其使用方法,该项也为可选项。

前端必知必会HTTP请求系列(一)了解Web及网络基础
前端必知必会HTTP请求系列(二)简单一点的HTTP协议
前端必知必会HTTP请求系列(三)HTTP,报文内部的HTTP信息
前端必知必会HTTP请求系列(四)返回结果的HTTP状态码
前端必知必会HTTP请求系列(五)与HTTP协做的web服务器
前端必知必会HTTP请求系列(六)HTTP的首部
前端必知必会HTTP请求系列(七)确保Web安全的HTTPS
前端必知必会HTTP请求系列(八)确认访问用户身份的认证
前端必知必会HTTP请求系列(九)基于HTTP的功能追加协议
前端必知必会HTTP请求系列(十)构建Web内容的技术
前端必知必会HTTP请求系列(十一)Web攻击技术

有什么问题能够到评论区留言,持续关注,不断更新!

相关文章
相关标签/搜索