⼀次访问⽹页请求的全过程详解
第⼀步:浏览器输⼊域名
例如输⼊:
第⼆步:浏览器查域名的IP地址
浏览器会把输⼊的域名解析成对应的IP,其过程如下:
1. 查浏览器缓存:因为浏览器⼀般会缓存DNS记录⼀段时间,不同浏览器的时间可能不⼀样,⼀般2-30分钟不等,浏览器去查这些
缓存,如果有缓存,直接返回IP,否则下⼀步。
2. 查系统缓存:浏览器缓存中不到IP之后,浏览器会进⾏系统调⽤(windows中是gethostbyname),查本机的hosts⽂件,如果
到,直接返回IP,否则下⼀步。
3. 查路由器缓存:如果1,2步都查询⽆果,则需要借助⽹络,路由器⼀般都有⾃⼰的DNS缓存,将前
⾯的请求发给路由器,查ISP 服
务商缓存 DNS的服务器,如果查到IP则直接返回,没有的话继续查。
4. 递归查询:如果以上步骤还不到,则ISP的DNS服务器就会进⾏递归查询,所谓递归查询就是如果主机所询问的本地域名服务器不
深圳大学是几本知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的⾝份,向其他根域名服务器继续发出查询请求报⽂,⽽不是让该主机⾃⼰进⾏下⼀步查询。(本地域名服务器地址是通过DHPC协议获取地址,DHPC是负责分配IP地址的)
宋朝李纲行程码带星号怎么取消5. 迭代查询:本地域名服务器采⽤迭代查询,它先向⼀个根域名服务器查询。本地域名服务器向根域名服务器的查询⼀般都是采⽤迭代
查询。所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报⽂后,要么告诉本地域名服务器下⼀步应该查询哪⼀个域名服务器,然后本地域名服务器⾃⼰进⾏后续的查询。(⽽不是替代本地域名服务器进⾏后续查询)。
本例⼦中:根域名服务器告诉本地域名服务器,下⼀次应查询的顶级域名服务器dns的IP地址。本地域名服务器向顶级域名服务器dns进⾏查询。顶级域名服务器dns告诉本地域名服务器,下
⼀次应查询的权限域名服务器dns.csdn的IP地址。本地域名服务器向权限域名服务器dns.csdn进⾏查询。权限域名服务器dns.csdn告诉本地域名服务器,所查询的主机
www.csdn的IP地址。本地域名服务器最后把结果告诉主机。取长补短的故事
第三步:浏览器与⽬标服务器建⽴TCP连接
1. 主机浏览器通过DNS解析得到了⽬标服务器的IP地址后,与服务器建⽴TCP连接。
2. TCP3次握⼿连接:浏览器所在的客户机向服务器发出连接请求报⽂(SYN标志为1);服务器接收报⽂后,同意建⽴连接,向客户机
发出确认报⽂(SYN,ACK标志位均为1);客户机接收到确认报⽂后,再次向服务器发出报⽂,确认已接收到确认报⽂;此处客户机与服务器之间的TCP连接建⽴完成,开始通信。
第四步:浏览器通过http协议发送请求
第五步:某些服务会做永久重定向响应
对于⼤型⽹站存在多个主机站点,了负载均衡或者导⼊流量,提⾼SEO排名,往往不会直接返回请求
页⾯,⽽是重定向。返回的状态码就不是200OK,⽽是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报⽂中Location项到重定向地址,浏览器重新第⼀步访问即可。
重定向的作⽤:重定向是为了负载均衡或者导⼊流量,提⾼SEO排名。利⽤⼀个前端服务器接受请求,然后负载到不同的主机上,可以⼤⼤提⾼站点的业务并发处理能⼒;重定向也可将多个域名的访问,集中到⼀个站点;由于baidu,www.baidu会被搜索引擎认为是两个⽹站,照成每个的链接数都会减少从⽽降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同⼀个⽹站,从⽽提⾼排名。
第六步:浏览器跟踪重定向地址
当浏览器知道了重定向后最终的访问地址之后,重新发送⼀个http请求,发送内容同上。
第七步:服务器处理请求
服务器接收到获取请求,然后处理并返回⼀个响应。
第⼋步:服务器发出⼀个HTML响应
返回状态码200 OK,表⽰服务器可以响应请求,返回报⽂,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,⽽不是下载⽂件。
第九步:释放TCP连接
1. 浏览器所在主机向服务器发出连接释放报⽂,然后停⽌发送数据;
2. 服务器接收到释放报⽂后发出确认报⽂,然后将服务器上未传送完的数据发送完;
3. 服务器数据传输完毕后,向客户机发送连接释放报⽂;
坏蛋神仙4. 客户机接收到报⽂后,发出确认,然后等待⼀段时间后,释放TCP连接;
第⼗步:浏览器显⽰页⾯
在浏览器没有完整接受全部HTML⽂档时,它就已经开始显⽰这个页⾯了,浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进⾏渲染。渲染后的数据,进⾏相应的页⾯呈现和脚步的交互。
党员评议自我鉴定第⼗⼀步:浏览器发送获取嵌⼊在HTML中的其他内容
⽐如⼀些样式⽂件,图⽚url,js⽂件url等,浏览器会通过这些url重新发送请求,请求过程依然是HTML读取类似的过程,查询域名,发送请求,重定向等。不过这些静态⽂件是可以缓存到浏览器中
的,有时访问这些⽂件不需要通过服务器,直接从缓存中取。某些⽹站也会使⽤第三⽅CDN进⾏托管这些静态⽂件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论