3router路由器¶
集线器是按照以太网规则传输包的设备
路由器是按照 IP 规则传输包的设备
现代的交换机和路由器的概念已经发生了变化了
交换机是服务于以太网的 L2/L3 网络设备,
而路由器是服务于以太网和非以太网之间的网络设备
集线器:
MAC 头部(用于以太网协议)
路由器:
IP 头部(用于 IP 协议)
路由表(Routing Table):
一张路由表中会有多条路由规则。
每一条规则至少包含这三项信息:
1. 目的网络: 这个包想去哪儿
2. 出口设备: 将包从哪个口扔出去
3. 下一跳网关: 下一个路由器的地址
Destination Gateway Flags Netif Expire
default 10.112.127.254 UGSc en0
10.112/17 link#6 UCS en0 !
10.112.25.28/32 link#6 UCS en0 !
10.112.33/24 10.112.33.9 UGSc utun2
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
... ....
家用路由器的五个口是一个局域网?
备注
与交换机不同。交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方。
备注
路由器会忽略主机号,只匹配网络号。
对路由表进行维护的方法有几种,大体上可分为以下两类:
1. 由人手动维护路由记录
2. 根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录
路由协议有很多种,例如 RIP、OSPC、BGP 等都属于路由协议
路由器与交换机之间的关系:
路由器是基于 IP 设计的,而交换机是基于以太网设计的
IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行
路由器将包的传输工作委托给交换机来进行
注: 实际的路由器有内置交换机功能的,比如用于连接互联网的家用路由器
上面讨论的都是『纯粹的路由器』和『纯粹的交换机』
备注
IP 并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器。之后下一个路由器再通过 IP 协议确定下一个路由器的 IP 和 Mac 地址。再通过以太网传输……而这儿两个路由器之间的传输过程是由以太网(交换机)来完成的。
备注
IP(路由器)负责将包送达通信对象这一整体过程,而其中将包 传输到下一个路由器的过程则是由以太网(交换机)来负责的。
工作过程:
1. 收到某端口(设为 A)MAC 地址为 X 的计算机发给 MAC 地址为 Y 的计算机的数据包。交换机从而记下了 MAC 地址 X 在端口 A。这称为学习(learning)。
2. 交换机还不知道 MAC 地址 Y 在哪个端口上,于是向除了 A 以外的所有端口转发该数据包。这称为泛洪(flooding)。
3. MAC 地址 Y 的计算机收到该数据包,向 MAC 地址 X 发出确认包。交换机收到该包后,从而记录下 MAC 地址 Y 所在的端口。
4. 交换机向 MAC 地址 X 转发确认包。这称为转发(forwarding)。
5. 交换机收到一个数据包,查表后发现该数据包的来源地址与目的地址属于同一端口。交换机将不处理该数据包。这称为过滤(filtering)。
6. 交换机内部的 “MAC 地址 => 端口” 查询表的每条记录采用时间戳记录最后一次访问的时间。早于某个阈值(用户可配置)的记录被清除。这称为老化(aging)。
路由器的附加功能¶
路由器的附加功能:
1. 将私有地址转换为公有地址的『地址转换功能』
2. 阻止危险网络包的『包过滤功能』
地址转换功能¶
备注
具备地址转换功能的设备不仅有路由器,有些防火墙也有地址转换功能, 它的工作方式和路由器是相同的。地址转换功能的作用是在公网 IP 地址有限的前提下,让内网地址的电脑也能上网。
地址和端口对应表(地址转换功能):
公有地址 端口号 私有地址 端口号
11.123.23.2 5436 192.168.1.123 80
11.123.23.2 5437 192.168.1.23 443
11.123.23.2 5438 192.168.1.11 80
包过滤功能¶
定义:
对包进行转发时,根据 MAC 头部、IP 头部、TCP 头部的内容,
按照 事先设置好的规则决定是转发这个包,还是丢弃这个包。
我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的
与防火墙的关系:
防火墙并不是一种专用的特殊机制,而是应该看作在路由器的包转 发功能基础上附加的一种功能
防火墙只不过当判断规则比较复杂时,通过路由器的命令难以维护这些规则
而且对阻止的包进行记录对于路由器来说负 担也比较大,因此才出现了专用的硬件和软件
对防火墙来说,如果判断结果为阻止,那么这个包会被丢弃并被记录下来。
这是因为这些被丢弃的包中通常含有非法入侵的痕迹,
通过分析这些包能够搞清楚 入侵者使用的手法,从而帮助我们更好地防范非法入侵
而对内置包过滤功能的路由器来说,内存容量小,没有足够的空间用来记录日志
在丢弃包时基本上不会留下记录
命令操作¶
路由表(Routing Table):
➜ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 10.112.127.254 UGSc en0
10.112/17 link#6 UCS en0 !
10.112.25.28/32 link#6 UCS en0 !
10.112.33/24 10.112.33.9 UGSc utun2
10.112.33.9 10.112.33.10 UH utun2
10.112.127.254/32 link#6 UCS en0 !
10.112.127.254 0:0:5e:0:1:3 UHLWIir en0 1139
10.128/16 10.112.33.9 UGSc utun2
10.128.128/23 10.112.33.9 UGSc utun2
10.128.130/23 10.112.33.9 UGSc utun2
10.128.132/23 10.112.33.9 UGSc utun2
10.140.2/24 10.112.33.9 UGSc utun2
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#6 UCS en0 !
224.0.0/4 link#6 UmCS en0 !
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0
255.255.255.255/32 link#6 UCS en0 !
注: linux 上面的命令 route -n
mac下操作:
查看所有路由表:
netstat -rn
查看默认网关:
route -n get default
route -n get www.baidu.com
添加路由:
sudo route add 34.0.7.0 34.0.7.1
删除路由:
sudo route delete 0.0.0.0
注: 多网卡可以调整不同网卡的优先级
增加一条路由:
$ ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0
要去 10.176.48.0/20 这个目标网络,要从 eth0 端口出去,经过 10.173.32.1:
$ ip rule add from 192.168.1.0/24 table 10
$ ip rule add from 192.168.2.0/24 table 20
从 192.168.1.10/24 这个网段来的,使用 table 10 中的路由表
而从 192.168.2.0/24 网段来的,使用 table20 的路由表
$ ip route add default scope global \
nexthop via 100.100.100.1 weight 1 \
nexthop via 200.200.200.1 weight 2
下一跳有两个地方,分别是 100.100.100.1 和 200.200.200.1,权重分别为 1 比 2
此方法适用于有多个出口IP时
静态&动态路由¶
路由分静态路由和动态路由:
静态路由可以配置复杂的策略路由,控制转发策略;
动态路由主流算法有两种,「距离矢量算法」和「链路状态算法」
「距离矢量算法」基于 Bellman-Ford 算法,产生BGP 协议
「链路状态算法」基于 Dijkstra 算法,产生OSPF 协议
求最短路径常用的有两种方法:
一种是 Bellman-Ford 算法
一种是 Dijkstra 算法
BGP 又分为两类,eBGP 和 iBGP:
BGP 协议使用的算法是「路径矢量路由协议」(path-vector protocol)。
它是「距离矢量路由协议」的升级版。