学习了ip协议,知道怎么判断两台机器是否在同一个子网。如果它们不在一个子网,不同网段的机器,要如何实现通信呢?
如果它们两个隔得很远,中间有很多的路都可以实现它们的通信,怎么选择最优路径?
需要学习路由协议。实现不同网段,不同网段,选择最优路径,都是由路由协议实现的。
路由协议:指定数据包转送方式的网上协议。
路由协议是一组协议。分为静态路由,动态路由协议(RIP,OSPF,BGP)。
静态路由:搭建liunx测试环境,或者windows系统测试环境的时候,最常碰到的就是静态路由。
静态路由:就是手动指定目的地址,指定下一跳。
默认路由:是一种特殊的静态路由。主机指定默认路由,就是指定了主机里面的默认网关。
例如这台电脑指定了ipv4的默认网关。
通过我这块网卡要出去的内容,都去找1.1
的这台设备。全部的消息都丢给它,它决定我应该向哪里走,向哪里去转发。
1.1
就是默认网关。它在路由表里呈现的方式,就是一条默认路由。
动态路由:RIP分为v1v2,这个协议基本用不到,除非具体的测一个路由协议的设备,或者是网络特别复杂的拓扑里面,才会用到动态路由协议。像OSPF,BGP都是一些比较大的网络拓扑里面,才会去配置一些这样的动态路由。
动态路由和静态路由的区别:配置之后,它会动态学习路由条目,形成路由表。
比如通过网络中的消息,动态知道这个目的地址应该怎么设置,从哪里发,那个目的地址应该从哪里发。这样的动态学习,形成了路由表。
路由协议查找路由表,然后去决定怎么去转发数据包。
打开cmd输入route print
(路由打印的意思),按下回车。
它里面的内容:
这个目的地址就是上次讲到的那个封装。封装里面的那个源目ip,那个目的ip是去哪的,对应的ip在这个路由表里进行查找对应匹配的项。
255.255.255
开头的。224.0.0.0 240.0.0.0
这个是个组播地址,目前了解即可。
比如192.168.1.4
是这台电脑的网卡地址,下一跳就是对端连了另外一台机器,另外这台机器的网卡地址就是对应的网关。
跳跃数越小,表示路由优先级越高。
要走的弯路越少,优先级越高。
192.168.1.0 255.255.255.0
和192.168.93.0 255.255.255.0
,可以看出.1
和.93
不是一个子网的,它们两个不能直接通信。
比如要访问192.168.93.1
这个地址,要查找这个路由表,然后去找它的下一跳。它的下一跳就是它的网关。它的网关,可以看到在链路上
。
在链路上:表示它是一个直连的。就是我这台主机其它的一张网卡所在的网段,在链路上其实没有下一跳,直接在链路上就可以找到。是自己直接连接的一块网卡,不需要别人转发。
真正去做转发的,只有这条路由。这条路由就是默认路由。
默认路由就是0.0.0.0 0.0.0.0,全0就是匹配所有(通配的意思)。
不管是什么地址,都可以通过这条默认路由匹配。所有要上网的机器,都丢给默认网关。很多主机都只配一个默认网关,再由默认网关做详细的路由选择。
主机一般不做太多的路由的工作。默认网关的路由设备肯定有自己的一张路由表,这个路由表比主机路由表要详细很多。
肯定详细分开哪个网段应该走哪条链路。主机路由基本上都会配一个默认路由。要学会看路由表,怎么做数据的转发就可以了。