前言
简单了解一下ip 协议选路问题。
正文
比如host1 到 host2是直接传输,因为host1和 host2 是同一交换机,直接arp表知道对方的mac。
第二种是他们是不同网段之间通信。
第二种有两种出名的协议rip 和 ospf,动态路由方式。
路由表:
rip 内部选路协议:
routing information protocal
特点:
- 基于跳数确定路由。
- udp 协议向相邻路由器通知路由表。
举个例子。比如RA 可以到N1,那么RA就想相邻路由器发送自己到N1举例为1。
比如RB就收到了 RA 到 R1 的距离为N1。
现在如果RB要访问N1,那么会将信息发给RA。
那么RB、RC也会继续广播出去给RD,RD收到的RB 的信息是RB到N1为2跳。RD收到RC的信息是RC到N1为2跳。
这个时候RD 也会广播给RB和RC等相邻路由器,告诉他们RD到N1为3跳。
问题:
- 基于条数
- 慢收敛
- 选路环路
OSPF 协议:
open shortest path fist
这个比较复杂,直接百度比较好的。
https://zhuanlan.zhihu.com/p/41341540
这里讲一下为什么这么复杂哈,有些人刚学的时候认为局域网是:
路由器1 为 192.168.1.0/24 那么路由器2是 192.168.0.0/16
那么就是路由器1下面机器1访问192.168.2.1的话,发给路由器1,路由器1根据主机号就知道发给r2。
就是认为网络连接是金字塔结构的,实际上不是。
就是他们的分配是金字塔结构。但是不是他们相邻的不一定不能连接啊。
实际上是这种:
在11.0.0.0/8 和 12.0.0.0/8 他们直接可以相连啊。
如果是金字塔结构,那么的确路由器对比一下主机号就知道了下一个应该发给谁。
但是这样也会有一个问题,那就是太慢了吧,显然是不可行的。
可以看到哈,如果10.1.2.16 要访问 10.2.2.16的话,一定要经过10.0.0.0/8这台机器,那不堵才怪。
就算是10.0.0.0/8 旁边是172.16.0.0/8也是可以的,这样可以让这两个网络互通。(“172开头的不一定是内网,作为内网的172属于B类地址,范围: 172.16.0.0-172.31.255.255,共16个网络数。)
然后公网中的是:BGP(Border Gateway Protocal)
这个就更复杂了,一般是网络工程师专研比较多,开发人员没太多必要。
不过可以查询一下路由跟踪工具:
- windows: tracert
- linux/mac:traceroute.
结
除了上面的rip和OSPF 路由寻路方式,这两种是自动寻路,也就是动态路由,还有静态路由的方式来寻路,其实吧,如果是我们内网比较少的机器话,用静态路由还是比较好的,自动寻路适合机器多的情况。
下下一节ip的分片和icmp协议。