Web请求过程

2.1  B/S网络架构简述

B / S网络结构是基于一个统一的应用层协议HTTP来交换数据,与用长连接交互模型的大部分C / S架构的应用程序不同的是,使用无状态的短连接的通信HTTP协议。典型地,一个请求完成数据交互,然后该通信连接被切断。

当一个用户在浏览器里输入一个URL时,首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发起一个请求,由这个服务器决定返回默认的数据资源给访问用户。在服务器端实际上还有很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户请求。还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是数据库中。当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSS、JS或者图片)时又会发起另外的HTTP请求,而这些请求可能会在CDN上,那么CDN服务器又会处理这个用户的请求。

2.2  HTTP请求本质

发起一个HTTP请求的过程就是建立一个Socekt通信的过程。只不过outputStream.write写的二进制数据格式要符合HTTP协议。浏览器在建立Socket连接之前,必须根据地址栏里输入的URL的域名DNS解析出IP地址,再根据这个IP地址和默认80端口与远程服务器建立Socket连接,然后浏览器根据这个URL组装成一个get类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStram.read返回数据,最后断开这个连接。HTTP协议处于应用层,建立HTTP连接必然会发起TCP的3次握手,然后建立TCP连接。而这里说的Socket概念是方面编程的,它处于应用层和传输层之间。

一个完整的HTTP请求包括如下内容:

一个请求行、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。请求行用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号。息头用于描述客户端请求哪台主机,以及客户端的一些环境信息等。

一个完整的HTTP响应包括如下内容:

一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。状态行用于描述服务器对请求的处理结果。消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可

以通知客户端如何处理回送的数据。实体内容代表服务器向客户端回送的数据。

2.3  DNS域名解析

在URL中的域名需要解析成IP地址才能与远程主机建立连接。DNS的工作范畴就是将域名解析成IP地址当一个用户在浏览器中输入www.abcd.com时,DNS解析将会有如下几个步骤

1.   浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,解析过程结束。

2.   如果用户的浏览器缓存中没有,浏览器会查找操作系统中是否有这个域名对应的DNS解析结果。其实操作系统也会有一个域名解析的过程,再Windows中通过C:\Windows\Systems32\drivers\etc\hosts文件来设置。浏览器首先会使用这个配置信息。在Linux中这个配置文件是/etc/named.conf,如果在本机中无法完成域名解析,也就是意味着缓存没命中,就会真正请求域名服务器来解析这个域名了。

3.   操作系统把这个域名发送到本地区的域名服务器(LDNS)。

4.   如果LDNS依然没有命中,就直接到Root Server域名服务器请求解析。

5.   根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLDServer)地址。gTLD是国际顶级域名服务器,如.com、.cn、.org等。

6.   本地域名服务器再向上一步返回的gTLD服务器器发送请求。

7.   接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个NameServer通常就是你注册的域名服务器。

8.   Name Server域名服务器会查询存储的域名和IP的映射关系表。

9.   返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

10. 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中。

2.4  CDN简介

CDN就是内容分布网络(Content Delivery Network),它是构筑在现有Internet上的一种先进的流量分配网络。其目的是通过现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络。CDN = 镜像 + 缓存 + 整体负载均衡

目前CDN都以缓存网站中的静态数据为主,如CSS、JS、图片和静态页面等数据。用户在从主站服务器请求到动态内容后再从CDN上下载这些静态数据,从而加速网页数据内容的下载速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值