网关,路由,局域网内的通信及不同的网络间通信实现的原理剖析

原文地址:http://blog.csdn.net/nail1991/article/details/52791842

百度百科定义网关:

网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层--应用层。
设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

网关的作用是什么

网关,即Gateway,它是本地网络的标记,也就是说数据从本地网络跨过网关,就代表走出该本地网络。所以,网关也是不同网络(不同协议或者不同大小的网络)的通信设备。它能将局域网分割成若干网段、互连私有广域网中相关的局域网以及将各广域网互连而形成了因特网。在早期的因特网中,网关曾只是指那些用来完成专门功能的路由器,但是随着网络技和电脑技术的发展,一般的主机和交换集线器都可以完成路由功能。所以现在在一般迁了教育网的学校的网关都采用主机。
网关按功能大致分三类:
1)协议网关:顾名思义,此类网关的主要功能是在不同协议的网络之间的协议转换。网络发展至今,通用的已经有好几种如:802.3(Ethernet)、IrDa(Infrared Data Association,红外线数据联盟)、WAN(Wide Area Networks,广域网)和802.5(令牌环)、X2.5,802.11a、802.11b、802.11g、WPA等,不同的网络,具有不同的数据封装格式,不同的数据分组大小,不同的传输率。然而,这些网络之间相互进行数据共享、交流却是必不可免的。为消除不同网络之间的差异,使得数据能顺利进行交流,我们需要一个专门的翻译人员,也就是协议网关。靠他使的一个网络能理解其他的网络,也是靠他来使得不同的网络连接起来成为一个巨大的因特网。
2)应用网关:主要是针对一些专门的应用而设置的一些网关,其主要做用将某个服务的一种数据格式转化为该服务的另外一种数据格式,从而实现数据交流。这种网关常做为某个特定服务的服务器,但是又兼具网关的功能。最常见的此类服务器就是邮件服务器了。我们知道电子邮件有好几种格式,如POP3、SMTP、FAX、X.400、MHS等,如果SMTP邮件服务器提供了POP3、SMTP、FAX、X.400等邮件的网关接口,那么我们就可以毫无顾忌地通过SMTP邮件服务器向其他服务器发送邮件了。

3)安全网关:最常用的安全网关就是包过滤器,实际上就是对数据包的原地址,目的地址和端口号,网络协议进行授权。通过对这些信息的过滤处理,让有许可权的数据包传输通过网关,而对那些没有许可权的数据包进行拦截甚至丢弃。这跟软件防火墙有一定意义上的雷同之处,但是与软件防火墙相比较安全网关数据处理量大, 处理速度快,可以很好地对整个本地网络进行保护而不对整个网络造成瓶颈。
除此之外,最近微软从网关的日常功能出发,也提出了他自己的分类方案:数据网关(主要用于进行数据吞吐的简单路由器,为网络协议提供传递支持)、多媒体网关(除了数据网关具有的特性外,还提供针对音频和视频内容传输的特性)、集体控制网关(实现网络上的家庭控制和安全服务管理)。

故事导读:

假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。
但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话:
小不点:李大爷,我想找班主任查一下小明的电话号码行吗?
李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99
小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。
李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家)
就这样你和小明取得了联系。
故事生动的描述了不同网络间的通信原理
设置完IP地址与子网掩码后,计算机只能与处于同一网络内的其他计算机互相传递数据。这是因为设置了这两项参数后,计算机有了自己的地址,与其他计算机进行数据交换时,数据包有源地址与目标地址,即有明确的来源与去处,就像信封上写清了发信人与收信人地址,因此可以顺利地投递一样。但是此时计算机还不能与本局域网以外的计算机进行数据交换,因为我们还没有告诉计算机通过什么途径将数据送到本局域网以外的计算机中。要想与本局域网以外的计算机进行通信,还需要设置网关。
网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。它的作用就是对两个网络段中使用不同传输协议的数据进行互相的翻译转换。网关可以是硬件,如路由器、服务器等,也可以是软件。
给网关分配一个IP地址,这个地址就可以被局域网中的多台计算机所共享,这种地址共享有点类似于日常生活中的信件分发。邮局先把属于同一单位的信件送到该单位的收发室,再由收发室分发到各个不同的部门或个人,这就要求单位中的每个部门或个人都有一个唯一的内部信箱号,就像每台计算机有一个自己的私有IP地址一样。邮局只关心该单位的地址而不必清楚该单位的内部机构;同样,位于局域网外部的网关只考虑局域网中的多台计算机所共享的IP(网关)地址,而不考虑它们各自的私有IP 地址。借助网关可以使多个网络用户用一个IP地址访问因特网,比动态配置法更加节省IP地址资源。另外,它的安全性得到了进一步的提高,因为它内部的计算机根本就没有公有IP地址,外部用户无法直接访问这些计算机。

