关闭

计算机网络-Web页请求的历程

标签: 计算机网络dns服务器路由器以太网
479人阅读 评论(0) 收藏 举报
分类:

这里写图片描述

准备:DHCP/UDP/IP和以太网

启动主机MacBook,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此IPS还提供了DNS服务.所以DNS服务器驻留在Comcast网络中而不是学校网络中.假设DHCP服务器运行在路由器中.

当主机与网络连接时,没有IP地址就不能做任何事情,例如下载一个Web网页.所以主机采取的一个网络相关的动作是运行DHCP协议,以从本地的DHCP服务器获得一个IP地址以及其他信息.

  1. 系统生成一个DHCP请求报文(动态主机配置协议),并将这个报文放入具有目的地端口67(DHCP服务器)和源端口68(DHCP客户)的UDP报文段.该UDP报文段则被放置在一个具有广播IP目的地址(255.255.255.255)和源IP地址(0.0.0.0)的IP数据报中,因为此时主机还不具有IP地址.
  2. 包含DHCP请求报文的IP数据报则被放置在以太网帧中.该以太网帧具有目的MAC地址(FF:FF:FF:FF:FF:FF),使该帧将广播到与交换机连接的所有设备,如果顺利的话也包括DHCP服务器(路由器),该帧的源MAC地址是00:16:D3:23:68:8A.
  3. 包含DHCP请求的广播以太网帧是第一个由MacBook发到以太网交换机的帧,该交换机在所有的出端口广播帧,包括连接到路由器的端口.
  4. 路由器在它的具有MAC地址00:22:6B:45:1F的接口接收到该广播的以太网帧,该帧中包含DHCP请求,并且从该以太网帧中抽取出IP数据包.该数据报的广播目的地址指示了这个IP数据报应当由该结点的高层协议处理,因此该数据报的载荷一个UPD报文段被分解向上达到UDP,DHCP请求报文从此UDP报文段中抽取出来,此时DHCP服务器有了DHCP请求报文.
  5. 假设运行的路由器中的DHCP服务器能够以CIDR(无类别域间路由选择)块68.85.2.0/24分配IP地址.所以,MacBook地址在Comcast地址块中.假设DHCP服务器分配地址68.85.2.101给MacBook.DHCP服务器生成包含这个IP地以及DNS服务器的IP(68.87.71.226)/默认网关路由器的IP地址(68.85.2.1)和子网块(68.85.2.0/24网络掩码)的一个DHCP ACK报文.该DHCP报文被放入一个UDP报文段中,UDP报文段被放入一个IP数据报中,IP数据报再被放入一个以太网帧中.一个以太网帧的源MAC地址是路由器连接到归属网络时接口的MAC地址(00:22:6B:45:1F:1B),目的MAC地址是MacBook的MAC地址(00:16:D3:23:68:8A).
  6. 包含DHCP ACK的以太网帧由路由器发给交换机.因为交换机是自学习的,并且先前从DHCP请求的以太网帧,所以交换机知道寻址到00:16:D3:23:68:8A的帧仅通过MacBook的输出端口转发.
  7. MacBook收到包含DHCP ACK的以太网帧,从该以太网帧中抽取IP数据报,从IP数据报中抽取UDP报文段,从UDP报文段中抽取DHCP ACK报文.MacBook则记录下它的IP地址和它的DNS服务器的IP地址.它还在其IP转发表中安装默认网关地址.

仍在准备: DNS和ARP

