我是靠谱客的博主 殷勤大侠,最近开发中收集的这篇文章主要介绍[计算机网络]-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 页面请求的历程场景准备-DHCP,…开始请求-DNS,ARP,…客户服务器交互-TCP,HTTP,…所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复