百度百科定义路由:

路由器:工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网络拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。
路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。路由通常与桥接来对比,在粗心的人看来,它们似乎完成的是同样的事。它们的主要区别在于桥接发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层(网络层)。这一区别使二者在传递信息的过程中使用不同的信息,从而以不同的方式来完成其任务。
路由工作包含两个基本的动作:
1、确定最佳路径
2、通过网络传输信息
在路由的过程中,后者也称为(数据)交换。交换相对来说比较简单,而选择路径很复杂。
路由器工作原理:
路由器利用网络寻址功能使路由器能够在网络中确定一条最佳的路径。IP地址的网络部分确定分组的目标网络,并通过 IP 地址的主机部分和设备的 MAC 地址确定到目标节点的连接。
路由器的某一个接口接收到一个数据包时,会查看包中的目标网络地址以判断该包的目的地址在当前的路由表中是否存在(即路由器是否知道到达目标网络的路径)。如果发现包的目标地址与本路由器的某个接口所连接的网络地址相同,那么马上数据转发到相应接口;如果发现包的目标地址不是自己的直连网段,路由器会查看自己的路由表,查找包的目的网络所对应的接口,并从相应的接口转发出去;如果路由表中记录的网络地址与包的目标地址不匹配,则根据路由器配置转发到默认接口,在没有配置默认接口的情况下会给用户返回目标地址不可达的 ICMP 信息。
路由器包含了路由选择和交换的功能
路由选择功能:为传送分组,路由器会使用地址的网络部分进行路由选择以确定一条最佳路径
路由交换功能:使路由器有能力接收分组并进行转发
路由器工作过程:
路由发现:学习路由的过程,动态路由通常由路由器自己完成,静态路由需要手工配置
路由转发:路由学习之后会照学习更新的路由表进行数据转发
路由维护:路由器通过定期与网络中其他路由器进行通信来了解网络拓扑变化以便更新路由表
路由器记录了接口所直连的网络ID,称为直连路由,路由器可以自动学习直连路由而不需要配置
路由器所识别的逻辑地址的协议必须被路由器所支持
工作原理剖析及作用:
路由器是第三层网络设备,这样说大家可能都不理解,就先说一下集线器和交换机吧。集线器工作在第一层(即物理层),它没有智能处理能力,对它来说,数据只是电流而已,当一个端口的电流传到集线器中时,它只是简单地将电流传送到其他端口,至于其他端口连接的计算机接收不接收这些数据,它就不管了。交换机工作在第二层(即数据链路层),它要比集线器智能一些,对它来说,网络上的数据就是MAC地址的集合,它能分辨出帧中的源MAC地址和目的MAC地址,因此可以在任意两个端口间建立联系,但是交换机并不懂得IP地址,它只知道MAC地址。路由器工作在第三层(即网络层),它比交换机还要“聪明”一些,它能理解数据中的IP地址,如果它接收到一个数据包,就检查其中的IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。
作用
我们常见的集线器和交换机一般都是用于连接以太网的,但是如果将两种不同的网络类型连接起来,比如以太网与ATM网,集线器和交换机就派不上用场了。
路由器能够连接不同类型的局域网和广域网,如以太网、ATM网、FDDI网、令牌环网等。不同类型的网络,其传送的数据单元——包(Packet)的格式和大小是不同的。就像公路运输是以汽车为单位装载货物,而铁路运输是以车皮为单位装载货物一样,从汽车运输改为铁路运输,必须把货物从汽车上放到火车车皮上,网络中的数据也是如此。数据从一种类型的网络传输至另一种类型的网络,必须进行帧格式转换。路由器就有这种能力,而交换机和集线器就没有。
实际上,我们所说的“互联网”,就是指各种路由器将各种不同的网络类型互相连接起来。集线器和交换机根本不能胜任这个任务,所以必须由路由器来担当这个角色。
具有路径选择能力
互联网中,从一个节点到另一个节点,可能有许多路径。路由器可以选择通畅的最短路径,这就大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,这也是集线器和交换机所根本不具备的性能。
路由器的接入:
接入路由器是指将局域网用户接入到广域网中的路由器设备。我们局域网用户接触最多的就是接入路由器了。只要有互联网的地方,就会有路由器。如果你通过局域网共享线路上网,就一定会使用路由器。
有的读者会心生疑问:我是通过代理服务器上网的,不用路由器不也能接入互联网吗?其实代理服务器也是一种路由器,一台计算机加上网卡,再加上ISDN(或Modem或ADSL),再安装上代理服务器软件,事实上就已经构成了路由器,只不过代理服务器是用软件实现路由功能,而路由器是用硬件实现路由功能,就像VCD软解压软件和VCD机的关系一样,结构不同,但是功能却是相同的。
除了接入时路由器,常用的接入路由器还有:企业级路由和骨干级路由。

