理解Windows中的路由表和默认网关

简介:
理解 Windows 中的路由表和默认网关
 
每一个 Windows 系统中都具有 IP 路由表 它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息。路由表是 TCP/IP 通信的基础,本地计算机上的任何 TCP/IP 通信都受到路由表的控制。
理解路由表
你可以运行  route print   netstat -r  显示本地计算机上的路由表,如下图所示:
C:\Documents and Settings\administrator> route print
=========================================================================== 
Interface List 
0x1 ........................... MS TCP Loopback interface 
0x10003 ...00 50 8d 4f 5f c5 ...... Realtek RTL8139/810x Family Fast Ethernet NIC 
=========================================================================== 
=========================================================================== 
Active Routes:
 
Network Destination
Netmask
Gateway
Interface
Metric
1
0.0.0 .0
0.0.0 .0
192.168.1.1
192.168.1.6
30
2
127.0.0.0
255.0.0.0
127.0.0.1
127.0.0.1
1
3
192.168.1.0
255.255.255.0
192.168.1.6
192.168.1.6
30
4
192.168.1.240
255.255.255.240
192.168.1.8
192.168.1.6
20
5
192.168.1.240
255.255.255.240
192.168.1.7
192.168.1.6
15
6
192.168.1.6
255.255.255.255
127.0.0.1
127.0.0.1
30
7
192.168.1.255
255.255.255.255
192.168.1.6
192.168.1.6
30
8
224.0.0.0
240.0.0.0
192.168.1.6
192.168.1.6
30
9
255.255.255.255
255.255.255.255
192.168.1.6
192.168.1.6
1
Default Gateway: 192.168.1.1 
=========================================================================== 
Persistent Routes: 
None
 
 
路由表中的每一个路由项具有五个属性,在此我将它们分为四个部分:
1 网络地址 Network Destination )、网络掩码 Netmask ):网络地址和网络掩码相与的结果用于定义本地计算机可以到达的网络目的地址范围。通常情况下,网络目的地址范围包含以下四种:
  • 主机地址;某个特定主机的网络地址,网络掩码为255.255.255.255,如上表中的679
  • 子网地址,某个特定子网的网络地址,如上表中的45
  • 网络地址;某个特定网络的网络地址,如上表中的238
  • 默认路由;所有未在路由表中指定的网络地址,如上表中的1,在后文将详细描述;
在添加路由时, Windows 要求输入的网络地址和网络掩码相与后的结果必须等于网络地址 ,否则路由添加会失败。
2 网关 Gateway ,又称为下一跳服务器):在发送 IP 数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口, 但是此时接口必须和网关一致 ;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。
3 接口 Interface ):接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。 网关必须位于和接口相同的子网(默认网关除外) ,否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁。
4 跃点数 Metric ):跃点数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。跃点数越低,代表路由成本越低;跃点数越高,代表路由成本越高。当具有多条到达相同目的网络的路由项时, TCP/IP 会选择具有更低跃点数的路由项
路由确定过程
TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:
·         TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项;
·         当计算完路由表中所有的路由项后,TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项;如果存在多个具有最低跃点数的最长匹配路由,那么:
§         如果是发送响应数据包,并且数据包的源IP地址是某个最长匹配路由的接口的IP地址,那么选择此最长匹配路由;
§         其他情况下均根据最长匹配路由所对应的网络接口在网络连接高级设置中的绑定优先级来决定,如下图所示:
 
 
网关和接口确定过程
在确定使用的路由项后,网关和接口通过以下方式确定:
·         如果路由项中的网关地址为空或者为本地计算机上的某个网络接口,那么在发送数据包时:
§         通过路由项中对应的网络接口发送;
§         IP地址为此网络接口的IP地址;
§         MAC地址为此网络接口的MAC地址;
§         目的IP地址为接收此数据包的目的主机的IP地址;
§         目的MAC地址为接收此数据包的目的主机的MAC地址;
·         如果路由项中的网关地址并不属于本地计算机上的任何网络接口,那么在发送数据包时:
§         通过路由项中对应的网络接口发送;
§         IP地址为路由项中对应网络接口的IP地址;
§         MAC地址路由项中对应网络接口的MAC地址;
§         目的IP地址为接收此数据包的目的主机的IP地址;
§         目的MAC地址为网关的MAC地址;

