一、访问网站的基本流程

    第一步:客户端用户在浏览器输www.51cto.com网站,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.51cto.com余名对应的IP解析记录,如果有就直接获取IP地址,然后去访问这个IP地址对应余名www.51cto.com的服务器。一般第一次请求的时候,DNS缓存是没有解析记录的,而hosts躲在内部临时测试时使用。

    第二步:如果客户端本地DNS缓存及hosts文件没有www.51cto.com余名对应的解析记录,那么,系统会把浏览器的解析请求发送给客户端本地设置的DNS服务器地址(称为LDNS)解析,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端;如果没有,则LDNS会负责继续请求其他的DNS服务器。

    第三步:LDNS从DNS系统的根开始请求对www.51cto.com余名的解析,并针对各个层级的DNS服务器系统进行一系列的查找,最终会查找到51cto.com域名对应的授权DNS服务器,而这个授权DNS服务器正式企业购买域名时用于管理域名解析的服务器,这个授权服务器会有www.51cto.com对应的IP解析记录。如果此时没有,就表示企业的域名管理人员没有为www.51cto.com域名做解析设置,即网站还没有架设好。

    第四步:51cto.com余名的授权DNS服务器会把www.51cto.com对应的最终IP解析记录发给LDNS。

    第五步:LDNS把来自授权DNS服务器的www.51cto.com对应的IP解析记录发给客户端浏览器,并且它会把该域名和IP地址的对应解析缓存起来,以便下一次更快的返回相同解析请求的记录,这些缓存记录在指定的时间(DNS TTL)内不会过期。

    第六步:客户端浏览器获取了www.51cto.com对应的IP地址,接下来,浏览器会请求获得IP地址对应的网站服务器,网站服务器接收到客户的请求并响应处理(此处的处理可能是数百台集群的服务器系统,也可能是一台云主机),将客户请求的内容返回给客户端浏览器。至此,一次访问浏览网页的完整过程也就完成了。

    附:

(1)查看windows客户端的本地缓存记录:

ifconfig /displaydns

(2)清楚Windows客户端本地缓存DNS记录:

ifconfig /flushdns

(3)Windows系统下的hosts域名解析记录位置:

C:\Windows\System32\drivers\etc\hosts

二、DNS系统解析基本流程

DNS简介

A记录----把余名解析为对应的IP地址。

CNAME别名记录--别名解析功能常备CDN加速服务商应用

MX邮件记录--MX记录功能,在购买或搭建邮件服务器时会被用到

PTR记录--反向解析,即把IP地址解析为对应域名,和A记录的解析相反,此功能在邮件服务业务中会用

DNS解析流程图

通过dig命令来实践理解DNS解析流程

[root@alon ~]# dig +trace www.51cto.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> +trace www.51cto.com;; global options: +cmd.            47942    IN    NS    j.root-servers.net..            47942    IN    NS    f.root-servers.net..            47942    IN    NS    b.root-servers.net..            47942    IN    NS    h.root-servers.net..            47942    IN    NS    e.root-servers.net..            47942    IN    NS    g.root-servers.net..            47942    IN    NS    k.root-servers.net..            47942    IN    NS    l.root-servers.net..            47942    IN    NS    m.root-servers.net..            47942    IN    NS    i.root-servers.net..            47942    IN    NS    c.root-servers.net..            47942    IN    NS    a.root-servers.net..            47942    IN    NS    d.root-servers.net.;; Received 228 bytes from 192.168.0.1#53(192.168.0.1) in 54 ms## a-m一共13个DNS服务器,j.root-servers.net根DNS负责了此处的解析com.            172800    IN    NS    a.gtld-servers.net.com.            172800    IN    NS    b.gtld-servers.net.com.            172800    IN    NS    c.gtld-servers.net.com.            172800    IN    NS    d.gtld-servers.net.com.            172800    IN    NS    e.gtld-servers.net.com.            172800    IN    NS    f.gtld-servers.net.com.            172800    IN    NS    g.gtld-servers.net.com.            172800    IN    NS    h.gtld-servers.net.com.            172800    IN    NS    i.gtld-servers.net.com.            172800    IN    NS    j.gtld-servers.net.com.            172800    IN    NS    k.gtld-servers.net.com.            172800    IN    NS    l.gtld-servers.net.com.            172800    IN    NS    m.gtld-servers.net.;; Received 491 bytes from 198.97.190.53#53(198.97.190.53) in 352 ms##解析com的一共有13个DNS服务器,.com的a.gtld-servers.net负责了此处解析51cto.com.        172800    IN    NS    ns1.dnsv2.com.51cto.com.        172800    IN    NS    ns2.dnsv2.com.;; Received 249 bytes from 192.54.112.30#53(192.54.112.30) in 272 ms##解析  ns1.dnsv2.com负责了最终A记录解析www.51cto.com.        600    IN    CNAME    web.dns.51cto.com.web.dns.51cto.com.    600    IN    CNAME    gf.dns.51cto.com.gf.dns.51cto.com.    600    IN    A    218.11.0.9151cto.com.        86400    IN    NS    ns2.dnsv2.com.51cto.com.        86400    IN    NS    ns1.dnsv2.com.;; Received 162 bytes from 115.236.151.178#53(115.236.151.178) in 139 ms

附:

    常用的HTTP请求方法

HTTP方法 作用描述
GET
客户端请求指定资源信息,服务器返回指定资源
HEAD
只请求响应保温中的HTTP首部
POST
将客户端的数据提交到服务器,例如注册表单
PUT
用从客户端向服务器传送的数据取代指定的文档内容
DELETE
请求服务器删除Request-URI所标识的资源
MOVE
请求服务器将指定的页面移至另一个网络地址

不同范围的状态码及其对应的应用

状态码范围 作用描述
100-199
用于指定客户端响应相应的某些动作
200-299
用于表示请求成功
300-399
用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息
400-499
用于指出客户端的错误
500-599
用于指出服务器的错误

工作环境中常见的状态码及对应的作用
状态代码
详细描述说明
200-OK
服务器成功返回网页,这是成功的HTTP请求返回标准状态码
301-Moved Permanently
永久跳转,所请求的网页将永久跳转到被设定的新位置,例如:从www.baidu.com跳转到www.qq.com
403-Forbidden
禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务器权限配置不当所致
404-Not Found
服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致
500-Internal Server Error
内部服务错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个笼统的报错,一般为服务器的设置或内部程序问题导致。例如:SELinux开启,而有没有为HTTP设置规则许可,客户端访问就是500
502-Bad Gateway
坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致
503-Service Unavailable
服务当前不可用,可能是服务器超载或停机维护导致,或者是反向代理服务器后面没有可以提供服务的节点
504-Gateway Timeout
网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定时间内返回数据给前端代理服务器

可以通过curl 命令在Linux命令行查看HTTP响应的数字状态码:

[root@alon ~]# curl -I wwww.baidu.comHTTP/1.1 302 Found   ##302 即为状态码 Date: Sat, 01 Oct 2016 14:56:01 GMTServer: ApacheLocation: http://www.baidu.com/Cache-Control: max-age=86400Expires: Sun, 02 Oct 2016 14:56:01 GMTConnection: Keep-AliveContent-Type: text/html; charset=iso-8859-1[root@alon ~]# curl -I -s -w %{http_code} -o /dev/null www.baidu.com200   ##200即是状态码