TCP/IP协议簇是目前互联网应用最广的 协议栈。 ip路由——找到目的主机

IP协议所在层次

IP路由

IP路由场景

IP路由

场景:有两个网络,这两个网络通过一台具有两个以太网接口(F0/0,F0/1)的路由器连接在一起。路由器的这两个端口和电脑上的RJ-45型号的网卡端口是一样的,都是内建在路由器中的。

IP报文首部

IP路由

ping的作用

测试目的主机是否可达,如果可达,请求目的主机回应一下。相当于测试目的电话号能否播通。发送的是ICMP报文。

IP路由

IP路由

 IP封装:ip作用即邮差,附有源ip和目的ip,投递数据包

IP路由

 IP路由:子网掩码与运算比较 +路由表查找

    在进行数据链路层的信息封装之前主机A还需启动IP路由进程来判断目标主机B在本地网络还是在远程网络。若主机B在本地网络,说明主机B和主机A在同一个逻辑子网中,也就是同一个IP网段内。若主机B在远程网络则说明主机B与主机A不在同一个网段内,比如本例中,主机A位于网络A而主机B位于网络B。显而易见,在本例的网络场景中主机A会判断出主机B位于远程网络。

1、主机A是判断B是否位于同一网段
      子网掩码的作用
      首先主机A将自己的IP地址和子网掩码作“与运算”。所谓与运算就是无论是二进制的“0”和“1”相与还是二进制的“0”和“0”相与,得出的结果都为“0”,而只有二进制“1”和“1”相与得出的结果为“1”。比如本例中,主机A的IP地址为192.168.0.5,将这个IP地址转换为二进制就是:11000000 10101000 00000000 00000101
      主机A的子网掩码为255.255.255.0,将该掩码转换为二进制就是:11111111 11111111 11111111 00000000 将主机A二进制形式的IP地址和子网掩码作“与运算”的结果是:  11000000 10101000 00000000 00000000
      点分十进制的数就是:192.168.0.0
      这样主机A就通过“与运算”完成了IP路由判断的第一步。
接下来的第二步是将目标主机(主机B)的IP地址与发送方(主机A)的子网掩码作“与运算”,比如本例中,主机B的IP地址为1.1.1.5,将这个IP地址转换为二进制就是:00000001 00000001 00000001 00000101
      主机A的子网掩码为255.255.255.0将该掩码转换为二进制就是:11111111 11111111 11111111 00000000 将以上两组二进制的数进行“与运算”的结果是:00000001 00000001 00000001 00000000 将这个“与运算”的结果转换为点分十进制的数就是:1.1.1.0 这样我们就得到了两组“与运算”的结果,分别是:192.168.0.0和1.1.1.0
      对于主机A来说,经过这样一番“与运算”后,如果两个“与运算”结果相同,则说明目标主机B和自己在同一个网络内,即目标主机B在本地网络。相反地,对于主机A来说,经过这样一番“与运算”后,如果两个“与运算”结果不同,则说明目标主机B和自己不在同一个网络内,即目标主机B在远程网络。在本例中,很显然目标主机B对于发送方(主机A)来说在远程网络——也就是在网络B。 

IP路由

2.主机A需要“思考”的是如何才能够到达主机B所在的网络(1.1.1.0)?
路由表的作用
主机A首先会查询自己的路由表,看在自己的路由表中能否找到去往目标网络(网络B)的路由条目。主机A的路由表输出显示如下:

C:\>route print
Active Routes:
Network Destination         Netmask             Gateway          Interface         Metric
               0.0.0.0             0.0.0.0            192.168.0.1      192.168.0.5         10

             127.0.0.0          255.0.0.0            127.0.0.1         127.0.0.1           1

           192.168.0.0     255.255.255.0      192.168.0.5      192.168.0.5         10

           192.168.0.5   255.255.255.255       127.0.0.1         127.0.0.1           10

         192.168.0.255   255.255.255.255   192.168.0.5      192.168.0.5         10

             224.0.0.0           240.0.0.0         192.168.0.5      192.168.0.5         10

       255.255.255.255  255.255.255.255   192.168.0.5      192.168.0.5         1

Default Gateway: 192.168.0.1

      从主机A路由表的输出显示中没有找到与目标主机B所在的网络相匹配的具体路由,也就是说主机A没有到达1.1.1.0这个网络的路由。但是注意到在该路由表的最后一行输出的是:  Default Gateway(默认/缺省网关): 192.168.0.1 路由表最后一行的输出说明主机A在没有找到能够到达目标网络的具体路由的情况下,会将发往目标网络的数据包发送到默认/缺省网关(192.168.0.1),由这个默认/缺省网关再将该数据包转发到目标网络。

IP路由

链路层封装:解决相邻两端设备通信

从这个网络场景中我们看到主机A和主机B从各自所处的物理位置上看并不属于相邻的两台设备(中间隔着一台路由器)。既然主机B并不是主机A直接相邻的设备,那么主机A在数据链路层封装的目的MAC地址当然就不可能是主机B了。主机A通过IP路由的流程判断和查询路由表知道要想到达主机B就必须将数据包发给路由器A的F0/0接口(F0/0接口也是主机A到达主机B必经的直接相邻的接口),因此F0/0的MAC地址就成为主机A在数据链路层封装的目的MAC地址。在本例中假如主机A要给Server A发送数据而不是给主机B,那么主机A在数据链路层封装的目的MAC地址就是Server A的MAC地址,因为Server A与主机A是彼此直接相邻的设备。那么对于主机A来说它是否知道路由器F0/0接口的MAC地址呢?主机A是不知道的。所以接下来主机A需要做的是如何才能找到F0/0接口的MAC地址以完成数据链路层的封装成帧。
ARP缓存表的作用(相邻设备或主机mac)
首先主机A查看自己的ARP缓存表,每台主机/电脑都有这个ARP缓存表,该缓存表记录着与自己发生过通信的所有的直接相邻设备或主机的硬件地址(MAC地址),ARP缓存表经过一段时间会自动删除,比如Windows 的动态 ARP 缓存条目不超过 10 分钟就会被删除。如果主机A与路由器之前曾发生过通信,主机A自然能在ARP缓存表中找到路由器F0/0的硬件MAC地址。

IP路由

 ARP报文头

IP路由

ARP广播:获取相邻设备接口mac(arp缓存ip-mac项)

IP路由

arp缓存表

IP路由

路由器计算和转发:通过路由表计算(子网掩码与运算)确定报文转发接口 

IP路由

 ip路由:链路层不断封装和解封

IP路由

ip应用 

主机可以被访问(目标主机可达并有应答)

IP路由

主机关机或者不存在(目标主机不可达)

 IP路由

网络差或防火墙开启(目标主机可达,但拒绝应答)

IP路由 

相关文章:

  • 2022-12-23
  • 2021-12-05
  • 2021-12-23
  • 2021-10-06
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2021-07-30
  • 2022-01-12
  • 2021-11-29
  • 2022-12-23
相关资源
相似解决方案