网络白痴发问了 路由表, ARP表的问题

网络小白
  • 273

路由器的 路由表 是什么时候生成的(崭新的路由器),如何生成的?

路由器中的ARP表什么时候生成的,如何生成的?

为什么PC上也有路由表? 不应该是路由器中才有么?

路由表, mac表, ARP表, 哪些是 交换机中需要有, 哪些是路由器中需要有, 哪些是PC需要?

PC上的ARP表中记录 ip-mac 关系, mac地址指的是最终的目标服务器的mac地址, 还是说是下一跳的地址?

看资料说路由表中记录的只要内容大致是 ip地址 -> 路由器某个接口, 我们家庭的路由器就4个LAN口, 个人理解是这4个口如果直接连接了不同的PC, 那数据包通过路由表确定了某个口之后, 按理说通过这个口直接就到目标PC了, 还会检测IP,MAC么? 如果这个口接的是交换机呢?

只是太欠缺, 看资料说的都很残缺, 可能也是因为没有基础, 实在看不出个所以然, 大神顺道再推荐点资料,书籍啥的

回复
阅读 3.2k
4 个回答

计算机网络我也是看了就忘,哎,难受。
书籍的话,入门无非就是图解系列和大学的计算机网络,深入的就仁者见仁了。
线上课程,极客时间的HTTP和网络协议我都看了一遍,个人觉得还行。

首先你要知道有两个network layer都可以有路由表,一是数据链路层(好像也可以叫MAC层来着,有点忘了),二是网络层。使用MAC地址的路由表工作在数据链路层,ARP协议工作在网络层。交换机、路由器和PC都可以有多个虚拟的或物理的网络接口。交换机可以根据入站的数据包(incoming packet)确定拥有某一MAC地址的设备在某一接口上,从而向路由表中添加路由记录;路由器可以使用预先配置好的路由表,或通过DHCP协议自动配置路由。家用的路由器本身同时是交换机、路由器、DHCP服务器、NAT服务器(如果有管理页面,那还是一个Web服务器)。

数据链路的路由表记录的是MAC地址与网络接口的联系;而ARP表是使用ARP协议生成的,它记录的是IP与MAC地址的联系,它是按需生成的。无论是路由器还是PC都需要路由表,因为它们的地位实际上是平等的,它们都需要这些路由信息才能正常工作。你可以想象一下,无论是路由器还是PC,你都需要知道一个数据包应该从哪个网络接口发送才能送达你指定的MAC地址(当然你可以选择广播);同样的,如果你不知道拥有某个IP地址的设备的MAC地址,你甚至无法构造出数据包来。此外,PC也可以作为路由器/交换机工作。

ARP表中的MAC地址不一定是下一跳的地址,但一定是本网络中的设备的地址(ARP协议仅在本网络中工作),这样交换机才知道应该将这个数据包往哪里转发。如果你的“目标”在同一个网络中,则你使用ARP询问“目标”的MAC地址时,“目标”会直接回复它的地址,从而你的ARP表中的MAC地址就是“目标”的MAC地址;如果你的“目标”不在同一个网络中,且你的网关是你的路由器,则你在询问“目标”的MAC地址时,网关就会回复给你它的MAC地址,意思就是,“我来帮你转发吧”,此时你的ARP表中的MAC地址就是路由器(网关)的MAC地址。

上述内容仅基于我所学知识和理论推断,实际的路由算法实现可能有不同的策略和行为。

计算机网络的教科书应该不少,你就搜“计算机网络”相关的书即可。

ARP表中的MAC地址不一定是下一跳的地址,但一定是本网络中的设备的地址(ARP协议仅在本网络中工作),这样交换机才知道应该将这个数据包往哪里转发。如果你的“目标”在同一个网络中,则你使用ARP询问“目标”的MAC地址时,“目标”会直接回复它的地址,从而你的ARP表中的MAC地址就是“目标”的MAC地址;如果你的“目标”不在同一个网络中,且你的网关是你的路由器,则你在询问“目标”的MAC地址时,网关就会回复给你它的MAC地址,意思就是,“我来帮你转发吧”,此时你的ARP表中的MAC地址就是路由器(网关)的MAC地址。

我觉得这里需要稍作修改。
客户端只会对同 IP 网段的以太网设备查询 MAC 地址,以发送 ARP 广播的方式进行。
若不同 IP 网段,则不会发 ARP 广播,直接把 IP 包丢给网关。

对着TCP/IP分层,理解下路由,再学习下以太网。

简单的说,IP通信的时候,源主机的会将目的IP地址与自己的掩码进行 与计算。如果是同网段,则进行二层转发,如果不是同一网段则进行三层转发。

二层转发 通过MAC地址进行通信,如何知道目的IP的MAC地址? 通过ARP协议查询。
ARP查询获得目的主机的mac,生成ARP表,以及MAC地址表。ARP表记录IP到IP到mac的转换。MAC表记录,mac地址与端口的关系。

三层转发 通过查询路由表,将对应的IP报文发送给路由表的下一跳地址。PC的网关就是一条默认路由,表示,所有的转发都给网关,网关就是pc转发所有IP的下一跳IP.如何转发给 网关?网关与本机是同一网段,进行二层转发呀!

1、PC有完整的协议栈,所以 它需要处理三层的IP转发,也要完成同网段的二层通信,所以这些表都会有

2、路由器的路由表,必须要你手动添加,或者启用路由协议自动生成。不然路由表就是空的。
PC你不配置默认网关,或者通过DHCP获取网关,路由表也是空的。。。。

3、路由器转发报文,如何转发给下一跳,需要知道下一跳的mac地址,就需要通过arp协议查询,所有会有ARp表和MAC地址表。

4、你们家的路由器,WAN口是一个路由口,4个lan口可以看出一个交换机。4个口如果直接连接了不同的PC,家庭路由器转发4个主机间的报文,通过mac表进行转发,不会经过路由。

4个pc访问互联网,数据先发给网关,网关查询路由表后发给运营商网络。

宣传栏