这里我们可以看到路由器是67.23.27.187
(第一跳),但网关是67.23.27.1
。网关和路由器有什么区别?当只配置了网关地址时,我的电脑如何知道路由器的 IP?
[root@jiaoyou ~]# tracepath google.com
1: 67-23-27-187.static.slicehost.net (67.23.27.187) 0.000ms pmtu 1500
1: 67-23-24-2.static.slicehost.net (67.23.24.2) 0.000ms
1: 67-23-24-2.static.slicehost.net (67.23.24.2) 4.000ms
2: core7-aggr511a-1.dfw1.rackspace.net (98.129.84.148) 128.008ms
3: bbr1-core7-vlan2007.dfw1.rackspace.net (174.143.123.117) 4.000ms
4: no reply
5: no reply
[root@jiaoyou ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=jiaoyou
GATEWAY=67.23.27.1
答案1
网关和路由器本质上是相同的。术语“默认网关“ 是指 LAN 上的路由器,其职责是作为 LAN 外计算机流量的第一个接触点。
如果你的局域网有多个路由器,那么指定为默认网关的路由器可以使用ICMP 重定向或其他机制,为给定的目的地提供更合适的路线。
例如
(互联网)---[谷歌] | 64.20.60.99 [R2] 67.23.27/255 |187 |------+--------+------+-----| |9 |1 [电脑][R1] | 67.23.28/255 |----+------+----------| |9 [服务器]
如果路由器 R1 是 PC 的默认网关,当 PC 首次尝试联系 Google 时,PC 会将数据发送到 R1(因为 PC 知道 Google 的 IP 地址不在 PC 的子网中),但是 R1 会告诉 PC,到 64.20.60.99 的更合适路由是通过路由器 R2。PC 会将其添加到其路由表中,因此 R1 不会显示在后续的跟踪路由中。
你电脑上的命令netstat -nr
将显示从配置文件中学到的静态路由,以及通过 ICMP 重定向或监听学到的动态路由路由协议广播/多播。
术语“网关”具有其他含义,与您的问题中的文件和命令无关。
答案2
@RedGrittyBrick 的回答完全正确(“路由器和网关本质上是相同的”),其他一些响应者混淆了这些术语,或者说得客气一点,误解了这个问题(或维基百科)。
就路由而言,“网关”一词几乎只与“默认”一起使用,并且“网关”为每个没有更具体路由可用的网络提供路由。
根据定义,网关必须是执行路由的设备,它可以是专用设备,特别是路由器,也可以是配置为路由的主机,但它执行的是相同的工作。因此,网关可以是路由器,而路由器也可以称为网关。
“默认网关”和路由器之间的 TTL 没有区别,一旦执行路由的设备将 IP 数据包从一个网络/子网传递到另一个网络/子网,它就必须减少 TTL,这在相关的 RFC 中已经说得很清楚了。
网关不需要执行 NAT,通常家庭网络会有一个默认网关,即连接到 ADSL 的路由器,该类型的设备将执行 NAT,而工作子网上的默认网关只会通向更广泛的办公室 LAN,不会执行 NAT。
在回答您关于到达不在本地子网上的某个地方的问题时,@RedGrittyBrick 对 ICMP 重定向的说法再次正确,此外,主机发送数据包时经历的过程如下:
1 - 使用自己的 IP 地址和掩码检查目标数据包的 IP 地址是否在本地子网中。
2 – 如果目的地在本地子网中,则发送该本地设备的 MAC 地址的 ARP 请求,然后将帧发送到主机。
3 – 如果目的地不在本地子网中,则向该网络发送网关 MAC 地址的 ARP 请求,然后将帧发送到网关进行转发(此时可能会启动有关 ICMP 重定向的点)。
因此可以看出,每个主机在发送数据包之前都会做出自己的路由选择(当然,这些数据会被缓存,因此不会对每个数据包都进行查找)。
答案3
路由器充当网关,但具有附加功能。根据维基百科:“网关是大多数路由器的基本功能,尽管其他设备(例如任何 PC 或服务器)也可以充当网关。”
答案4
网关控制网络中的计算机对其他计算机的访问。
路由器是网关的一种特殊形式:它可以在不同网络之间转发 IP 数据包。
在您的情况下,网关知道路由器并将所有非内部地址的请求转发到路由器。