说明1:本章可能比较枯燥无味,可以选择跳过!
说明2:本章节是作为下面讲解varnish原理做知识铺垫!
一、聊一聊请求响应模式
web浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端!
1、 HTTP协议
Internet的基本协议是TCP/IP协议栈(传输控制协议和网际协议),目前广泛使用的 FTP(文件传输协议)、HTTP(超文本传输协议)、Archie Gopher等都是建立在TCP/IP上面的应用层协议,不同的协议对应不同的应用,而HTTP协议是Web应用所使用的主要协议。
HTTP协议是基于请求响应模式的。客户端向服务器发送一个请求,请求头包含请求的方法(GET、POST、PUT等)、 URI、协议版本(第几版)、以及包含请求修饰符、客户端信息和内容的类似MIME的消息结果。服务器则以一个状态行作为响应,相应的内容包括消息协议的版本、成功 或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
核心:GET 对比 POST
HTTP是无状态协议,依赖于瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延时的进行敕处理,不过延时还是客观存在的。HTTP有一种内置的机制,在消息的传递时间上由一定的灵活性:超时机制,一个超时就是客户机等待请求消息的返回信息的最长时间。
无状态原因:每一次请求和响应都是相对独立,web服务器不能记住同样的请求,所以可能会做一些重复的动作!
对比:DNS是有状态协议
解决策略:两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session,兴起的原因!
通常,客户端每次需要更新信息都必须重新向服务器发起请求,客户端收到服务器返回的信息后再更新屏幕内容。
基于HTTP协议的C/S请求响应机制的信息交换过程包括四个步骤:
(1)建立连接:客户端与服务器建立TCP连接;
(2)发送请求:打开一个连接后,客户端把请求消息送到服务器的相应端口上,完成请求动作提交;
(3)发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息;
(4)关闭连接:客户端和服务器双方都可以通过关闭套接字来结束TCP/IP对话
###################
注意:关注数据在各层的走向!
了解:不同的协议在OSI七层模型中的哪一层!
##################
问题:在开发中视频资源比较大,所以不会放到数据库中,只在数据库中存储一个地址,数据库中存储的是URL还是URI?
说明:你不能保证客户端是一定是通过某种协议去访问的,所以选择URI!
了解:URL和URI
(1)统一资源定位符:URL(uniform resource locator),
URL组成:是由协议、域名、端口、文件名来组成的
①协议(或称为服务方式)
②存有该资源的主机IP地址(包括端口号)
③主机资源的具体地址。如目录和文件名等
例子:http://172.25.2.200:8080/index.html
结构: 协议:// IP地址(域名):端口 / 文件名
# 说明:如果访问是80端口,访问默认的index页面,端口和文件可以不写!
注意:静态页面和动态页面!
(2)统一资源标识符:URI(uniform resource identifier )
作用:来表示抽象或物理资源!
二者的区别:URL是URI的子集,让URI能成为URL的当然就是那个访问机制(http、ftp协议),具体就是网络位置!
URL更细化:它包含了定位Web资源的足够信息!
(3)统一资源名称: URN(Uniform Resource Name)
URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源!
URN是唯一标识的一部分,就是一个特殊的名字,因此 URN 可以引用多个 URL(类似别名)!
URN作用就好像一个人的名字,URL就像一个人的地址。换句话说URN确定了东西的身份,URL提供了找到它的方式。
#################
请求响应的过程
(1)TCP的三次握手建立可靠连接
(2)客户端发送请求
(3)服务器接受请求、解析请求、处理请求、响应客户端
(4)TCP的四次挥手释放
说明:在性能优化的过程中,可以做操作的部分!
注意:TCP连接的一些状态。在做性能优化的时候可能会用到!
参考:一篇文章搞定前端面试