IP路由选择过程(36步超详细解读)

IP路由选择过程(36步超详细解读)_第1张图片

用户在Host_A上ping Host_B的IP地址。

  1. ICMP生成一个回应请求——数据字段中的字母
  2. ICMP将该请求交给IP,后者创建一个分组
  3. 创建分组后,IP判断目标IP地址位于本地网络还是远程网络
  4. IP判断出这是一个远程请求,因此必须将分组发送到默认网关,以便它能够被路由到远程网络
  5. 在Host_A上,配置的默认网关为172.16.10.1。因此必须知道IP地址为172.16.10.1的接口E0的硬件地址。只有知道硬件地址后,才能将分组交给数据链路层,再由后者将其封装成帧,并发送到与网络172.16.10.1相连的路由器接口(在LAN内,主机只能通过硬件地址进行通信,因此Host_A想要与Host_B通信,必须将分组发送给本地网络的默认网关的介质访问控制地址)
    MAC地址只能用于LAN内部通信,而不能用于穿越路由器进行通信
  6. 检查主机的地址解析协议(ARP)缓存,看看默认网关的IP地址是否已被解析为硬件地址。如果已解析,就可以直接将分组交给数据链路层,由它封装成帧;如果还未解析,将在本地网络中发送ARP广播,以查询172.16.10.1对应的硬件地址,路由器将相应该请求,并提供接口E0的硬件地址,而主机将缓存该硬件地址
  7. 分组和目标硬件地址被交给数据链路层,LAN驱动程序将根据LAN类型,来提供介质访问。然后生成一个帧,它使用控制信息对分组进行封装
    目标MAC地址
    (路由器接口E0的MAC地址)
    源MAC地址
    (Host_A的MAC地址)
    "以太类型字段" 分组 FCS
    CRC
ping Host_B时,Host_A发送给Lab_A的帧
  1. 帧创建好后,被交给物理层,物理层以每次1比特的方式将帧放到物理介质上
  2. 当前冲突域中的每台设备都接收这些比特,并将其封装成帧。每台设备都执行CRC计算,并且将结果与FCS字段的值对比,如果不同就丢弃该帧;相同就查看硬件地址,看指的是不是自己,如果是自己,就查看“以太类型”字段,来获悉使用的网络层协议
  3. 从帧中提取分组并将其他部分丢弃,将分组交给指定的协议(此处是IP)
  4. IP接收分组并检查其目标IP地址。因为该目标IP地址与该路由器配置的所有地址都不匹配,因此路由器会在路由选择表中查找目标IP网络
  5. 路由选择表必须有前往网络172.16.20.0的路由,否则路由器将立即丢弃分组,并向始发设备发送一条ICMP消息,来说明目标网络不可达
  6. 如果在路由选择表中找到了前往目标网络的路由,路由器将分组交换到指定的出站接口(此处是E1)
  7. 路由器将分组交换到接口E1的缓冲区
  8. E1的缓冲区需要知道目标主机的硬件地址,因此查看ARP缓存。如果Host_B的硬件地址以前已经被解析过了,并且包含在路由器的ARP缓存中,将直接把分组以及该硬件地址交给数据链路层以便封装成帧;如果没有被解析过,路由器将通过E1发送ARP请求,来查询172.16.20.2对应的硬件地址,然后Host_B将作出响应,并提供自己的硬件地址。然后分组和目标硬件地址交给数据链路层,以便将分组封装成帧
  9. 数据链路层创建一个帧,包含目标硬件地址、源硬件地址、“以太类型”字段和FCS字段,这个帧被交给物理层,物理层以每次1比特的方式将帧放到物理介质上
  10. Host_B接收这个帧,并执行CRC计算(相同)→查看目标硬件地址(相同)→查看“以太类型”字段→确定是哪一个网络层协议(IP)
  11. 在网络层,IP收到分组后对IP报头执行CRC计算(相同)→查看目标地址(相同)→查看“协议”字段→确定将分组的有效负载交给谁
  12. 有效负载被交给ICMP,后者知道这是一个回应请求,因此立即对请求进行响应:将分组丢弃并生成一个回应应答
  13. 为封装回应应答,创建一个包含源IP地址、目标IP地址、”协议“字段和有效负载的分组
  14. IP检查目标IP地址位于本地LAN还是远程网络,由于目标设备位于远程网络中,因此需要将分组发送到默认网关
  15. 在windows设备的注册表中找到默认网关的IP地址,并查看ARP缓存,看看是否将默认网关的IP地址解析为硬件地址
  16. 获悉默认网关的硬件地址后,将其与分组一起交给数据链路层,以便将分组封装成帧
  17. 数据链路层将分组封装成帧
  18. 这个帧被交给物理层,让它通过网络介质以每次1比特的方式发送出去
  19. 路由器的接口E1接收这些比特,并将它们组装成帧。然后执行CRC计算,将结果与FCS字段的值进行比较,看其是否相同
  20. 确定CRC相同后,查看目标硬件地址(相同)→从帧中提取分组,查看“以太类型”字段,确定将其分组交给哪一个网络层协议(IP)
  21. 协议为IP,因此分组被交付给IP。IP首先对IP报头执行CRC检查,再查看目标IP地址
  22. 由于路由器知道如何前往网络172.16.10.0,出站口为E0,因此分组被交换到接口E0
  23. 路由器查看ARP缓存,看看是否曾经将172.16.10.2解析为硬件地址
  24. 由于在一开始分组前往Host_B期间,路由器已经缓存了172.16.10.2对应的硬件地址因此将该硬件地址和分组一起交给数据链路层
  25. 数据链路层使用目标硬件地址和源硬件地址创建一个帧,并且将“以太类型”字段设置为IP,然后对整个帧执行CRC计算,并将结果放到FCS字段中
  26. 这个帧被交给物理层,让它以每次1比特的方式发送到本地网络上
  27. 目标主机接收这个帧,执行CRC检查并检查目标硬件地址,再查看“以太类型”字段来确定将分组交给谁
  28. 指定的接收方为IP,因此分组被交给网络层协议IP。IP检查“协议”字段,来确定将有效负载交给谁。IP发现应该将有效负载交给交给ICMP,而ICMP判断出这个分组时ICMP回应应答
  29. ICMP在用户界面上显示一个 !,以确定它收到了应答。然后ICMP试图再向目标主机发送4个回应请求

你可能感兴趣的:(cisco,IP,路由选择)