Web请求的背后——计算机网络到底做了哪些事?

一、引言

         我们每天都会上网冲浪,每天都额会打开Web网页。不论是手机,还是使用电脑,我们总会浏览新闻、看视频、查资料等等。

这些都是通过Web浏览器实现的,那么我们每天都接触到它,那么有没有想过它到底是如何从地域的这一头找到另一头的服务器,

然后请求你所需要的内容呢?一次看似简单的Http请求,背后其实做了很多你并不知道的事情。学习了计算机网络之后,我发现:

原来是这样!原来还可以这样!噢,就这样。      

         因为最近都在各种协议之间徘徊和困扰,计算机网络的协议真NM多的一B,实在让人看不下去。

         后来根据经典——《计算机网络:自顶向下的方法》整理了一下书上的思路,根据一次Web请求使用到的各种协议和发生的

动作,画了一个拓扑图。



二、Web网络拓扑图

       

        下面这张图是我根据一次Web请求(分配IP地址)所画的网络拓扑图。

        

        假设以下条件:

         (1)请求的地址是www.baidu.com,

         (2)而且我们现在是从川大发出去的请求,川大校园有一台本地的DNS服务器。

         (3)有以下自制系统:AS1、AS2、AS3、AS4

         (4)我们接入的网络是以太网

         (5)假设Host文件里面没有存储DNS解析信息,需要询问DNS服务器来获得目的域名的解析IP

 

     Web请求的背后——计算机网络到底做了哪些事?_第1张图片

 


三、Web请求所经历的过程

     其实,感觉计算机网络就是现实生活的一个映射。比如:邮局邮件的发送过程、旅游全过程、快递全过程等等。都跟计算机网络采取的

   方式如出一辙。

          下面我举一个旅游的例子来说明一下。呃,就大概意思意思吧,感觉不是太符合,将就用一下。大神直接略过。

          就像我们去旅游一样,得先有目的地(IP),然后才能出发吧。但是出发之前我们是不是还得准备一下行李(自己的IP等信息)吧,然

   后再去订票:火车、机票、船票、汽车票(不同应用层协议);上车的时候要检票、排队、上车等过程(层层封装);火车、汽车、船、飞

机在各个大小站会有中途停顿的时候(网关、路由器、交换机),乘客或者换乘(路由)、或者下车(送至上一层解析);然后继续行驶,最

后到站下车,检票、排队、出站(层层递交)。最后到达目的地,开始高大上的旅程了!

          

        发送请求的前提条件是:获得本机IP和目标IP

         因此,在正式发送HTTP请求前,需要通过一系列的协议来查询本地IP、目的域名的IP。同时,获得目的域名IP之后,又通过一系列的路

由协议来将信息发送到指定的IP,从而达到双方联通交换数据的目的! 

      大致的历程(建立在上面的网络拓扑图基础上):

      

      (1)DHCP请求IP地址分配及子网、网关IP、DNS服务器IP信息——>

      (2)发送DNS解析请求至网关(外网需获得网关MAC),网关路由至DNS服务器,进行DNS解析——>

      (3)建立TCP连接,发送HTTP请求——>

      (4)返回Web页面对象 ,并显示 。


       历程分解       

   (1) DHCP请求:获得本机IP和本地DNS服务器IP

         动作

              1、以太网链路连接

              2、DHCP报文准备(该时刻主机并不知道子网网段网关IP本机IP等信息,因此,必须要用特殊的广播到达路由器以获上述信息)

              3、UDP准备

              4、IP报文准备(具有广播性质,源IP:0.0.0.0  目的:255.255.255.255只能被网关截获——特殊的广播

              5、以太网帧准备,然后广播

              6、交换机将信息传到所有临近接口(包括路由器)。

              7、路由器接收并解析,生成DHCP ACK报文返回路由器端口IP、本地DNS服务器地址、主机地址、子网网段信息。


        协议和技术

             1、以太网:链路层帧传输

             2、DHCP:主机IP分配

             3、RIP:自治系统内部路由

             4、UDP:传输层不可靠传输协议,DHCP建立在UDP之上

             5、IP:网络层IP段报文

             6、NAT(如果有NAT转换的话):专用网络地址转换

             7、MAC:链路层寻址

    

    

     (2) DNS请求:解析目的URL的IP地址

         我们知道,在发送HTTP请求之前,先要获得目标网址的的IP。同时在发送DNS请求之前,我们先要获得网关路由器的MAC地址,因为

在子网内部室通过MAC地址来交换数据的,如果直接发送外网的IP地址或者MAC地址,交换机会直接丢弃!因此先要获得网关路由器的MAC

地址,将DNS求发送到网关,然后由网关来发送DNS请求导本地DNS 务器。

          动作

                1、主机生成一个HTTP请求,假设目的网址为:www.baidu.com

                2、生成ARP查询报文(使用2.1获得的网关IP),获得网关MAC地址

                3、生成DNS请求(此时已经有了网关MAC和DNS的IP),请求解析目的域名IP,向网关发送!

                4网关收到DNS请求,将DNS请求拆封,查看目的IP信息(DNS服务器地址),通过转发表路由表选择相应出口打包并发送。

                5本地DNS服务器接收到DNS请求。查询缓存,如果有该地址则返回,否则请求根服务器,然后可以采用两种方法:迭代递归

                        以此查询顶级域名DNS服 器、权威DNS服务器等等。直到获得目标地址。

                6、本地DNS服务器将获得的目标IP信息封装到DNS报文中,返回给主机。

       协议和技术

               1、以太网:链路层帧传输

               2、RIP:自治系统内部路由

               3、BGP:自治系统之间路由

               4、HTTP(只是包装了信息,还未完成TCP连接)

               5、UDP :传输层不可靠传输协议,DNS建立在UDP之上

               6、DNS:域名解析系统协议

               7、IP:网络层IP段报文

               8、MAC:链路层寻址

      


    (3)HTTP请求:建立TCP连接,请求Web页面信息

             此时已经获得了目标的IP:119.75.218.70(www.baidu.com)

             可以建立HTTP请求了。

        动作

               1、发送HTTP GET报文

               2、建立TCP连接:使用获得的目的IP

               3、三次握手(1、SYN   2、ACK    3、具体请求)

               4、百度Web服务器返回Web页面对象

     

        协议和技术

              1、以太网:链路层帧传输

              2、RIP:自治系统内部路由

              3、BGP:自治系统之间路由

               4、HTTP:应用层超文本传输协议

              5、TCP:可靠数据传输协议,HTTP建立在它之上,保证数据可靠交付

               6、IP:网络层IP段报文

              7、MAC:链路层寻址

      


 

     (4)加载web并解析Web对象,显示

 

   

         第四步完成之后,我们就看到了熟悉的百度一下搜索框啦。其实在网速不错的情况下,这些动作只是一秒钟的事

   情我们根本无法察觉到。之前在没有了到解和学习计算机网络的时候,只是知道有了IP和端口就能够发送数据,但是并

   不知道IP从哪里获得?又是怎么获得的?那么多的电脑是如何寻址的?计算机网络又是如何划分不同区域的电脑IP?

   等等问题都并没有想过,也不知道答案。学习了计算机网络之后,才对这些有了一定的了解。便记下来了,希望与大

   家分享,大神请不要见笑。

    

      参考书籍:《计算机网络:自顶向下的方法》

 

你可能感兴趣的:(Web,网络,计算机,计算机网络)