# 这一篇都是看这个帖子学的
https://www.baeldung.com/cs/routing-table-entry
必须得表达一下感谢。
# BEFORE YOU START
router的英文愿意就是路由器
(1)
A router is a device that acts as a gateway to a network, and is also responsible for forwarding packets to destination addresses.
router就是路由器,作为网络的出入口的设备
router还负责把数据包送到目的地
路由器上都保存着路由表
(2)英文单词本意:
gateway的英文原意是门户
什么是routing table
(1)路由表保存了已连接的网络:maintain a map of connected networks
(2)路由表保存了不同IP地址的路由(器)地址,原文:
A table that stores the location of routers based on their IP addresses.
This table acts as an address map to various networks. Usually stored in the RAM of most routers or forwarding devices.
As such, a routing table contains information about various networks, and how to get to them.
(3)路由表的生成可以是动态的,也可以是静态的
路由表的设计目的:高效转发数据包
(1)为了数据包转发更高效
ensure the process of forwarding packets is as efficient as possible.
(2)没有路由表,路由器就不知道向哪里转发数据包了
Without the presence of routing tables, routers would have no idea how to get packets to their intended destinations.
# README
路由表的内容大致这个样:
第一列,目标地址
第二列,子网掩码,标示哪些ip与目标地址属于同一子网
第三列,网关,标示下一跳是哪个IP
第四列,使用这条策略时,走哪个网口
总之,每一行都在说明“访问第一列标示的网络时,通过哪个网关”的事情
示例1,走指定的路由
说明:PC1要给PC3发包,因为PC1和PC3不在一个子网,所以PC1就去找Router A;
(可以设想PC1的路由表里有设定“default 0.0.0.0 <Router A的IP> <唯一的网口>”)
数据包到达路由器A之后,路由器根据路由表,找到了一个路线,即红框标示的“向101.25.67.0网段发包时,走网关10.0.0.2、网口eth3”
假如10.0.0.2真的是101.25.67.7的网关,那就可以走通
(或者先这么想:可以设想10.0.0.2的下一跳是101.25.67.1;而101.25.67.1真的是101.25.67.7的网关)
示例2,走默认路由
场景:PC1想给IP地址为200.0.2.2的PC25发包
路由器A检查路由表,发现没有指定的路由规则,那就走红框标示的默认路由规则,去找网关10.0.0.1、网口eth0
默认网关通常是连接到了其它的网络上,比如家庭网络的网关是连接到了公网上
示例3,和第一条路由类似
我很好奇为啥原帖要举这个例子,看起来和示例1一样啊,可能是我没看懂?
想从服务器上指定路由,这样操作:
注意,还有个路由类型的概念
比如:
直接连接的路由(Directly connected route),即网络是直接连接到路由器的网口上;
远端路由(Remote routes),路由到一个远端的网络,一般是通过路由协议习得
好了,我就看懂了这点。。