应用层
HTTP
HTTP是无状态应用层协议,即HTTP不会保存用户的状态信息,HTTP定义了Web客户端和Web服务器的通信方式,HTTP采用TCP作为支撑它的运输协议。HTTP可以采用非持续性TCP链接,还可以采用持续性TCP链接,通过HTTP报文中的首部行Connection控制。
非持续性:浏览器每获得一个资源,就关闭TCP链接,重新创建一个新的TCP链接获得其他资园。
持续性:浏览器通过一个TCP链接获得所有它需要的资源。
Cookie
由于HTTP是无状态协议,但是服务提供商又想要客户提供一些状态,就通过cookie实现。
实现cookie的四大组件:
- HTTP请求和响应报文中的cookie首部行,指明了cookie的唯一标识符。
- 浏览器管理维护的cookie文件。
- 后端数据库的cookie表项。
cookie作用的过程:
- 当客户向一个从未访问过的网站发起请求。
- 网站服务器接收到请求,并为这个请求设置一个唯一标识,存放到数据库中,并将唯一表示插入到响应报文的cookie首部行中。
- 浏览器接受到响应,将响应报文中的cookie首部行中的cookie标识符插入到cookie文件中。
- 当客户再次访问同一网站时,浏览器就去cookie文件中查找cookie标识,插入到cookie首部行中,服务器接收到请求就可以更具cookie首部行的cookie唯一标识从数据库中得到用户的状态信息。
Web缓存
web缓存器就是代理服务器,作用是代表源服务器满足HTTP请求,Web缓存器可以缓存最近访问过的对象副本,当用户再次访问同一个对象时,web缓存器可以将副本发送给客户,不用再去源服务器中查找。
作用:
- 降低HTTP请求的响应时间
- 降低因特网的通信量:因为代理服务器通常与主机处于同一局域网中。
条件查询
因为代理服务器缓存的信息可能过旧,就是说源服务器中与代理服务器中所对应的副本可能已经修改过了。当用户请求副本时就会获得一个旧的副本。
此时就可以使用条件查询,也就是代理服务器向源服务器发送条件查询请求,看副本所对应的源文件是否修改过,如果修改过,那么源服务器将新的对象发送给代理服务器,代理服务器缓存新的对象,如果源对象没有被更新过,那么就不发送旧对象给代理服务器,响应报文为空,状态为304未修改。
DNS
DNS就是域名解析器。一台主机有两个识别码:
- 主机名(域名)给人看的。
- IP地址,给路由器看的。
IP地址不适合人们记忆,所以需要主机名,但当主机间要通讯的话就要通过IP进行,因此需要一种将主机名映射为IP地址的方法,这就是DNS的作用。
DNS主机查询分布式数据库的应用层协议,DNS是一个由分层DNS服务器实现的分布式数据库。DNS协议运行在UDP上。
DNS的作用过程:
首先要使用DNS,主机上必须要有一个DNS应用。
- 当客户通过浏览器访问一个网站时,浏览器通过URL将主机名提取出来调用DNS应用,DNS应用通过浏览器传来的域名向DNS服务器发出DNS查询请求报文。
- DNS服务器对查询请求进行响应,将相关的域名通过DNS响应报文。
- DNS应用将DNS响应报文中的Ip地址传送给浏览器。
- 浏览器通过IP地址向目标主机发起TCP链接。
DNS的其他作用:
- 主机的别名
- 邮件的别名
- 负载均衡:就是一个域名对应一组IP集合,每次请求轮流的将集合中的每个ip作为响应。
DNS分布式层次
- 根DNS服务器
- 顶级域DNS服务器
- 权威DNS服务器
- 本地DNS服务器:本地ISP提供的服务器。
DNS应用查询ip的细节
DNS应用向本地DNS服务器发起DNS查询请求,
-
DNS服务器看本地缓存中有无对应的资源记录。如果有则直接响应客户请求,
-
如果没有就向向根DNS服务器发起查询请求,根DNS服务器向本地DNS服务器发送响应报文,包含连个资源记录,一个是获得该主机名对应IP的顶级域域名,和顶级域域名对应的ip地址。
-
本地DNS服务器向根DNS提供的信息向顶级域发起请求,顶级域服务器接收到请求也如同根DNS服务器一样,将获得该域名所对应的ip地址的权威DNS服务器的域名和权威DNS服务器的域名对应的ip的资源记录插入DNS响应报文中发送给本地DNS服务器。
-
本地DNS服务器接收到顶级域服务器中的信息,向权威服务器发起DNS查询请求,权威域DNS服务器将域名所对应的IP插入DNS响应报文中,传送给本地DNS服务器,本地DNS服务器将对应的ip缓存在服务器中,如果接下来又有主机要查询相同的主机名,就不用去查询了。