前端必知必会HTTP请求系列(一)了解Web及网络基础
在当前大前端的环境下,前后端分离,前后端同构等开发协同的工作模式的出现,对前端的要求越来越高,前端需要懂得的知识面也越来越广,经常会有朋友在面试的时候被问到,在浏览器输入一个链接到浏览器显示整个网页内容发生的一些列过程,那么这个过程就脱离不开我们今天要分享的HTTP请求了!也有很多同学在和后端同学在协调前后端api接口的时候前端同学老是处于下分,今天这个系列能让前端的同学重回巅峰(稍微有点夸张哈哈)。
http诞生了
在深入学习之前我们来了解一下他的背景,同时了解一下当时制定http的初衷,这样有助于我们更好的理解。
为知识共享而规划的web
在1989年3月,互联网还只属于少数人,在互联网的前期,http诞生了。
CERN(欧洲核子研究组织)的蒂姆·博纳斯-李博士提出了一种能让远隔两地的研究者们共享知识的设想。
最初的设想是借助多文档之间相互关联形成的超文本(HyperText).链接可相互参阅的www(就是我们俗称的万维网)。
www这一名称,是web浏览器当年用来浏览超文本的客户端应用程序的名称。
Web的成长时代
1990年11月,CERN成功研发了世界上第一台Web服务器和Web浏览器。(小编那时候还没出生😄)
1993年1月,现代浏览器的祖先NCSA(美国国家超级计算机应用中心)研发的Mosaic问世。它以in-line(内联)的形式显示html的图像,在图像方面出色的表现使它迅速在世界范围内流行起来。
这就是早期的mosaic浏览器配图是维基百科上的https://zh.wikipedia.org/wiki/Mosaic
1994年12月,网景通信公司发布 Netscape Navigator 1.0
1995年微软公司发布Internet Explorer 1.0 和 2.0
紧随其后的是现在已然成为Web服务器标准之一的Apache,当时它以Apache 2.0 的姿态出现在世人眼前。HTML也发布了2.0版本。哪一年Web技术发展突飞猛进。
时光飞逝,在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。
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层次化是有好处的。比如,如果互联网只有一个协议统筹,某个地方需要改变,设计师就必须把所有部分整体替换掉,而分层之后只需把变动的成替换掉即可。把各层之间的接口部分规划好以后。每个层次内部的设计就变得自由改动。值得一提的是,层次化以后。设计也变得相对简单了,处于应用层上的应用可以只考虑分配给自己的任务,而不需要弄清对方在地球的哪一个地方,对方的传输路线是怎样的,是否能确保传输达。等问题。
1、应用层
应用层决定了向用户提供应用服务时通讯的活动,TCP/IP协议组内内存的各类通信通用的应用服务,比如。FTP和DNS。服务就是其中两类HTTP协议也处于该层
2、传输层
传输层,对上层应用程。提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议,TCP和UDP 3、网络层
网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位,该成规定的通过怎样的路径。所谓的传输路线,到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项,那选择一条传输路线
4、链路层
用来处理链接网络的硬件部分,包括控制操作系统,硬件的设备驱动。NC。以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内
TCP/IP通信传输流
image利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信发送端从应用层往下走,接收端则从链路层往上走,我们用HTTP,举例来说明。首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
接着为了传输方便,在传输层TCP协议,把从应用层处收到的数据HTTP请求报文进行分割,并在各个报文上打上标记序号及端口号转发给网络层。
在网络层,IP协议增加作为通信目的地的Mac地址。后转发给链路层,这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按顺序往上层发送。一直到应用层,当传输到应用层,才能算真正接收到有客户端发过来的HTTP请求。 image
发送端在层与层之间传输数据时,每经过一层时,必定会打上一个改成所属的首部信息,反之,接收端在层与层传输数据时,每经过一层是会把对应的手不消去。这种数据行销信息包装起来的做法成为封装
与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基本上不会更改。
1、使用ARP协议,凭借MAC地址进行通信
IP间的通信依赖Mac地址。在网络上,通信的双方在同一局域网内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方,而在进行中转时,会利用下一站中转设备的Mac地址来搜索下一个中转目标,这时会采用ARP协议,ARP是一种用以解析地址的协议。根据通信方的地址,IP地址就可以反查出对应的MAC地址。
2、没有人能够全面掌握互联网中的传输状状况
在达到通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉,很粗略的传输路线。
这种机制称为路由选择,有点像快递公司的送货过程,想要寄快递的人,只要将自己的货物送到集散中心,就可以知道快递公司是否肯收件发货,该快递公司的集散中心检查货物的送达地址,明确下账该送完哪个区的集散中心,接着那个区域的集散中心智慧判断。是否能送到对方的家中。
我们是想通过这个比喻说明,无论哪台计算机那台网络设备,他都无法全面掌握互联网中的细节。
确保可靠性的TCP协议
所谓的字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理,而可靠的传输服务是指能够把这些数据准确可靠地传给对方,一言以敝之TCP协议,为了更容易传送大数据,才把数据进行分割,而且TCP协议能够。确认数据最终是否。送达到对方。
确保数据等到达目标
image为了准确无误的将数据送达目标处,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页面时,需要输入的网页地址。看到下图
imageURI用字符串标识某一互联网资源。而URL表示资源的地点。互联网上所处的位置,可见URI是URL的子集。
URI格式
表示指定的URL。要使用涵盖全部必要信息的绝对URI,绝对URL以及相对URL相对URL,是指从浏览器中基本UI处指定的URL。我们现在了解一下绝对URL的格式
image1、登录信息认证
指定用户名和密码作为从服务端获取资源是必要的,登录信息,身份证此项是可选项
2、服务器地址
绝对的UI必须指定在访问的服务器地址,地址可以是类似这种DNS解析的名称或者是。192.168.101这类IPv4地址名
3、服务器端口号
指定服务器连接的网络端口号,此项也是可选项,若用户省省略,则自动使用默认端口号
4、带层次的文件路径
指定服务器上的文件路径来定位特指的资源,这语音系统的文件目录结构相似
5、查询查询字符串
针对一指定的文件,路径内的资源可以使用查询字符串传入任意参数时,选可选
6、片段标识符
使用片段标识符通常可以标记出已获取资源中的资源资源,文档内的某个位置,但在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攻击技术
有什么问题可以到评论区留言,持续关注,不断更新!