主机H1利用浏览器通过该域名请求访问web服务器
- 由于题目给定主机H1的ARP表是空的
(1)主机H1首先会发送ARP请求报文,ARP请求报文会被封装在以太网的MAC帧中发送
ARP请求报文:FF-FF-FF-FF-FF-FF
源MAC地址:00-11-22-33-44-cc(即主机H1的MAC地址)
- ARP协议的作用:由IP地址查找对应的MAC地址
- ARP请求报文会被封装在以太网广播帧中,整个过程都是在数据链路层中进行的
(2)该ARP请求报文进入以太网交换机,以太网交换机进行自学习和转发帧的操作,登记ARP报文的源地址和进入交换机时的端口号(这就是所谓的自学习)
- 题目给定以太网交换机的交换表是空的
- 自学习后的交换表
(3)由于该ARP请求报文是广播帧,故不用查表,直接从其他所有的端口转发出去
- 本地域名服务器会收到
- H2主机会收到
- R路由器也会收到
(4)本地域名服务器从该广播帧中解析出ARP请求报文,从而知道该ARP请求报文是询问自己的,故接收该ARP请求报文,并向主机H1发出ARP响应报文欲告知自己的MAC地址。
路由器R从该广播帧中解析出ARP请求报文,知道不是询问自己的,从而丢弃该报文,H2同理丢弃。
- ARP响应报文被封装在以太网单播帧中发送
ARP响应报文:00-11-22-33-44-cc(目的地址,主机H1的MAC地址)00-11-22-33-44-bb(源地址,本地域名服务器的MAC地址)
(5)该单播帧ARP响应报文从交换机的1号端口进入交换机,故交换机更新交换表,更新完后,在交换表中查找该单播帧的目的MAC地址,发现对应的端口号为4,故从该端口4转发出
(6)主机H1收到来自交换机端口4转发的ARP响应报文,通过解析该报文,发现是发送给自己的,于是知道了本地域名服务器的MAC地址,并更新ARP表
- 现在主机可以向本地域名服务器发送DNS请求报文了,以便获取web服务器域名所对应的IP地址
- DNS是基于UDP的,根据域名查询出IP地址
DNS查询流程简化如下(这里我使用的是递归与迭代相结合的方式),
a.查询本地域名服务器,本地域名服务器中没有记录所以进行b
b.访问DNS根服务器,根服务器通过查询知道了该域名是归.com顶级域名服务器管理的,所以告知本地域名服务器去查询顶级域名服务器,所以去进行c
c.本地域名服务器,去查询.com域服务器(顶级域名服务器),然后该服务器告知,负责abc.com区域的服务器知道,我告诉你他的地址,你去问他把
d.最后,访问abc.com域服务器,得知此域名对应的IP地址
DNS请求报文的封装情况,
(7)主机收到DNS响应报文从而知道了web服务器的IP地址,通过比较前25比特网络前缀,知道了web服务器与主机H1不在一个网络当中
(8)于是,主机H1要通过访问R路由器也就是默认网关192.168.1.1来访问web服务器
- 主机H1查找ARP表发现,默认网关192.168.1.1的MAC地址,找不到
(9)主机H1再次发送ARP请求报文,通过路由器R的IP地址来查询其相应的MAC地址,ARP请求报文被封装在以太网广播帧中发送
- 目的地址:FF-FF-FF-FF-FF-FF
- 源MAC地址:00-11-22-33-44-cc
(10)路由器R从该广播帧中解析出ARP请求报文,知道这是询问自己,所以接收该报文(其他的设备发现不是给自己的,丢弃该报文),响应该报文
(11)路由器R给主机H1发送ARP响应报文,告知自己的MAC地址,ARP响应报文被封装在以太网单播帧中发送
该ARP响应报文进入交换机后,更新交换表,如下
(12)更新完后,对该单播帧进行转发,根据目的MAC地址查询交换表,发现应该从4号端口中转发出去
(13)主机H1收到单播帧,从中解析出ARP响应报文,从而知道了路由器R该接口的IP地址所对应的MAC地址,将其记录到ARP表中
(14)先主机H1可以通过路由器R访问web服务器
(15)主机H1与web服务器之间要先通过TCP连接报文建立连接(即三报文握手)
-
TCP使用熟知端口号80
-
主机可以在第三个报文段中携带HTTP请求报文
-
web服务器在收到报文后,将所请求的内容封装成HTTP响应报文
-
通过已建立的连接发送给主机H1
(16)至此,主机H1访问web服务器的应用场景的全部过程。