首页 > 其他 > 详细

当你输入一个网址的时候,实际会发生什么

时间:2015-03-15 23:36:25      阅读:312      评论:0      收藏:0      [点我收藏+]

    下面简单列出请求过程中比较重要的步骤:

      1、在浏览器里输入网址,Enter,浏览器向DNS发送请求,查找域名对应IP

      2、浏览器根据返回的请求域名IP,加上请求端口(默认80),和请求资源(资源位置为/或者index.html之类的),组装请求后浏览器发送请求

       从输入URL到页面加载完成的过程-DNS解析域名过程

      3、传输层发现没有和目标IP建立连接,因此发起请求建立连接,发生3次握手建立TCP连接的过程

       从输入URL到页面加载完成的过程-TCP三次握手

      4、建立连接后,发送请求资源的数据包,请求类型假设是GET(只请求获取资源内容),系统经过传输层、网络层、数据链路层的层层封装,最终发出数据包

       从输入URL到页面加载完成的过程-数据包组装过程

      5、数据包在NAT设备和多个路由器上流转,经过漫长的跳转到达服务器的NAT设备,NAT根据请求端口把请求转发给内网服务器

      6、服务器接受请求后,可能直接使用缓存,也可能会把请求发到web server进行解析,最终经过服务器解析后,组装响应内容,向客户端发送响应数据。响应数据包经过网络返回到客户端NAT,并经过NAT转发后到达客户端

       7、客户端网络各层把数据包层层解包,并在应用层把数据包(数据包可能有多个,当都到达后,才会把完整的数据包给浏览器)返回给浏览器解析

       8、浏览器根据响应的HTTP头和实体内容,解析数据包。并继续请求页面中需要加载的一些其他资源,如果此时请求的资源在CDN(内容分发网络,就是在 你家附近的服务器存放有请求的这些静态资源;减少网络延迟的办法一个是使用更好的传输介质-比如光纤,一个是缩短传输距离-CDN就是利用这个),则从 CDN获取资源(过程和请求服务器资源一致,需要经过三次握手建立连接);如果是继续获取原来服务器(敲入域名对应的IP),则继续重用原来的TCP连接 (前提是使用HTTP1.1,而HTTP1.0有keep-alive头部可以达到保持连接的效果)。

      9、请求资源后,空闲一段时间没有和服务器进行交互(空闲时间是设置的,有的应用为了不断开TCP连接,会每隔一段时间发送一次请求到服务器,从而保持连 接,这样用户在发起真实的资源请求时,就可以省略TCP连接建立的过程,但是这样的连接过多会消耗服务器的资源),就会发生TCP连接关闭过程,关闭过程 会发生四次交互。

      10、TCP传输数据过程中的慢启动、拥塞预防和控制

      11、从请求交互过程总结的优化方法

       以上这些每一点都会单独写篇文章配图分析,敬请期待。文章内容参考网络资源、《HTTP权威指南》、《WEB性能权威指南》。最后说下最近的看书感受,Know hardware to design better software,了解底层能让自己看的更全面些。

当你输入一个网址的时候,实际会发生什么

原文:http://www.cnblogs.com/harder/p/4340787.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!