路由器如何转发数据包和选择最佳路径

路由器如何转发数据包和选择最佳路径,第1张

1.引言网络是计算机和其他主机的集合。网络之间的通信称为路由。在一个网络,或子网内部通信不需要网络层设备(路由器)。当主机与外网通信时,路由器作为网关执行网络层为数据包选择的功能。作为主机配置的一部分,每台主机都有指定的默认网关地址,此网关地址是连接到该主机所在网络的路由器接口的地址。路由器是本地网络上的一个主机,主机IP地址和默认网关地址必须在同一网络上。路由器是计算机,它的组成结构类似于任何其他计算机,常见的硬件和软件组件包括:CPU、ROM、内存、闪存、NVRAM、 *** 作系统。路由器主要负责将数据包传送到本地和远程目的网络,其方法是①确定发送数据包的最佳路径②将数据包转发到目的地。路由器使用路由表来确定转发数据包的最佳路径。当路由器收到数据包时,它会检查其目的IP地址,并在路由表中搜索最匹配的网络地址。路由表还包含用于转发数据包的接口。

网桥工作在数据链路层,将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。它可以有效地联接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。

网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号,放大它们,将其送入下一个电缆。它们毫无目的的这么做,对它们所转发消息的内容毫不在意。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。

网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。网络1和网络2通过网桥连接后,网桥接收网络1发送的数据包,检查数据包中的地址,如果地址属于网络1,它就将其放弃,相反,如果是网络2的地址,它就继续发送给网络2。这样可利用网桥隔离信息,将网络划分成多个网段,隔离出安全网段,防止其他网段内的用户非法访问。由于网络的分段,各网段相对独立,一个网段的故障不会影响到另一个网段的运行。

网桥可以是专门硬件设备,也可以由计算机加装的网桥软件来实现,这时计算机上会安装多个网络适配器(网卡)。

网桥的功能在延长网络跨度上类似于中继器,然而它能提供智能化连接服务,即根据帧的终点地址处于哪一网段来进行转发和滤除。网桥对站点所处网段的了解是靠“自学习”实现的。

当使用网桥连接两段LAN时,网桥对来自网段1的MAC帧,首先要检查其终点地址。如果该帧是发往网段1上某一站的,网桥则不将帧转发到网段2,而将其滤除;如果该帧是发往网段2上某一站的,网桥则将它转发到网段2。这表明,如果LAN1和LAN2上各有一对用户在本网段上同时进行通信,显然是可以实现的。因为网桥起到了隔离作用。可以看出,网桥在一定条件下具有增加网络带宽的作用。

网桥的存储和转发功能与中继器相比有优点也有缺点,其优点是:使用网桥进行互连克服了物理限制,这意味着构成LAN的数据站总数和网段数很容易扩充。

网桥纳入存储和转发功能可使其适应于连接使用不同MAC协议的两个LAN。因而构成一个不同LAN混连在一起的混合网络环境。

网桥的中继功能仅仅依赖于MAC帧的地址,因而对高层协议完全透明。

网桥将一个较大的LAN分成段,有利于改善可靠性、可用性和安全性。

网桥的主要缺点是:

由于网桥在执行转发前先接收帧并进行缓冲,与中继器相比会引入更多时延。

由于网桥不提供流控功能,因此在流量较大时有可能使其过载,从而造成帧的丢失。

网桥的优点多于缺点正是其广泛使用的原因。

网桥(Gate Bridge)是工作在OSI第二层(数据主连路层)上的,有在不同网段之间再生信号的功能,它可以有效地联接两个局域网,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。

网桥这种设备看上去有点像中继器。它具有单个的输入端口和输出端口。它与中继器的不同之处就在于它能够解析它收发的数据。网桥属于O S I 模型的数据链路层;数据链路层能够进行流控制、纠错处理以及地址分配。网桥能够解析它所接受的帧,并能指导如何把数据传送到目的地。特别是它能够读取目标地址信息(M A C ),并决定是否向网络的其他段转发(重发)数据包,而且,如果数据包的目标地址与源地址位于同一段,就可以把它过滤掉。当节点通过网桥传输数据时,网桥就会根据已知的M A C 地址和它们在网络中的位置建立过滤数据库(也就是人们熟知的转发表)。网桥利用过滤数据库来决定是转发数据包还是把它过滤掉.

网桥工作在数据链路层,将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。它可以有效地联接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。

网桥通常有透明网桥和源路由选择网桥两大类。

1、透明网桥

简单的讲,使用这种网桥,不需要改动硬件和软件,无需设置地址开关,无需装入路由表或参数。只须插入电缆就可以,现有LAN的运行完全不受网桥的任何影响。

2、源路由选择网桥

源路由选择的核心思想是假定每个帧的发送者都知道接收者是否在同一局域网(LAN)上。当发送一帧到另外的网段时,源机器将目的地址的高位设置成1作为标记。另外,它还在帧头加进此帧应走的实际路径。

iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全。以下对iptables的规则使用做了总结性梳理:

iptables首先需要了解的:

1)规则概念

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。

当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作是添加,修改和删除等规则。

其中:

匹配(match):符合指定的条件,比如指定的 IP 地址和端口。

丢弃(drop):当一个包到达时,简单地丢弃,不做其它任何处理。

接受(accept):和丢弃相反,接受这个包,让这个包通过。

拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。

目标(target):指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。

跳转(jump):和目标类似,不过它指定的不是一个具体的动作,而是另一个链,表示要跳转到那个链上。

规则(rule):一个或多个匹配及其对应的目标。

2)iptables和netfilter的关系:

Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。

3)iptables的规则表和链

表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

链(chains):是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。

Iptables采用“表”和“链”的分层结构,在Linux中现在是四张表五个链。下面罗列一下这四张表和五个链(注意一定要明白这些表和链的关系及作用)。

规则表:

1)filter表——三个链:INPUT、FORWARD、OUTPUT

作用:过滤数据包 内核模块:iptables_filter.

2)Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT

作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat

3)Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)

4)Raw表——两个链:OUTPUT、PREROUTING

作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw

规则链:

1)INPUT——进来的数据包应用此规则链中的策略

2)OUTPUT——外出的数据包应用此规则链中的策略

3)FORWARD——转发数据包时应用此规则链中的策略

4)PREROUTING——对数据包作路由选择前应用此链中的规则

(记住!所有的数据包进来的时侯都先由这个链处理)

5)POSTROUTING——对数据包作路由选择后应用此链中的规则

(所有的数据包出来的时侯都先由这个链处理)

管理和设置iptables规则:

4)iptables传输数据包的过程

1)当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

2)如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。

3)如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6777638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存