局域网内数据包的发送过程

1. PC1与PC2通信时,在PC1电脑中,应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP或UDP,再进行不同服务端口号的封装(例:WWW 80 ,FTP 21),再传递给网络层;网络层在数据包头部进行封装源IP、目的IP,根据上层协议栈标识不同协议号,当IP包头封装TCP时协议号为6、UDP协议号为17,用来标识上层使用的协议,继续传递给数据链路层;数据链路层在数据包头部进行帧的封装,封装源MAC、目的MAC,由于不知道目的MAC地址,会进行ARP的广播包,封装一个全F的类型字段为0X0806广播包,交付给物理层,物理层转换成电信号(bit流),发送到交换机;
2. 交换机接收后发现为ARP的广播包,进行其解封学习到PC1的MAC地址,继续封装并除接受端口以外的端口再次进行ARP的广播;
3. 路由器收到交换机发来的ARP广播,进行解封,查看到数据包中的类型字段为0X0806即ARP的广播包,进行回复,源MAC为路由(网关)的MAC,目的MAC为PC1的MAC,类型字段为0X0806,经过物理层将数据转换为电信号(bit流)发送给交换机;
4. 交换机收到后进行解封,学习到源MAC(路由器的MAC),发现目的MAC已经存在自己的MAC表中,查看目的MAC对应的端口,并从对应的端口发送到PC1;
5. PC1接收数据包后进行解封,学习到路由器(网关)的MAC,在数据链路层将目的MAC封装为路由器(网关)的MAC, 类型字段为0X0800,并在数据帧尾部封装FCS,来校验数据的完整性,然后向下层传递给物理层,物理层把数据帧转换成电信号(bit流),发送到交换机;
(注:不同网段的通信,PC机先把数据传送到网关)
6. 交换机接收到数据包,查看到目的MAC已存在自己的MAC表中,根据自己MAC表中对应的端口发送出去;
7. 路由器接收到数据包后进行解封装,在数据包头部发现目的ip,便查找路由表条目中对应的端口,便对数据进行重写,由于不知道目的主机的MAC地址,路由器会发送ARP广播,PC2收到数据包进行解封,发现是ARP广播,类型字段为0X0806,
然后对其进行封装回复,源MAC为PC2的MAC,目的MAC为路由器的MAC,路由器收到后把PC2对应的MAC地址和端口记录在MAC表中,
8. -pc2接受到信息,便对数据进行解封装,发现目的ip是给自己的,然后继续解封装,然后把数据传送给应用程序qq。然后对路由回复,在传输层设源端口号为8000,目的端口号为4000,封装udp头部。在网络层将源ip设为192,。168.2.1,目的ip设为192.168.1.2,协议号为17,在数据链路层将源mac设为12个3,目的mac设为12个1,类型字段为0x0800,封装FCS,然后经物理层将数据转为bit流传给路由器,路由器再查找路由表,并对数据进行重写,从f0/0传送出去,交换机解封装,查找mac表,再对数据进行封装,从f0/0传送给pc1.通信完成。

posted on 2017-01-18 14:36  lolDragon  阅读(2091)  评论(0编辑  收藏  举报

导航