在此我以上面的路由表为基础,举例进行说明:
·         和单播IP地址 192.168.1.8 的通信:在进行相与计算时,1项匹配,但是3项为最长匹配路由,因此选择3项。3项的网关地址为本地计算机的网络接口192.168.1.6,因此发送数据包时,目的IP地址为192.168.1.8、目的MAC地址为192.168.1.8MAC地址(通过ARP解析获得)。
·         和单播IP地址 192.168.1.6 的通信:在进行相与计算时,13项匹配,但是6项为最长匹配路由,因此选择6项。6项的网关地址为本地环回地址127.0.0.1,因此直接将数据包发送至本地环回地址。
·         和单播IP地址 192.168.1.245 的通信:在进行相与计算时,134项匹配,但是45项均为最长匹配路由,所以此时根据跃点数进行选择,项具有更低的跃点数,因此选择5项;在发送数据包时,目的IP地址为192.168.1.254、目的MAC地址为192.168.1.7MAC地址(通过ARP解析获得)。
·         和单播IP地址 10.1.1.1 的通信:在进行相与计算时,只有 项匹配;在发送数据包时,目的IP地址为10.1.1.1、目的MAC地址为192.168.1.1MAC地址(通过ARP解析获得)。
·         和子网广播地址 192.168.1.255 的通信:在进行相与计算时,1345项匹配,但是7项为最长匹配路由,因此选择7项。7项的网关地址为本地计算机的网络接口,因此在发送数据包时,目的IP地址为192.168.1.255,目的MAC地址为以太网广播地址FF:FF:FF:FF:FF:FF
默认路由与默认网关
由于在路由表中存储针对每个主机或子网的路由项不可行,因此提出了默认路由的概念,默认路由中的网关称为默认网关。默认路由的网络地址为0.0.0.0,网络掩码为0.0.0.0,它匹配任何网络通信,因此当到达特定主机或特定子网的路由并未在路由表中指定时,均可以通过默认路由来进行转发。如果没有设置默认路由,那么无法到达未在路由表中指定路由项的网络目的地址。
设置默认路由后,把数据包的路由责任移交到了路由器,优点是简化了本地计算机上的路由表和配置,缺点则是计算机无法明确目的地址是否可达,从而可能发送针对不可到达地址的流量。虽然位于路由路径上的路由器知道目的地址不可达时会使用ICMP目的地址不可达信息来通知原始发送主机,但是这个过程中,已经占用了额外的网络流量。
Windows系统中,创建默认路由可以通过以下两种方式实现:
·         在网络接口的TCP/IP选项中设置默认网关,从而创建默认路由;
·         使用 route add 命令添加网络地址为0.0.0.0、网络掩码为0.0.0.0的默认路由;
推荐大家总是使用前一种方式。
 
 
配置多个默认网关
你可以在单个网络接口、多个网络接口上同时配置多个默认网关,但是TCP/IP同时只会使用一个默认网关(默认路由),这个当前使用的默认网关称为活动默认网关(活动默认路由)。当不同网络接口所连接的网络之间没有连接性时(如一个网络接口连接到Internet,而一个网络接口连接到内部网络),在多个网络接口上同时配置默认网关可能会带来连接性问题(具体的问题我将在后文描述),因此微软不推荐大家在多个网络接口上同时配置默认网关,并且当你进行这种配置时会进行警告,不过不会阻止你的操作。
当在配置多个默认网关时,将根据以下条件来选择活动默认网关:
·         当路由表中具有多个默认网关时,TCP/IP根据跃点数来进行选择,跃点数最低的默认网关具有最高的优先级;
·         如果路由表中具有多个具有最低跃点数的默认网关,那么TCP/IP根据默认网关对应的网络接口在网络连接高级设置中的绑定优先级来决定,如下图所示:
 
 
死网关检测
TCP/IP会通过死网关检测算法来检测当前活动的默认网关是否存活,如果活动默认网关发生故障,则TCP/IP会及时调整路由表,选择使用下一个默认网关,选择方式与原方式一致,只是排除了发生故障的原活动默认网关。
死网关检测算法的完整描述如下:
TCP/IP在通过活动默认网关向某个目标IP地址进行TCP通信时,如果失败的尝试次数达到TcpMaxDataRetransmissions注册表值(默认为5)的一半(即3次)还没有收到响应,TCP/IP将到达该目标IP地址的通信改为使用列表中的下一默认网关。当超过25%TCP连接转向下一默认网关时,TCP/IP将活动默认网关修改为这些连接当前使用的默认网关。
如果此时原始默认网关从故障中回复,TCP/IP将继续使用当前的活动默认网关,而不会转移到原始默认网关,除非重启计算机。如果当前的活动默认网关也出现故障,那么TCP/IP就会继续尝试使用列表中的下一个默认网关,在尝试完整个列表后将返回到列表的开始,又从第一个默认网关开始进行尝试。
死网关检测仅监视TCP流量,如果其他类型的流量连接失败,不会切换默认网关。另外TCP是端到端的协议,因此即使当前默认网关完全正常,本地计算机的TCP通信失败也可能会导致切换默认网关。
当不同网络接口所连接的网络之间没有连接性时(如一个网络接口连接到Internet,而一个网络接口连接到内部网络),如果在多个网络接口上同时配置默认网关,在活动默认网关出现故障导致切换默认网关时,就可能会引起连接性故障。比如活动默认网关为Internet连接,当它出现问题时,此时默认网关切换为内部连接,此时,本地计算机将无法再访问位于Internet连接上的主机。对于这种情况,微软建议使用 route add 来添加对应目的网络的匹配路由,而不是设置多个默认网关。

