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 ... .... 家用路由器的五个口是一个局域网? .. note:: 与交换机不同。交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方。 .. note:: 路由器会忽略主机号,只匹配网络号。 对路由表进行维护的方法有几种,大体上可分为以下两类:: 1. 由人手动维护路由记录 2. 根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录 路由协议有很多种,例如 RIP、OSPC、BGP 等都属于路由协议 路由器与交换机之间的关系:: 路由器是基于 IP 设计的,而交换机是基于以太网设计的 IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行 路由器将包的传输工作委托给交换机来进行 注: 实际的路由器有内置交换机功能的,比如用于连接互联网的家用路由器 上面讨论的都是『纯粹的路由器』和『纯粹的交换机』 .. note:: IP 并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器。之后下一个路由器再通过 IP 协议确定下一个路由器的 IP 和 Mac 地址。再通过以太网传输……而这儿两个路由器之间的传输过程是由以太网(交换机)来完成的。 .. note:: 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. 阻止危险网络包的『包过滤功能』 地址转换功能 ------------ .. note:: 具备地址转换功能的设备不仅有路由器,有些防火墙也有地址转换功能, 它的工作方式和路由器是相同的。地址转换功能的作用是在公网 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)。 它是「距离矢量路由协议」的升级版。