浅谈DIRECT路由的作用 联系客服

发布时间 : 星期一 文章浅谈DIRECT路由的作用更新完毕开始阅读9372894f767f5acfa1c7cd63

浅谈DIRECT路由的作用

文档密级:内部公开

一、概述

DIRECT路由是“直连路由”的意思,表示目的网段就是本网段。一般,人们很少关注DIRECT路由,但深入理解DIRECT路由的含义,对于我们理解和掌握二层、三层的工作原理,具有重要的意义。

二、问题引入

有一个简单的问题是:如图1所示,如果连接到同一个LAN switch的两台PC机,它们在不同网段,但通过ARP协议,也能相互发现对方的MAC地址,所以通过二层交换机应该是可以通信的,但实际上为什么就不能ping通呢?

S3026PC110.12.3.128/16

图1 为什么二层交换机不能连接不同网段的PC机

PC210.13.3.88/16

2006-06-14

华为机密,未经许可不得扩散 第5页, 共14页

浅谈DIRECT路由的作用

文档密级:内部公开

三、问题分析

但我第一次思考这个问题时,我觉得这是一个很有价值的问题。我们都知道,正常情况下,二层交换机只能连接同一网段的PC机,但我们从表面上来分析,不同网段的PC机,通过ARP协议也能相互发现对方的MAC地址,然后在二层进行以太网帧的封装,这样也能互相通信的。但实际上为什么就不能呢?

这个问题的焦点是:PC1是如何知道(根据什么)PC2和自己是在同一网段的?

1. 理解windows系统的路由表

首先我们分析两台PC机通信的TCP/IP协议栈。如下:

应用层传输层网络层链路层物理层链路层物理层链路层物理层应用层二层交换机传输层网络层链路层物理层PC1图2 PC机的TCP/IP协议栈

PC2

TCP/IP协议栈分为5层:应用层、传输层、网络层、链路层和物理层。PC机已经实现到了应用层了,所以也存在路由表。

我们在windows系统的“运行”中,输入“cmd”,在打开的窗口中,输入“route print”,就可以查询到PC机的路由表,如下:

Active Routes:

Network Destination Netmask Gateway Interface Metric 10.12.0.0 255.255.0.0 10.12.3.128 10.12.3.128 1 10.12.3.128 255.255.255.255 127.0.0.1 127.0.0.1 1 10.78.234.0 255.255.255.0 10.78.234.140 10.78.234.140 1 10.78.234.140 255.255.255.255 127.0.0.1 127.0.0.1 1

2006-06-14

华为机密,未经许可不得扩散

第6页, 共14页

浅谈DIRECT路由的作用

文档密级:内部公开

10.255.255.255 255.255.255.255 10.12.3.128 10.12.3.128 1

10.255.255.255 255.255.255.255 10.78.234.140 10.78.234.140 1 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 129.0.0.0 255.0.0.0 10.12.3.64 10.12.3.128 1 192.1.0.0 255.255.0.0 10.12.3.64 10.12.3.128 1 224.0.0.0 224.0.0.0 10.12.3.128 10.12.3.128 1 224.0.0.0 224.0.0.0 10.78.234.140 10.78.234.140 1 255.255.255.255 255.255.255.255 10.12.3.128 10.12.3.128 1

每一个Windows系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息。路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信,都要受到路由表的控制。

那么,路由表里的路由表项是什么意思呢?

路由表中的每一个路由项具有五个属性,在这里我们将它们分为四个部分: (1)网络地址(Network Destination)、网络掩码(Net mask):网络地址和网络掩码相与的结果,用于定义本地计算机可以到达的网络目的地址范围。

在添加路由时,Windows要求输入的网络地址和网络掩码相与后的结果必须等于网络地址,否则路由添加会失败。

(2)网关(Gateway,又称为下一跳服务器):在发送IP报文时,网关定义了针对特定的网络目的地址,IP报文发送到的下一跳服务器。

如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口,但是此时接口必须和网关一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。

(3)接口(Interface):接口是本地计算机上为 IP 数据报在网络上转发时所使用的本地网络适配器配置的 IP 地址。网关和接口的IP地址必须在同一网段,否则会造成在使用此路由项时需要调用其他路由项,从而可能会导致路由死锁。

(4)跃点数(Metric):跃点数表示使用路由的开销,通常是到 IP 目标位置的跃点数目。本地子网上的任何设备都是一个跃点,其后经过的每个路由器是另一个跃点。

跃点数的范围是:1 ~ 9999。跃点数越低,代表路由成本越低;跃点数越高,代表路由成本越高。如果到同一目标有不同跃点数的多个路由,则选择跃点数最低的路由。

2006-06-14

华为机密,未经许可不得扩散

第7页, 共14页

浅谈DIRECT路由的作用

文档密级:内部公开

2. 认识DIRECT路由

一般,我们会在PC机上添加到不同网段的永久路由,而处在同一网段的PC机,它们通过二层交换机直接通信,不需要我们添加路由。这就造成了一种假象,好像PC1和PC2在同一网段就不用查路由一样。其实不是这样的。

请注意以上路由表里红色的路由项,它的下一跳和本机网络出口是一样的,如下:

Network Destination Netmask Gateway Interface Metric 10.12.0.0 255.255.0.0 10.12.3.128 10.12.3.128 1

10.78.234.0 255.255.255.0 10.78.234.140 10.78.234.140 1

这种路由就是DIRECT路由,即直连路由,它的下一跳是路由出口的IP地址。直连路由是本文研究的重点,也是我们理解图1中二层交换机原理的关键所在。

3. DIRECT路由的作用

实际上,因为PC机已经实现到了应用层了,所以应用程序的数据封装在TCP报文段中,这个TCP报文段又被装在IP报文里,这个IP报文就有路由功能。所以在网络层,无论这个IP报文是要到同一网段的PC机,还是要到不同网段的PC机,本机的windows系统都会一视同仁,首先在路由表中查找路由,从而决定如何转发。

如果IP报文是到不同网段,一般我们要在PC机上人为地添加一条静态路由,但如果是到同一网段的PC机,那么本机查找的就是DIRECT路由。

只要Ethernet网口是激活的,也就是处于UP状态,那么, PC机或路由器就会自动生成一条到与网口IP地址在同一网段的DIRECT路由。

这样,当PC机或路由器要转发一个IP报文的时候,它首先是去查路由表,当它发现最终匹配到的路由表项的下一跳IP地址,和本机网络接口IP地址相同的时候,它就已经知道,这个IP报文的目的IP地址,和我是在同一个网段的。所以PC机直接发送ARP请求报文,查找目的主机IP地址对应的MAC地址,然后把IP报文封装在链路层的以太网帧里,通过LAN switch发送出去。

2006-06-14

华为机密,未经许可不得扩散 第8页, 共14页