【计算机网络】Web请求页面全过程分析

文章目录

  • 场景描述
  • DHCP配置主机信息
  • DNS解析域名
    • ARP解析默认网关的MAC地址
  • HTTP请求页面
  • 总结

场景描述

日常生活中,我们经常会有这样的场景:你拿着自己的电脑和网线去连接学校的某台电脑来进行上网。当你通过网线将自己的电脑和学校的电脑连接之后,就可以开始上网,比如访问某个网站并得到网站内容。
这个看似简单的过程,内部其实经历了很多计算机网络之间的数据传送和协议传递。接下来对这个过程进行分析。


DHCP配置主机信息

我们为什么要通过连接网线来上网?目的就是将自己的pc接入某个以太网中然后进行连接网络。连接网线之后通过哪些工作来接入以太网呢?
这时候,需要给你的pc分配一个可以进行网络请求的ip地址,默认网关ip地址,子网关等相关信息。想要获取这些信息,就需要通过DHCP协议来获取。

  1. 这时,你的pc会生成一个DHCP请求报文,这个报文会放入包含有目的端口67和源端口68的UDP报文中,其中目的端口中存放的信息即为DHCP服务器,源端口中存放的信息即为DHCP客户端;
  2. UDP报文又会被放入IP数据报中,因为你现在并不知道给你分配的IP地址,所以IP数据报中的目的IP为广播目的IP地址(255.255.255.255),源IP地址为(0.0.0.0);
  3. IP数据报又会放入以太网帧中,以太网帧中的目的MAC地址即为广播IP地址对应的MAC地址(FF:FF:FF:FF:FF:FF),源MAC地址即为你的pc对应的MAC地址;
  4. 这时以太网帧发送给以太网交换机的帧来处理,交换机会在与其连接的所有出端口进行广播,这时与其连接的路由器也会受到这个以太网帧;路由器在它的MAC地址(假设为00:226B:45:1F:1B)的接口收到该帧后,会从中抽取出IP数据报,从而得到UDP报文段中的信息;
  5. 路由器会将这个信息转交给DHCP服务器,DHCP根据请求报文段就会生成IP地址,DNS服务器IP地址,子网掩码IP以及默认网关的IP地址,并将这些信息封装为确认报文段,并放入UDP报文段进而放入IP数据报;
  6. 生成数据报之后路由器会将这个数据报再次放入以太网帧中,此时的目的MAC地址为你的pc对应的IP地址,源MAC地址为路由器连接到归属网络时的MAC地址(00:226B:45:1F:1B);路由器将数据报交给交换机,因为交换机具有自学习能力,它知道能够将信息返回到你的pc端,必须从pc发送请求报文时源MAC地址对应的端口输出,所以它会将数据报从这个端口直接传送回你的pc;
  7. pc获得确认数据报之后,会从中一步步抽取报文段,也就得到了分配给pc的ip地址等信息。

DNS解析域名

现在,相当于连接网线成功,现在可以开始上网了,也就是可以进行网络请求了。
这时,你在浏览器的地址栏输入了一串网址,假设为www.baidu.com.
想要成功访问百度页面,就必须知道百度网站对应的ip地址,所以,现在需要用DNS协议来解析域名。
为了得到目标网站的ip地址,会生成一个DNS请求报文,其中包含了你想要访问的网址信息,并放入端口为53的UDP报文段;UDP报文又会放入IP数据报,IP数据报的目的IP地址即为DNS服务器的IP地址,源IP即为之前分配的IP地址,这时还需要默认网关的MAC地址,但是现在只知道默认网关的IP地址,并不知道MAC地址,所以这时又需要进行一个IP地址解析,需要用到ARP地址解析协议。


ARP解析默认网关的MAC地址

同理,这时会生成一个ARP请求报文,其中包含了默认网关的IP地址,并放入UDP报文段,进而进入IP数据报,IP数据报又会进入以太网帧,以太网帧中的目的MAC地址为广播目的MAC地址,交换机会对该帧进行广播,进而网关路由器会收到该帧,网关路由器会从该帧中不断抽取出ARP请求报文的信息,从而找到默认网关IP地址对应的MAC地址,并将这个地址和网关IP地址封装成确认报文并返回给PC。


此时,PC已经得到了默认网关对应的MAC地址,所以可以继续进行DNS解析域名的工作了,这时会将得到的MAC地址一并放入IP数据报中,并进入以太网帧,交换机会将其交给默认网关路由器,路由器会根据路由选择和转发的信息将以太网帧交给下一跳路由器,这个路由器将该帧交送给DNS服务器,这时,DNS服务器会从该帧中抽取出IP数据报,进而获取到DNS的请求信息,这时DNS服务器会找到域名对应的IP地址并将其封装成确认报文,然后放到IP数据报再返回给PC。


HTTP请求页面

现在PC已经获得了目标网站的IP地址,然后就可以通过TCP生成一个套接字,该套接字用于向HTTP服务器发送HTTP GET请求。
在生成套接字之前,客户端的TCP需要与服务端的TCP进行三次握手建立连接,在第三次握手之后,便可以生成一个TCP套接字。
连接建立之后,浏览器会生成一个HTTP GET请求报文,并且发送请求到HTTP服务器。
HTTP服务器接收到套接字后,会从中读取出HTTP GET请求,并根据请求将响应的Web页面内容放入响应体中一并返回给客户端。
客户端获得了Web页面的内容后,会根据内容将其渲染在页面上,这时也就有了我们期望看到的页面内容了。


总结

以上的四个主要过程,其中涉及到了一个协议栈自顶向下传送的过程,即在每一个过程中都使用到了不同的协议,其中进行的数据交换也是比较复杂的,而作为用户的我们是完全看不到,察觉不到这些变化的,所以计算机网络体系结构还是十分强大的,能够为我们提供这么方便的传送服务。

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