主机想要发送数据的时候,参考的对象就是路由表。
如果两个不同网段的主机想要发送数据,经过的具体的经过:
1.查询IP数据包的目标IP地址,主机会查阅Ip数据包报头的目标IP地址。
2.查询是否存在与本机所在的网络路由表中
PC01会分析自己的路由表,当发现目标IP与主机IP的NET_ID相同时,也就是在同一网段时,PC01会直接通过局域网功能,把数据直接传递给目的地的主机。
3。查询默认路由
如果两台机器不在同一网段时,PC01会分析路由表中是否有其他符合的路由设置值,如果没有的话,直接把该IP数据包送到默认路由器(也就是默认网关)
4.送出数据包到默认网关之后,后面的任务交给路由器来做。路由器收到这个数据包之后,会分析自己的路由表信息,继续传输到目的地主机上面。
路由器的功能:在不同网段之间传递数据包,并且管理路由。
路由表具体:
Destination:目的地的网络,第一行是192.168.3.0,就是一个网络,也就是192.168.3.0/24
最后一栏是:要去往这个网段需要使用哪一个网络接口。也就是eth0这张网卡
如果我们传送的数据包在路由规则里面的192.168.3.0/24或者169.254.0.0/24,因为gateway是0.0.0.0,所以就会以后面的网络接口来传出去,因为是在局域网中,不需要通过gateway 。
如果不在路由规则里,就会把数据传送到默认的网关里。
默认网关负责所有非本网络内的数据包的传送。
linux下的路由表是由小网络排列到大网络的,例如上面的路由表中,路由是由192.168.3.0/24-->169.254.0.0/16-->0.0.0.0(默认路由)。
主机的网络数据包需要发送时,会查阅上述的三个路由规则来了解如何把数据包发送出去。
为何一共有三个路由?
1.依据网络接口产生的IP而存在的路由
有192.168.3.0/24这个路由,是因为机器上有192.168.3.244这个IP地址
2.手动或者默认路由
可以使用route命令手动添加路由,但是添加路由必须是你的网卡可以直接Ping通才可以。否则: