假设主机A和B在同一个网段,主机A要向主机B发送信息。
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
-
我们输入一个域名:[www.baidu.com](http://www.baidu.com/)
-
浏览器查找浏览器缓存,如果有域名的IP地址则返回,如果没有继续查找;
-
系统查找系统缓存,如果有域名的IP地址则返回,如果没有继续查找;
-
路由器查找路由器缓存,如果有域名的IP地址则返回,如果没有继续查找;
-
本地域名服务器采用迭代查询,它先向一个根域名服务器查询;
-
根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址;
-
本地域名服务器向顶级域名服务器dns.com进行查询;
-
顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.baidu.com的IP地址;
-
本地域名服务器向权限域名服务器dns.baidu.com进行查询;
-
权限域名服务器dns.baidu.com告诉本地域名服务器,所查询的主机www.baidu.com的IP地址;
-
本地域名服务器最后把查询结果告诉主机;
-
主机浏览器获取到Web服务器的IP地址后,与服务器建立TCP连接;
-
浏览器所在的客户机向服务器发出连接请求报文;
-
服务器接收报文后,同意建立连接,向客户机发出确认报文;
-
客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;
-
此处客户机与服务器之间的TCP连接建立完成,开始通信;
-
浏览器发出取文件命令:GET;
-
服务器给出响应,将指定文件发送给浏览器;
-
浏览器释放TCP连接;
-
浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;
-
服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;
-
服务器数据传输完毕后,向客户机发送连接释放报文;
-
客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;
-
浏览器显示页面中所有文本。