路由器转发数据包过程详解(2010-05-22 20:59:09)转载标签:分类:学习交流路由器数据包转发it主机PC1向主机PC2发个数据包,中间经过B路由器,请问源地址和源MAC是怎么变化的?答:就假设拓扑图是这个样子吧:PC1-----(B1-B2) -------PC2B1和B2是路由器B上的两个接口, PC1和PC2是PC,由主机PC1向主机PC2发送数据包,那么在主机PC1形成的数据包的目的IP就是PC2的IP,源IP就是主机PC1的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是PC1的MAC地址。
转发过程:假如是第一次通信PC1没有PC2的ARP映射表PC1在本网段广播一个数据帧(目的MAC地址为:FFFF:FFFF:FFFF:FFFF)帧格式为:段的路由。
此时路由器给PC1回复一个应答数据包,告诉PC1自己的MAC地址就是PC1要通信的PC2主机的MAC地址。
而此时PC1建立ARP映射表,将该MAC地址(即路由器的B1接口)与PC2的IP地址建立映射关系。
实际上是路由器对其进行了“欺骗”。
其应答数据帧格式为:对于路由器B同样建立了自己的ARP映射表:将PC1的MAC地址与PC1的IP地址映射。
数据包在流出B2接口的时候其数据包的帧格式为:PC2所在的网段各主机将自己的IP地址与数据包中的目的IP地址比对。
若符合则将自己的MAC地址替换上广播MAC地址,并回复该数据帧:的对应关系调出来。
将PC1的MAC地址覆盖路由器B2接口的MAC地址。
另一方面路由器更新ARP映射表,将PC2的MAC地址与PC2的IP地址映射。
此时流出路由器B1接口的数据包的帧格式为:地址建立对应关系。
此后每次通信时由于PC1要与PC2通信时。
由于PC1已经建立了到PC2IP地址的ARP映射,所以下次要通信时直接从本地ARP调用。
简单说一下,网络设备间(包括设备之间和计算机之间)如果要相互通信的话必需经过以下这几个步骤:(以TCP/IP协议通信为例)1、发送端的应用程序向外发出一个数据包。
2、系统判断这个数据包的目标地址是否在同一个网段之内。
3、如果判断出这个数据包的目标地址与这台设备是同一个网段的,那么系统就直接把这个数据包封装成帧,这个数据帧里面就包括了这台设备的网卡MAC地址,然后这个帧就直接通过二层设备(也就是大家说的不带路由的交换机/HUB之类的~^-^)发送给本网段内的目标地址。
4、如果这个数据包的目标地址不在这个网段,系统就把这个数据包转发给网关!网关收到之后经过重新封装,再重复这一步,把数据转发给其它网段,以此类推,广域网就是这样建立起来的!这里的网关可以是大家所熟悉的代理PC、路由器,三层交换机、防火墙等~作者:要死掉啦回复日期:2003-1-322:13:33宫本大哥的贴也有说明:什么是网关?有什么用?真正意义上的网关实际上是一个应用层的设备。
实际上在我们现在的网络中,它只表示一个网络的出口。
在一个网络中,机器A要发一个数据包给机器B,这时A要比较B的机器的IP和自己在不在同一个网络中,如果在,那么数据包直接被发送出去,如果不在,那么A会把机器送到网关,如果没有设网关,那么机器A就会把这个数据包丢弃掉。
还是以学校为例,网关就像是我们每个教室的门一样,出了这个教室门,我们就可以到另外一个班。
当我要送东西给一个同学时,这个同学如果在我们班里,我就可以直接送给他,如果他不在我们班,那么我就要走出教室门,如果没有教室门,那我就把东西丢了。
作者:宫本不赢回复日期:2003-1-322:30:11我在我的网络基本知识的讲座中说得不够精确,实际上:在一个网络中,机器A要发一个数据包给机器B,那么A会先检查路由表,如果路由表里有到目标地址的路由,就会根据路由把数据发送出去,如果路由表里没有,就会把数据送到网关,如果没有设网关,那么机器A就会把这个数据包丢弃掉。
我估计你能访问内网是因为你的路由表里有到你内网的路由,所以它并不通过网关。
作者:南方懒猫回复日期:2003-1-322:31:58理论地东东说完了。
请说点实际的东东了~~~~5、当一个网关(三层设备)收到另一个网段送上来的数据包,就马上打开它,并找出这个数据包送达的目标IP地址。
6、系统根据这个IP地址,查找自身的路由表,决定这个数据包应该由哪个端口转发出去才能最快的到达目标。
7、当设备决定好了数据转发的最佳路径,就重新把这个数据包进行封装,继续转发给下一个路由器。
8、当数据包经过以上几个步骤发送与转发,终于到达了目标网段之后,也就是在最后的一个网关设备那里。
网关设备打开这个送到的数据包并分析其中的目标IP。
9、网关设备得知送到的这个数据包正是在本网段之后,就马上查找内部的MAC表。
找到IP与MAC的对应关系,重复步骤3,把这个数据包封装成帧,最终将这个数据包送到目标机器的网卡上!10、目标主机的网卡收到网关设备发送过来的这个数据包。
验证之后,将其传送给最高层,即:应用程序。
至此,整个通信过程就这样建立起来了~~∙漫谈三层交换机技术工作原理∙ 2010-03-16 15:54 佚名电子产品世界我要评论()有关三层交换机技术工作过程的简单概括可以总结为:简洁的路由软件使路由过程简化,使我们的工作变得更加的游刃有余。
大家都知道三层交换机适用于一些小型的局域网络和一些中小型的企业,这个就不用在这里做过多的介绍了,那么下面就向大家介绍下有关三层交换机技术,相信这是许多用户日常中可以用的到的。
三层交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。
交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。
如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发,这一过程称为泛洪(flood),广播帧和组播帧向所有的端口转发。
学习:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。
转发/过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播/组播帧则转发至所有端口)。
消除回路:当交换机包括一个冗余回路时,以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。
三层交换机的每一个端口所连接的网段都是一个独立的冲突域。
交换机所连接的设备仍然在同一个广播域内,也就是说,交换机不隔绝广播(惟一的例外是在配有VLAN的环境中)。
交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路层的网络设备(此处所述交换机仅指传统的二层交换设备)。
依照交换机处理帧时不同的操作模式,主要可分为两类:存储转发:交换机在转发之前必须接收整个帧,并进行错误校检,如无错误再将这一帧发往目的地址。
帧通过交换机的转发时延随帧长度的不同而变化。
直通式:交换机只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部的被接收,也不进行错误校验。
由于以太网帧头的长度总是固定的,因此帧通过交换机的转发时延也保持不变。
二层交换(也称为桥接)是基于硬件的桥接。
基于每个末端站点的唯一MAC地址转发数据包。
二层交换的高性能可以产生增加各子网主机数量的网络设计。
其仍然有桥接所具有的特性和限制。
三层交换是基于硬件的路由选择。
路由器和第三层交换机对数据包交换操作的主要区别在于物理上的实施。
四层交换的简单定义是:不仅基于MAC(第二层桥接)或源/目的地IP地址(第三层路由选择)。
同时也基于TCP/UDP应用端口来做出转发决定的能力。
其使网络在决定路由时能够区分应用。
能够基于具体应用对数据流进行优先级划分。
它为基于策略的服务质量技术提供了更加细化的解决方案。
提供了一种可以区分应用类型的方法。
二层交换技术从网桥发展到VLAN(虚拟局域网),在局域网建设和改造中得到了广泛的应用。
第二层交换技术是工作在OSI七层网络模型中的第二层,即数据链路层。
它按照所接收到数据包的目的MAC地址来进行转发,对于网络层或者高层协议来说是透明的。
它不处理网络层的IP地址,不处理高层协议的诸如TCP、UDP的端口地址,它只需要数据包的物理地址即MAC地址,数据交换是靠硬件来实现的,其速度相当快,这是二层交换的一个显著的优点。
但是,它不能处理不同IP子网之间的数据交换。
传统的路由器可以处理大量的跨越IP子网的数据包,但是它的转发效率比二层低,因此要想利用二层转发效率高这一优点,又要处理三层IP数据包,三层交换技术就诞生了。
三层交换技术的工作原理第三层交换工作在OSI七层网络模型中的第三层即网络层,是利用第三层协议中的IP包的包头信息来对后续数据业务流进行标记,具有同一标记的业务流的后续报文被交换到第二层数据链路层。
从而打通源IP地址和目的IP地址之间的一条通路。
这条通路经过第二层链路层。
有了这条通路,三层交换机就没有必要每次将接收到的数据包进行拆包来判断路由,而是直接将数据包进行转发,将数据流进行交换。
近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。
浅谈vpn实现原理众所周知,由于公共IP的短缺,我们在组建局域网时,通常使用保留地址作为内部IP,这些保留地址Internet上是无法被路由的,所以在正常情况下我们无法直接通过Internet访问到在局域网内的主机。
为了实现这一目的,我们需要使用VPN隧道技术,其实现过程可以通过下面的图示说明:- 通常情况下,VPN网关采用双网卡结构,外网卡使用公共IP接入Internet;- 如果网络一的终端A需要访问网络二的终端B,其发出的访问数据包的目标地址为终端B的IP (内部IP);- 网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新的数据包(VPN数据包),并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址;- 网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网关;- 网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN 网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。
解包的过程主要是先将VPN数据包的包头剥离,在将负载通VPN技术反向处理还原成原始的数据包;- 网络二的VPN网关将还原后的原始数据包发送至目标终端,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。