Linux系统网络

回眸只為那壹抹淺笑 提交于 2019-12-02 22:22:12

一、路由表

路由表是如何决策的:

[root@centos-clone1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

可以看到路由表中的条目:

当我们ping百度的时候:

[root@centos-clone1 ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=35.0 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=55 time=33.4 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=55 time=33.7 ms

首先会通过DNS服务器解析baidu的IP地址为:14.215.177.38

路由表是如何决策该怎么走:

1)将14.215.177.38和每一条路由表的mask做按位与操作,确定要到达哪个网络。

2)将与操作的结果与Destination匹配

3)匹配上的,就将数据包从该条路由对应的端口发出去,目的MAC地址为网关。

例如14.215.177.38只有与0.0.0.0按位与得到0.0.0.0,与Dest的0.0.0.0能匹配上。所以交给对应的Iface:eth0。

Destination为0.0.0.0的路由项也叫默认路由,默认网关。

 

二、ARP表(MAC表)

[root@centos-clone1 ~]# arp -a
? (192.168.1.1) at e8:ab:f3:e2:f0:49 [ether] on eth0
? (192.168.1.8) at bc:ae:c5:1a:dd:96 [ether] on eth0

我们看192.168.1.1这条,这个IP地址是默认网关的地址。

当一个数据包查找路由表后,需要将该包发给默认网关,则需要查找默认网关的MAC地址。

在ARP中查找到第一条,默认网关的MAC地址是:e8:ab:f3:e2:f0:49,则该数据包二层信息中的目的MAC地址填写该MAC地址。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!