Linux上ARP表,路由表的解释

为厘清数据在网络中的传输流向和具体的实现过程,现对ARP表,路由表进行学习如下。

  1. ARP(Address Resolution Protocol)地址解析协议。IP数据包经常通过以太网进行发送,以32位的IP地址作为源/目的地址。但是以太网设备不能识别IP地址,他们是以48位的以太网地址传输以太网数据包的。ARP就是用来实现这种地址转换的协议。

    1. linux中使用 arp -a命令可查看ARP缓存表:

    2. ARP工作时,先发送一个含有目的IP地址的以太网广播数据包,被应答以一个含有IP和以太网对的数据包。其中第一行表示目的IP,第二行表示存储的MAC地址,最后表示网卡接口。

  2. 路由表(routing table),使用route命令可查看linux内核中的路由表。在这个路由表中,第一个表示目的网段,第二个表示网关,第三个表示子网掩码。

    1. 当有两个不同的网络A、B时,由于TCP/IP协议会根据子网掩码来判断两个网络是否相同,所以即使A和B连接在同一个交换机上,他们之间也不能通过TCP/IP进行通信。此时需要借助路由来进行转发,即路由表上标明了下一个应该走的路线,但是这个路线不能说是路由器a,路由器b这样来标识,他是通过路由器某个端口的IP来进行标识的。

    2. 具有路由功能的设备的某个IP地址,就是网关。即,网关是路由器上的一个IP地址,路由器是一个进行转发的实体。

    3. 当A网络中的主机1,想要与B网络中的主机2进行通信时候,在IP层封装源IP、目的IP,通过子网掩码IP比对,发现两个不在一个子网,则查看路由表将数据发送给路由表上对应的网关。最后在mac层封装时,会通过ARP请求,请求得到网关的mac地址,将报文发送给网关。(此时变得只有目的MAC,源IP、目的IP是没有变的)

    4. 总之,在数据进行传送的过程,是由上到下的一个过程,先检查IP(查看是否在一个子网,查看路由表),再进行mac封装(查看ARP表)。

总而言之,这两个表是不同层次的两个表,结合进行使用,保证数据正常传输。

猜你喜欢

转载自blog.csdn.net/dandandean_96/article/details/81624769