当在浏览器把www.goole.com的URL输入到Web浏览器中时,开启了一串事件,这将导致谷歌主页最终显示在Web浏览器上.Web浏览器通过生成一个TCP套接字开始该过程,套接字用于向www.google.com发送HTTP请求.为了生成该套接字,需要知道www.google.com的IP地址.需要使用DNS协议提供这种名字到IP地址的转换服务.

  1. MacBook操作系统因此生成一个DNS查询报文,将字符串www.google.com放入DNS报文的问题段中.该DNS报文则放置在一个具有53号(DNS服务器)目的端口的UDP报文段中.该UDP报文段则被放入具有IP目的地址68.87.71.226和源IP地址68.85.2.101的IP数据报中.
  2. MacBook则将包含DNS请求报文的数据报IP放入到一个以太网帧中.该帧将发送到网络中的网关路由器.然而,即使MacBook虽然获取了网关路由器的IP地址(68.85.2.1),但仍不知道该网关路由器的MAC地址.为了获得该网关路由器的MAC地址,需要使用ARP(地址解析协议)协议.
  3. MacBook生成一个具有目的IP地址68.85.2.1(默认网关)的ARP查询报文,将该ARP报文防止在一个具有广播目的地址(FF:FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器.
  4. 网关路由器在接口上收到包含该ARP查询报文的帧,发现ARP报文中目的地址IP地址68.85.2.1匹配接口的IP地址.网关路由器因此准备一个ARP回答,指示它的MAC地址00:22:6B:45:1F:1B对应地址.68.85.2.1,它将ARP回答放在一个以太网帧中,其目的地址为00:16:D3:23:68:8A,并向交换机发送该帧,再由交换机将该帧交付给MacBook.
  5. MacBook接收包含ARP回答报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址(00:22:6B:45:1F:1B)
  6. MacBook能够包含DNS查询的以太网帧寻址到网关路由器的MAC地址.注意,该帧中的IP数据报具有IP目的地址68.87.71.226(DNS服务器),而该帧具有目的地址00:22:6B:45:1F:1B(网关路由器).MacBook像交换机发送包含DNS报文的帧,交换机将该帧交付给网关路由器.

仍在准备:域内路由选择到DNS服务器

  1. 网关路由器接收该帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的目的地址(68.87.71.226),并根据其转发表决定该数据报应当发送到Comcast网络最左侧的路由器。
  2. 在Comcast网络中最左侧的路由器接收到该帧,抽取IP数据报,检查该数据报的目的地址(68.87.71.226),并根据其转发表确定出接口,经过该接口朝着DNS服务器转发数据报,而转发表已经根据域内协议以及金特网的域间协议BGP所填写。
  3. 最终包含DNS查询的IP数据报到达了DNS服务器。DNS服务器抽取出DNS查询报文,在它的DNS数据库中查找名字www.google.com,找到包含对应www.google.com的IP地址(64.233.169.105)的DNS源记录。(假设是当前缓存在DNS服务器中)。这种缓存数据源于google.com权威DNS服务器。该DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,该报文段放入寻址(68.85.2.101)的IP数据报中。该数据报将通过路由器反向转发到学校的路由器,并从这里进过以太网交换机到MacBook的主机。
  4. MacBook主机从DNS报文中取出服务器www.google.com的IP地址。

Web客户-服务器交互:TCP和HTTP

  1. 既然MackBook有了www.google.com的IP地址,它能够生成TCP套接字,该套接字将用于向www.google.com发送HTTP GET报文。当生成TCP套接字时,MacBook的TCP必须首先与www.google.com中的TCP执行三次握手。MacBook因此首先生成一个具有目的端口80(针对HTTP的)的TCP SYN报文段,将该TCP报文段放置在具有目的IP地址(64.233.169.105 www.google.com)的IP数据报中,将该数据报放置在MAC地址为00:22:6B:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧。
  2. 在学校网络,Comcast网络和谷歌网络中的路由器朝着www.google.com转发包含TCP SYN的数据报,使用每台路由器中的转发表。支配分组经comcast和 谷歌网络之间域间链路转发的路由器转发表项,是由BGP(自治系统间路由选择)协议决定的。
  3. 最终,包含TCP SYN的数据报到达www.google.com。从数据报抽取出TCP SYN报文并分解到与端口80相联系的欢迎套接字。然后产生一个TCP SYNACK报文段,将其放入想MacBook寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com链接到第一跳路由。
  4. 包含TCP SYNACK报文段的数据报通过谷歌,comcast和学校网络,最终达到MacBook的以太网卡。数据报在操作系统中分解到TCP套接字,从而进入链接状态。
  5. 现在准备向www.google.com发送字节了,浏览器生成包含获取的URL的HTTP GET报文。HTTP GET报文则写入套接字,其中GET报文成为一个TCP报文段的载荷。该TCP报文段放入一个IP数据报中,并交付到www.google.com。
  6. 在www.google.com的HTTP服务器从TCP套接字中读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web网页放入到HTTP响应体中,并报文发送进TCP套接字中。
  7. 包含HTTP回答报文的数据报通过谷歌,comcast和学校网络进行转发,到达MacBook。浏览器从套接字中读取HTTP响应,从HTTP响应体中抽取Web网页的html,并最终显示了web网页。
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:301971次
    • 积分:4630
    • 等级:
    • 排名:第6748名
    • 原创:175篇
    • 转载:8篇
    • 译文:0篇
    • 评论:142条
    博客专栏
    最新评论