我是靠谱客的博主 殷勤大侠,最近开发中收集的这篇文章主要介绍[计算机网络]-Web 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

场景

Bob 将他的 PC 与学校的以太网交换机相连,下载一个 Web 页面,这里以 www.google.com 主页为例

准备-DHCP,…

Bob 启动他的 PC,将其用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连。学校的路由器又与一个 ISP 连接。我们假设 DHCP 服务器运行在路由器中,常见情况也是这样

当 Bob 将其 PC 与网络相连后,没有 IP 地址他就不能做任何事情,因此,PC 所采取的一个动作是运行 DHCP 协议以从本地 DHCP 服务器获得一个 IP 地址以及其它信息

  1. Bob 的 PC 上的 OS 生成一个 DHCP 请求报文,并将这个报文放入具有源端口 68,目的端口 67 的 UDP 报文段。该报文段则被放置在一个目的 IP 地址为广播地址 255.255.255.255 和源 IP 地址为 0.0.0.0 的 IP 数据报中
  2. 包含 DHCP 请求报文的 IP 数据报则被放置在 以太网帧 中,该以太网帧的目的 MAC 地址为广播地址 FF:FF:FF:FF:FF:FF,使该帧将被广播到与交换机相连的所有设备;源 MAC 地址则为 Bob 的 PC 的 MAC 地址
  3. 包含 DHCP 请求报文的广播以太网帧是第一个由 Bob 的 PC 发送到以太网交换机的帧,该交换机在所有的出端口广播这个帧,当然就包括连接到学校路由器的端口
  4. 路由器适配器接收到该帧后,首先抽取出 IP 数据报,IP 数据报再进一步抽取出数据字段,即 UDP 报文段并向上到达 UDPDHCP 请求报文再从 UDP 报文段中抽取出来,此时 DHCP 服务器就拿到了 DHCP 请求报文
  5. DHCP 服务器从持有的 CIDR 地址块中分配一个 IP 地址给 Bob 的 PC,然后生成包含这个 IP 地址,DNS 服务器的 IP 地址, 默认网关路由器的 IP 地址以及 子网块,即子网掩码的 DHCP ACK 报文。再将该 DHCP ACK 报文放入一个 UDP 报文段中,UDP 报文段放入 IP 数据报中,IP 数据报再放入一个以太网帧中,然后发送该帧,目的 MAC 地址为 Bob 的 PC 的 MAC 地址
  6. 当帧到达交换机后,由于 交换机 是自学习的,而且先前已经从 Bob 的 PC 收到了以太网帧,所以交换机知道该帧要往哪个端口转发
  7. Bob 的 PC 接收到这个帧后,一层一层抽取出 DHCP ACK 报文,然后 PC 上的 DHCP 客户端则记录下它的 IP 地址和它的 DNS 服务器的 IP 地址,还在 IP 转发表中记录默认网关的地址

至此,PC 已经初始化好它的网络组件
PS:DHCP实际上完整的步骤为四步,但我们可以注意到,只有最后两个步骤是实际必要的

开始请求-DNS,ARP,…

  1. 当 Bob 将 www.google.com 这个 URL 键入到浏览器并回车后将开启一长串事件。首先,OS 将生成一个 DNS 查询报文,将所输入的域名放入 DNS 报文的问题段中。该 DNS 报文则放置在一个目的端口为 53 的 UDP 报文段中,该 UDP 报文段则被放入目的 IP 地址为一开始 DHCP 所获取到的 DNS 服务器的 IP 地址,以及源 IP 地址为一开始 DHCP 所获取到的 PC 的 IP 地址的 IP 数据报中
  2. PC 将包含 DNS 请求报文的 IP 数据报放入一个以太网帧中,该帧将发送到网关路由器。但此时 PC 并不知道该网关路由器的 MAC 地址,为了获得其 MAC 地址,PC 需要使用 ARP 协议
  3. PC 生成一个目的 IP 地址为默认网关路由器的 ARP 查询报文,将该 ARP 报文放置在一个目的地址为广播地址 FF:FF:FF:FF:FF:FF 的以太网帧中,并向交换机发送该帧,该帧将被交换机交付给所有连接的设备,包括网关路由器
  4. 网关路由器接收到该帧后,发现 ARP 报文中目的 IP 地址与其接口的 IP 地址匹配,于是生成一个 ARP 回答报文,放入自己的 MAC 地址,目的地址为 PC 的 MAC 地址,然后发送该帧
  5. PC 接收到该帧后,抽取出 ARP 回答报文并从中抽取出网关路由器的 MAC 地址
  6. 然后 PC 就可以将包含 DNS 查询的 以太网帧寻址到网关路由器的 MAC 地址
  7. 网关路由器接收到该帧,抽取出 IP 数据报,根据目的 IP 地址,即 DNS 服务器的地址,以及转发表将该数据报转发到其它路由器,其它路由器也会根据目的地址以及自身的转发表选择哪个输出接口进行转发。其中路由器的转发表根据域内协议 RIPOSPF 以及 因特网域间协议 BGP 所填写
  8. 最终,包含 DNS 查询的 IP 数据报到达 DNS 服务器。DNS 服务器从 DNS 查询报文中取出域名 www.google.com 并在它的 DNS 数据库中查找这个域名,找到包含对应 IP 地址的 DNS 源记录。然后将这个映射关系放到一个 DNS 回答报文中发送到 PC
  9. PC 接收到这个 DNS 回答报文后从中抽取出域名 www.google.com 对应的 IP 地址,接下来就可以进入源客户与目的服务器的交互过程了

客户服务器交互-TCP,HTTP,…

  1. PC 知道了域名 www.google.com 的 IP 地址,就能够生成自己与服务器之间的套接字连接,再使用套接字向服务器发送 HTTP GET 报文
  2. TCP 套接字生成过程需要 三次握手
  3. 当三次握手完成之后,PC 上的浏览器生成包含要获取的 URL 的 HTTP GET 报文,然后该报文写入套接字,成为一个 TCP 报文段的载荷,最后交付到目的服务器
  4. 目的 HTTP 服务器从套接字中读取到 HTTP GET 报文,然后生成 HTTP 响应报文,将源客户所请求的资源放入 HTTP 响应体,并将报文发送进 TCP 套接字
  5. 包含 HTTP 回答报文的数据报通过网络转发到达 PC,浏览器从套接字中读取 HTTP 响应,并从中抽取 Web 资源,即网页,最终显示到浏览器上

最后

以上就是殷勤大侠为你收集整理的[计算机网络]-Web 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…的全部内容,希望文章能够帮你解决[计算机网络]-Web 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部