路由下一跳与出站接口区别
来源:互联网 发布:旷视科技 知乎 编辑:程序博客网 时间:2024/04/29 22:26
用下一跳IP地址,下一跳IP地址,叫递归静态路由,路由器在转发数据包到目标网络的时候,首先要先解析下一跳的可达性,换句话说总共要解析两次,从转发效率上来说低于直连静态路由(用出站口)。递归静态路由一般用在多路访问环境,所以下一跳理论上来说必须指定一个IP地址,不能像点到点那样随便乱丢包。
现在的新问题是,按照这个原理,我们在以太网上做静态路由的时候,为什么下一跳指定出站接口,路由器依然知道如何转发数据包呢?按照我们刚才讲的理论,在多路访问环境下如果用出站接口做静态路由,路由器应该不知道下一跳是谁才对。这是为什么呢?
答案是代理ARP。但是这样做也有很大的缺点,就是说理论上本机最多会产生2^32条ARP缓存,相当消耗内存。所以多路访问环境不建议使用直连静态路由,建议采用递归静态路由。
在配置静态路由时,即可指定接口,也可指定下一跳。使不同的网段的主机通信,到底采用哪种方法,需要根据实际情况而定,在点到点的网络环境中,无论是指定下一跳地址还是接口地址,其效果都一样。但是在广播网络环境下,指定下一跳地址或接口地址就会起到不同的效果,如果指定为接口地址的话,那么不管数据包的目标地址是否有效,每次数据包到达时都会触发一个ARP请求,又因为ARP代理在IOS环境下默认是打开的,这意味着路由器需要配备大量的ARP高速缓存,而如果指定为下一跳地址的话,仅当第一个去往目的地址的数据包到达时才会触发ARP请求。
网关和接口确定过程
在确定使用的路由项后,网关和接口通过以下方式确定:
如果路由项中的网关地址为空或者为本地计算机上的某个网络接口,那么在发送数据包时:
通过路由项中对应的网络接口发送;
源IP地址为此网络接口的IP地址;
源MAC地址为此网络接口的MAC地址;
目的IP地址为接收此数据包的目的主机的IP地址;
目的MAC地址为接收此数据包的目的主机的MAC地址;
如果路由项中的网关地址并不属于本地计算机上的任何网络接口,那么在发送数据包时:
通过路由项中对应的网络接口发送;
源IP地址为路由项中对应网络接口的IP地址;
源MAC地址路由项中对应网络接口的MAC地址;
目的IP地址为接收此数据包的目的主机的IP地址;
目的MAC地址为网关的MAC地址;
在此以上面的路由表为基础,举例进行说明:
http://wdqfirst.blog.163.com/blog/static/113347411201122825221701/
和单播IP地址 192.168.1.8 的通信:在进行相与计算时,1、3 项匹配,但是3项为最长匹配路由,因此选择3项。3项的网关地址为本地计算机的网络接口192.168.1.6,因此发送数据包时,目的IP地址为 192.168.1.8、目的MAC地址为192.168.1.8的MAC地址(通过ARP解析获得)。
和单播IP地址 192.168.1.6 的通信:在进行相与计算时,1、3、6 项匹配,但是6项为最长匹配路由,因此选择6项。6项的网关地址为本地环回地址127.0.0.1,因此直接将数据包发送至本地环回地址。
和单播IP地址 192.168.1.245 的通信:在进行相与计算时,1、3、4、5 项匹配,但是4、5项均为最长匹配路由,所以此时根据跃点数进行选择,5 项具有更低的跃点数,因此选择5项;在发送数据包时,目的IP地址为192.168.1.254、目的MAC地址为192.168.1.7的MAC地址 (通过ARP解析获得)。
和单播IP地址 10.1.1.1 的通信:在进行相与计算时,只有 1 项匹配;在发送数据包时,目的IP地址为10.1.1.1、目的MAC地址为192.168.1.1的MAC地址(通过ARP解析获得)。
和子网广播地址 192.168.1.255 的通信:在进行相与计算时,1、3、4、5、7 项匹配,但是7项为最长匹配路由,因此选择7项。7项的网关地址为本地计算机的网络接口,因此在发送数据包时,目的IP地址为 192.168.1.255,目的MAC地址为以太网广播地址FF:FF:FF:FF:FF:FF。
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
--- 192.168.10.134 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
>
>
> wan show
VCC Con. Service Interface Proto. IGMP Status IP
ID Name Name address
N/A 0 pppoe_usb3g ppp7 PPPoE Disable Unconfigured (null)
N/A 0 ipoe_eth0 eth0 IPoE Enable Connected 192.168.10.86
>
> route show
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 br0
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
192.168.10.0 192.168.10.134 255.255.255.0 UG 1 0 0 br0
default 192.168.10.134 0.0.0.0 UG 0 0 0 eth0
>
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
^C
--- 192.168.10.134 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
>
>
> ifconfig br0
br0 Link encap:Ethernet HWaddr 00:1A:2B:07:11:00
inet addr:192.168.10.85 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:3121 errors:0 dropped:0 overruns:0 frame:0
TX packets:2477 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:391982 (382.7 KiB) TX bytes:2480685 (2.3 MiB)
> ifconfig br0 192.168.1.85
> route show
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.10.134 0.0.0.0 UG 0 0 0 eth0
>
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
64 bytes from 192.168.10.134: seq=0 ttl=64 time=1.221 ms
64 bytes from 192.168.10.134: seq=1 ttl=64 time=1.151 ms
64 bytes from 192.168.10.134: seq=2 ttl=64 time=2.143 ms
64 bytes from 192.168.10.134: seq=3 ttl=64 time=1.561 ms
总结:lan和wan的网段不能相同
- 路由下一跳与出站接口区别
- 怎样判断静态路由下一跳和出站接口的区别
- 配置静态路由的下一跳使用出站接口和下一跳IP的差别
- 路由下一跳为接口 或 IP地址的区别
- 下一跳:使用IP地址与接口的区别
- (others)下一跳路由
- AR路由配置策略路由重定向下一跳或出接口实例
- Linux3.5内核以后的路由下一跳缓存
- 静态路由中下一跳
- ORF-出站路由过滤
- H3CNE 312题和313题 直连路由静态路由的下一跳问题
- 网关 下一跳
- 命令行下配置路由和远程访问内的NAT/基本防火墙入出站筛选
- 设置虚拟网络接口与设置软路由的区别
- 最大的疑问:下一跳???
- 路由器的下一跳计算(网关)
- Docker的“下一跳”在哪里?
- Docker的“下一跳”在哪里?
- 重构自己的代码
- TCP/IP详解学习笔记(2)-数据链路层 .
- 13.01.17 c# Linq 从查询的结果中返回指定数量的记录
- Project Euler 38 Pandigital mutiples(枚举)
- [gkk]微博的评价与@
- 路由下一跳与出站接口区别
- 3D引擎多线程
- my97 演示页面
- 怎么让一个html文件在另一个html文件中适当的位置直接显示出来
- matlab仿真错误记录
- 虚拟机安装Linux一些设置整理
- 很有道理的句子
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- 高性能Web服务器Nginx的配置与部署研究