处于同一个网段的设备之间可以直接通信。不同的网段之间不能直接通信,必须通过网关(gateway)进行转发。路由就是 数据包从源端经过若干中间节点(也就是网关或下一跳)被传输到目的端所经过的 传输路径,它是一个网络层的术语。
简易的路由示意图
终端计算机 和 路由器、三层交换机等工作在网络层的设备 内部存在路由表(routing table),它们根据路由表决定将数据包发送到哪个设备,并且在发送完之后,就不再理会数据包的流向了,因为数据包将由下一个设备负责继续传输。整体来说,设备发送数据包的过程如下:
下面看一个例子:
路由的概念
如果PC 01想要将数据包传送到Server Bingo,那么它先根据自己的路由表,将数据包传送到Server A,Server A再继续将数据包传送到Server B,...,如此接力地传送,直到数据包到达Server Bingo。
通过上节的描述可知,路由至关重要,一旦设置有误,将造成设备无法正常地发送数据包。因此,下面将讲述设备的路由表。在Linux中,可以通过route
命令查看路由表:
0> route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.30.50 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.108.152 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.108.153 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.55.21.198 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.78.199 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.55.21.212 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.108.100 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.118.199 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.212.0.61 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.55.21.254 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.55.21.239 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.212.0.62 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 10.55.21.253 172.16.118.1 255.255.255.255 UGH 0 0 0 eth1 172.16.118.0 172.16.118.1 255.255.255.0 UG 0 0 0 eth1 172.16.118.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 219.142.118.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.48.0.0 219.142.118.1 255.255.0.0 UG 0 0 0 eth0 10.68.0.0 219.142.118.1 255.255.0.0 UG 0 0 0 eth0 10.74.0.0 219.142.118.1 255.255.0.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1 192.168.0.0 172.16.118.1 255.255.0.0 UG 0 0 0 eth1 10.78.0.0 219.142.118.1 255.255.0.0 UG 0 0 0 eth0 172.16.0.0 172.16.118.217 255.240.0.0 UG 0 0 0 eth1 10.208.0.0 172.16.118.1 255.240.0.0 UG 0 0 0 eth1 100.64.0.0 172.16.118.1 255.192.0.0 UG 0 0 0 eth1 10.0.0.0 172.16.118.217 255.0.0.0 UG 0 0 0 eth1 0.0.0.0 219.142.118.1 0.0.0.0 UG 0 0 0 eth0
路由表中的每一行是一个路由条目(也叫路由表项)。通常情况下,一条路由信息,由四个要素组成:
Gateway是“0.0.0.0”表示:使用相应的网络接口,直接发送数据包,不需要通过网关进行转发。
1, 关于ARP协议,请参考:http://timd.cn/network/arp/
2, 网关的IP一定要与设备的IP在同一个网段么?
当源主机访问目标主机时,它首先看两者的IP是否在同一个网段:
由此可以看出,源主机和网关通信的过程中,并不会检查两者是否在同一个网段,而是直接去查ARP缓存表或发送ARP广播,所以这种情况是可能通信的