当前位置: 首页 > 后端技术 > PHP

网络协议6——路由协议

时间:2023-03-30 02:26:29 PHP

前面的例子,我们都是在一个局域网中折腾。今天让我们扩大范围,漫游在多个局域网乃至浩瀚的互联网世界,看看这中间发生了什么。在这个过程中,跨网关访问是我们首先要了解的。跨网关访问?当我们要理解跨网关访问时,就涉及到MAC地址和IP地址的变化。因此,我们先来看看MACheader和IPheader的细节。MACheader和IPheader详解?如图所示,在MACheader中,首先是目的MAC地址,然后是源MAC地址,最后是协议类型。在IP头中,最重要的是源IP地址和目的IP地址。此外,还有版本号,也就是我们常说的IPv4和IPv6,服务类型TOS(代表数据包优先级),TTL(数据包生命周期),识别协议(TCP和UDP)当我们访问博客时连接到公园,你通过的第一个网关应该是我们配置的默认网关。本机访问默认网关时,仍然按照局域网内部访问的步骤:将源地址和目的IP地址放入IP头;通过ARP协议获取网关的MAC地址;将源MAC地址和网关的MAC地址放入MAC头中,发送给网关。而我们的网关,一般指的就是家里的路由器,它是一种三层转发设备。它会把MAC头和IP头都去掉,然后根据里面的内容看把数据包转发到哪里去。很多时候,人们把网关称为路由器。其实并没有准备好,这个比喻应该更贴切:路由器是一个有五个网口或者网卡的设备,相当于五只手接在五个局域网上。每只手的IP地址都与局域网的IP地址在同一网段,每只手都是自己所持有的局域网的网关。任何要发送到其他局域网的数据包都会到达其中一只手,被接收,去掉MAC头和IP头,然后根据自己的路由算法选择另一只手,加上IP头和MACheader,然后扔掉。注意在上面的过程中,有一个路由算法。接下来,我们就来了解一下。RoutingAlgorithm路由算法,又称路由算法,是一种改进路由协议功能,使路由带来的开销最小化的算法。路由算法可以根据多种特征进行区分,找到到达目的地的最佳路径。路由算法有很多区别,包括静态和动态的单路径和多路径扁平化和层次化主机智能和路由器智能域内和域间链路状态和距离向量这里主要介绍静态和动态路由算法。静态路由静态路由算法本质上是网关配置的映射表。我们家的路由器可能有这样的路由配置,访问博客园,从2端口出去,下一跳是IP2;访问百度,从3号端口出去,下一跳是IP3。和上面类似的规则就是静态路由,按照一定的语法保存在路由器中。每当你要选择从哪个端口扔出去的时候,你都会一一匹配规则。如果找到匹配的规则,就按照规则进行操作,从指定的端口抛出,找到下一跳IP。通过网关的“变化”和“不变”之前我们了解到,MAC地址是一个只在局域网内有效的地址。所以,MAC地址只要经过网关,就一定会发生变化。IP地址通过网关后不一定会发生变化。经过网关A后,如果IP地址没有变化,则A为转发网关,否则为NAT网关。转发网关?如上图所示,服务器A需要通过以下流程访问服务器B:1)服务器A查看B到网关A的网段,发现不在同一网段,于是发送到网关,因为网关的IP地址已经配置。,所以发送ARP获取发送包的网关MAC地址,最终发送包的内容主要包括:源MAC:服务器A的MAC模板MAC:192.168.1.1网关MAC源IP:192.168.1.101目的IP:192.168.4.101到达网口192.168.1.1后,网口发现这个MAC地址是自己的,于是接收到数据包,然后开始“思考”转发到哪里去。此时路由器A配置规则A1:要访问192.168.4.0/24,从192.168.56.1网口出,下一跳为192.168.56.22)网关A到网关B所以,路由器A匹配A1,要从192.168.56.1端口发出,发送到192.168.56.2。于是,又开始了这个过程:查看B的网段,发现在同一个网段,ARP获取MAC地址,发送数据包。数据包内容为:源MAC:192.168.56.1MAC模板MAC:192.168.56.2MAC源IP:192.168.1.101目的IP:192.168.4.101数据包到达192.168.56.2网口。当网口发现这个MAC地址属于自己时,就接收到数据包,然后检查路由规则。RouterB配置如下规则B1:如果要访问192.168.4.0/24,使用192.168.4.1RouterB发现自己右边的网口是目标地址网段,所以没有下一跳。3)从网关B到服务器B,路由器B匹配B1。从192.168.4.1退出到192.168.4.101。数据包内容:源MAC:192.168.4.1MAC模板MAC:192.168.4.101MAC源IP:192.168.1.101目的IP:192.168.4.101服务器B收到数据包,发现MAC地址属于自己,所以接受数据包进来?通过上面的过程可以看出,每到一个新的局域网,MAC地址都要改变,而IP地址不变。在IP头中,不保存任何网关的IP地址。我们说的下一跳是IP需要把这个IP地址转换成MAC放到MAC头中。NAT网关?NAT网关,即NetworkAddressTranslation。由于每个局域网都有自己的网段,因此很容易发生IP冲突。如上图所示,美国服务器A的IP地址和法国服务器B的IP地址都是192.168.1.101/24。从IP上看,好像访问的是自己,实际上是从美国的192.168.1.101访问法国的192.168.1.101。如何解决这个问题呢?由于局域网之间没有协商分配IP,各自管理,那么到了国际,也就是中间的局域网,我们就需要使用另外的地址,就像去之后需要用护照一样国外。首先目标服务器B在国际上要有一个国际标识,我们给它一个190.168.56.2。在网关B上,我们注意到国际身份192.168.56.2对应于国内身份192.168.1.101。任何人要访问192.168.56.2是的,网关必须转换为192.168.1.101。所以,源服务器A要访问目的服务器B,目的地址变成国际IP地址192.168.56.2。过程如下:1)源服务器A向网关A发送数据包,查询服务器B的IP,如果不在同一网段,则ARP获取网关的MAC地址。发送包内容如下:源MAC:服务器A的MAC目的MAC:192.168。1.1本网口MAC源IP:192.168.1.101目的IP:192.168.56.2路由器A的192.168.1.1网口收到数据包后,检查MAC地址是否一致,接收数据包。RouterA中配置了一条规则:如果要访问192.168.56.2/24,则从192.168.56.1网口发送到192.168.56.2,不经过下一跳。由于路由器右网口(192.168.56.1)的IP地址与目的IP地址在同一网段,所以没有下一跳。2)网关A到网关B当网络包被发送到中间局域网时,服务器A也需要有一个国际身份。因此需要将源IP地址192.168.1.101改为192.168.56.1,所以数据包内容为:源MAC:192.168.56.1MAC目标MAC:192.168.56.2MAC源IP:192.168.56.1目标IP:192.168.56.2数据包到达192.168.56.2网口后,如果发现MAC相同,则接收数据包。RouterB是一个NAT网关,配置在上面,国际标识192.168.56.2对应国内192.168.1.101,所以目的地址改为192.168.1.101。同样,在RouterB中配置了一条规则:如果要访问192.168.1.101,就从192.168.1.1网口出去,没有下一跳。于是,数据包从192.168.1.1网口发送到192.168.1.101。3)网关B发往服务器B的数据包从192.168.1.1网口发出后,同样是这样:查看服务器B的IP,通过同一网段的ARP获取服务器B的MAC地址,并发送数据包。此时数据包变为A:SourceMAC:192.168.1.1MACTargetMAC:192.168.1.101MACSourceIP:192.168.56.1TargetIP:192.168.1.101服务器收到包后检查MAC地址是否一致,然后接收数据包。从服务器B收到的数据包可以看出源IP是服务器A的国际身份,所以回包的时候也是发给这个国际身份的,路由器A进行NAT转换到国内的身份。DynamicRoutingDynamicRoutingAlgorithmDistanceVectorRoutingAlgorithm1)基本思想是基于Bellman-Ford算法。每个路由器都有一个路由表,里面包含多条线路,每条线路对应网络中的一台路由器,每条线路包含两部分信息,一是到达目标路由器,从哪条线路出去,二是到目标路由器的距离2)存在问题a.好消息传得快,坏消息传得慢。新加入的路由器可以快速广播新的路由器信息。但是,如果路由器挂断,则不会广播挂断消息。每一个经过这个宕机节点的路由器都没有办法知道这个节点宕机了,而是试图通过其他路径访问它。直到所有路径都被尝试过,路由器才关闭。示例:b。每发送一条消息,就发送整个全局路由表以上两个问题限制了距离矢量路由的网络规模,只适用于小型网络(小于15跳)。链路状态路由算法1)基本思想是基于Dijkstra算法。当路由器加入网络时,它首先发现邻居,向邻居问好,然后邻居回复。然后计算到邻居的距离,发回声,请求立即返回,除以2就是距离。然后广播自己和邻居之间的链路状态包,发送给全网的每台路由器。在这个算法中,每个路由器都可以在本地建立一个完整的图,然后对这个图使用Dijkstra的算法来寻找两点之间的最短路径。与距离矢量路由协议不同,它在更新时发送整个路由表。链路状态路由协议仅广播更新或更改的网络拓扑,这使得更新消息更小,从而节省带宽和CPU使用率。而一旦一个路由器挂了,它的邻居就会广播这个消息,这样可以使坏消息迅速收敛。动态路由协议是基于链路状态路由算法OSPFOSPF(OpenShortestPathFirst,开放最短路径优先)协议,广泛应用于数据中心。因为主要用在数据中心做路由决策,所以称为内部网关协议(简称IGP)InteriorGatewayProtocol的重点是寻找最短路径。当存在多条最短路径时,可以在这多条路径之间进行负载均衡,通常称为等价路由。等价路由不仅可以用来分担流量,还可以提高容错能力。当一条路径失败时,可以使用另一条路径到达目的地。基于距离矢量路由算法的BGP是针对网络之间的路由协议,称为边界网关协议(BorderGatewayProtocol,简称BGP)每个数据中心都有自己的路由配置。比如哪些外部IP可以内部知道,哪些内部IP可以外部知道,哪些可以通过,哪些不能。因此,当每个数据中心交互时,需要一个协议。通过该协议,可以获知相邻数据中心的路由配置,从而找到数据中心之间的最佳路由。BGP协议就是这样一种协议。它不专注于发现和计算路由,而是控制路由传播和选择最佳路由。综上所述,数据包要离开局域网,必须经过网关,也就是路由器的网口;路由器是三层设备,如何找到下一跳是有规则的;经过路由器后的MAC头肯定会发生变化。如果IP不变,则为转发网关,否则为NAT网关;路由分为静态路由和动态路由,动态路由可以配置复杂的策略路由来控制转发策略;动态路由有两种主流算法,距离矢量算法和链路状态算法。基于两种算法生成两种协议,BGP协议和OSPF协议。参考:百度百科刘超-互联网协议系列教程;

猜你喜欢