我是靠谱客的博主 殷勤大侠,这篇文章主要介绍[计算机网络]-Web 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…,现在分享给大家,希望可以做个参考。
场景
Bob 将他的 PC 与学校的以太网交换机相连,下载一个 Web 页面,这里以 www.google.com 主页为例
准备-DHCP,…
Bob 启动他的 PC,将其用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连。学校的路由器又与一个 ISP 连接。我们假设 DHCP 服务器运行在路由器中,常见情况也是这样
当 Bob 将其 PC 与网络相连后,没有 IP 地址他就不能做任何事情,因此,PC 所采取的一个动作是运行 DHCP 协议以从本地 DHCP 服务器获得一个 IP 地址以及其它信息
- Bob 的 PC 上的 OS 生成一个
DHCP请求报文,并将这个报文放入具有源端口 68,目的端口 67 的UDP报文段。该报文段则被放置在一个目的 IP 地址为广播地址 255.255.255.255 和源IP地址为 0.0.0.0 的 IP 数据报中 - 包含 DHCP 请求报文的 IP 数据报则被放置在 以太网帧 中,该以太网帧的目的 MAC 地址为广播地址 FF:FF:FF:FF:FF:FF,使该帧将被广播到与交换机相连的所有设备;源 MAC 地址则为 Bob 的 PC 的 MAC 地址
- 包含
DHCP请求报文的广播以太网帧是第一个由 Bob 的 PC 发送到以太网交换机的帧,该交换机在所有的出端口广播这个帧,当然就包括连接到学校路由器的端口 - 路由器适配器接收到该帧后,首先抽取出
IP数据报,IP数据报再进一步抽取出数据字段,即UDP报文段并向上到达UDP,DHCP请求报文再从UDP报文段中抽取出来,此时DHCP服务器就拿到了DHCP请求报文 DHCP服务器从持有的CIDR地址块中分配一个IP地址给 Bob 的 PC,然后生成包含这个IP地址,DNS服务器的IP地址, 默认网关路由器的IP地址以及 子网块,即子网掩码的 DHCP ACK 报文。再将该 DHCP ACK 报文放入一个UDP报文段中,UDP报文段放入IP数据报中,IP数据报再放入一个以太网帧中,然后发送该帧,目的MAC地址为 Bob 的 PC 的MAC地址- 当帧到达交换机后,由于 交换机 是自学习的,而且先前已经从 Bob 的 PC 收到了以太网帧,所以交换机知道该帧要往哪个端口转发
- Bob 的 PC 接收到这个帧后,一层一层抽取出 DHCP ACK 报文,然后 PC 上的
DHCP客户端则记录下它的IP地址和它的DNS服务器的IP地址,还在IP转发表中记录默认网关的地址
至此,PC 已经初始化好它的网络组件
PS:DHCP实际上完整的步骤为四步,但我们可以注意到,只有最后两个步骤是实际必要的
开始请求-DNS,ARP,…
- 当 Bob 将 www.google.com 这个 URL 键入到浏览器并回车后将开启一长串事件。首先,OS 将生成一个
DNS查询报文,将所输入的域名放入DNS报文的问题段中。该DNS报文则放置在一个目的端口为 53 的UDP报文段中,该UDP报文段则被放入目的IP地址为一开始DHCP所获取到的DNS服务器的IP地址,以及源 IP 地址为一开始DHCP所获取到的 PC 的IP地址的IP数据报中 - PC 将包含
DNS请求报文的IP数据报放入一个以太网帧中,该帧将发送到网关路由器。但此时 PC 并不知道该网关路由器的MAC地址,为了获得其MAC地址,PC 需要使用ARP协议 - PC 生成一个目的
IP地址为默认网关路由器的ARP查询报文,将该ARP报文放置在一个目的地址为广播地址 FF:FF:FF:FF:FF:FF 的以太网帧中,并向交换机发送该帧,该帧将被交换机交付给所有连接的设备,包括网关路由器 - 网关路由器接收到该帧后,发现
ARP报文中目的IP地址与其接口的IP地址匹配,于是生成一个ARP回答报文,放入自己的MAC地址,目的地址为 PC 的MAC地址,然后发送该帧 - PC 接收到该帧后,抽取出
ARP回答报文并从中抽取出网关路由器的MAC地址 - 然后 PC 就可以将包含
DNS查询的 以太网帧寻址到网关路由器的MAC地址 - 网关路由器接收到该帧,抽取出
IP数据报,根据目的IP地址,即DNS服务器的地址,以及转发表将该数据报转发到其它路由器,其它路由器也会根据目的地址以及自身的转发表选择哪个输出接口进行转发。其中路由器的转发表根据域内协议RIP,OSPF以及 因特网域间协议BGP所填写 - 最终,包含
DNS查询的IP数据报到达DNS服务器。DNS服务器从DNS查询报文中取出域名 www.google.com 并在它的DNS数据库中查找这个域名,找到包含对应IP地址的DNS源记录。然后将这个映射关系放到一个DNS回答报文中发送到 PC - PC 接收到这个
DNS回答报文后从中抽取出域名 www.google.com 对应的IP地址,接下来就可以进入源客户与目的服务器的交互过程了
客户服务器交互-TCP,HTTP,…
- PC 知道了域名 www.google.com 的
IP地址,就能够生成自己与服务器之间的套接字连接,再使用套接字向服务器发送 HTTP GET 报文 TCP套接字生成过程需要 三次握手- 当三次握手完成之后,PC 上的浏览器生成包含要获取的 URL 的 HTTP GET 报文,然后该报文写入套接字,成为一个
TCP报文段的载荷,最后交付到目的服务器 - 目的
HTTP服务器从套接字中读取到 HTTP GET 报文,然后生成HTTP响应报文,将源客户所请求的资源放入HTTP响应体,并将报文发送进TCP套接字 - 包含
HTTP回答报文的数据报通过网络转发到达 PC,浏览器从套接字中读取HTTP响应,并从中抽取 Web 资源,即网页,最终显示到浏览器上
最后
以上就是殷勤大侠最近收集整理的关于[计算机网络]-Web 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…的全部内容,更多相关[计算机网络]-Web内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复