本文转自gauyanm 51CTO博客,原文链接:http://blog.51cto.com/gauyanm/123897,如需转载请自行联系原作者
相关文章
|
5月前
|
运维 安全 数据管理
数据管理DMS产品使用合集之windows上安装网关时,token都是新的,报错:无效的token,该怎么办
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
64 4
|
存储 缓存 对象存储
利用云存储网关在Windows上挂载OSS
概述 阿里云OSS提供了海量低成本高可靠的对象存储,非常适合于存储文件,图像,视频等非结构化数据,同时也提供了丰富的SDK生态给开发者集成使用。但是对于开发资源有限的小企业或者个人用户而言,直接使用OSS存储还是存在诸多不便。
9570 0
|
应用服务中间件 nginx Windows
windows中查看本机ip,网关信息,端口号
windows中查看本机ip,网关信息,端口号
302 0
|
存储 缓存 弹性计算
阿里云云存储网关(CSG)软件版使用详细教程(Windows版)
本文将详细介绍如何在Windows操作系统中安装并使用阿里云云存储网关(CSG)软件版。
937 0
阿里云云存储网关(CSG)软件版使用详细教程(Windows版)
|
存储 Linux 对象存储
如何利用用云存储网关作为Windows docker存储访问OSS
本文像用户介绍在windows的容器环境中,如果利用阿里云云存储网关的smb共享作为后端存储,实现docker容器内的数据上云,在docker中直接访问对象存储OSS中的数据。
2728 0
如何利用用云存储网关作为Windows docker存储访问OSS
|
存储 对象存储 Windows
利用云存储网关的SMB共享搭建windows FTP服务器访问对象存储OSS
本文介绍如何利用阿里云存储网关的SMB共享,在windows服务器上搭建FTP服务器,让用户可以直接通过FTP上传文件到阿里云对象存储(OSS)当中。
3515 0
利用云存储网关的SMB共享搭建windows FTP服务器访问对象存储OSS
|
存储 缓存 安全
利用云存储网关搭建Windows文件共享服务器
如果你希望你的数据最终能够存储于阿里云对象存储之上,同时你又希望能够提供传统的文件共享的接口,主要就是SMB/NFS的文件访问协议接口,那么云存储网关绝对是你的不二选择。本文将主要介绍如何基于云存储网关搭建Windows文件共享服务器。
3211 0
利用云存储网关搭建Windows文件共享服务器
|
存储 缓存 网络协议
云存储网关结合Active Directory服务搭建Windows文件共享服务器
本文通过具体的实践展示了如何利用云存储网关搭建一个和Active Directory集成的文件共享服务器。让用户在感受到传统文件协议的便利的同时可以享受阿里云对象存储服务所带来的海量存储空间以及高可靠性等独特优势。
3382 0
|
存储 缓存 安全
云存储网关使用Windows权限控制管理数据访问权限
Windows权限控制功能是云存储网关在1.1.0版本推出的新特性,旨在给用户提供更加灵活的用户权限配置,满足不同用户的需求,具体来说它能够允许用户进行精细到每个文件或者文件夹粒度的权限控制,能够有效的保证数据安全性。
1858 0
云存储网关使用Windows权限控制管理数据访问权限
|
网络协议 网络架构 Windows