即时通讯开发之详解tcp/ip中的ip选路动态选路

wecloud1314 wecloud1314     2023-02-03     305

关键词:

静态 IP 选路

1一个简单的路由表

选路是 IP 层最重要的一个功能之一。前面的部分已经简单的讲过路由器是通过何种规则来根据 IP 数据包的 IP 地址来选择路由。 这里就不重复了。

 

对于一个给定的路由器,可以打印出五种不同的 flag:

     U 表明该路由可用。
     G 表明该路由是到一个网关。如果没有这个标志,说明和 Destination 是直连的,而相应的 Gateway 应该直接给出 Destination
    的地址。
     H 表明该路由是到一个主机,如果没有该标志,说明 Destination 是一个网络,换句话说 Destination 就应该写成一个网络号和
    子网号的组合,而不包括主机号(主机号码处为0),例如 192.168.11.0
     D 表明该路由是为重定向报文创建的
     M 该路由已经被重定向报文修改


U 没啥可说的,G 说明这是一个网关,如果你要发数据给 Destination,IP 头应该写 Destination 的 IP 地址,而数据链路层的 MAC地址就应该是 GateWay 的 Mac 地址了;反之,如果没有 G 标志,那么数据链路层和 IP 层的地址应该是对应的。H 说明了 Destination 的 性质,如果是 H 的,则说明该地址是一个完整的地址,既有网络号又有主机号,那么再匹配的时候就既要匹配网络号,又要匹配主 机号;反 之,Destination 就代表一个网络,在匹配的时候只要匹配一下网络号就可以了。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

 

这样,IP 选路的方式就可以更加具体化了。如下:

     首先用IP地址来匹配那些带H标志的DestinationIP地址。
     如果1失败就匹配那些网络地址。
     如果2失败就发送到Default网关


顺便提一下那个 GenMask(还记得子网掩码么),它指定了目的地址的子网号,例如第一条的子网就是11。

2其他有关路由表的知识

一般,我们在配置好一个网络接口的时候,一个路由就被直接创建好了。当然我们也可以手动添加路由。用 route add 命令就可以了。而当一个 IP 包在某一个路由器的时候发现没有路由可走,那么该路由器就会给源主机发送“主机不可达”或者“网络不可达”的 ICMP包来报错。

注意,一般的操作系统默认是没有路由功能的,这需要自己配置。这些历史原因就不细说了。

3ICMP 的 IP 重定向报文和路由发现报文

当 IP 包在某一个地方转向的时候,都回给发送 IP 报的源主机一个 ICMP 重定向报文,而源主机就可以利用这个信息来更新自己的路由表,这样,随着网络通信的逐渐增多,路由表也就越来越完备,数据转发的速度也会越来越快。我们需要注意的是:

     重定向报文只能由路由器发出。
     重定向报文为主机所用,而不是为路由器所用。


在主机引导的时候,一般会发送在网内广播一个路由请求的 ICMP 报文,而多个路由器则会回应一个路由通告报文。而且,路由其本身不定期的在网络内发 布路由通告报文,这样,根据这些报文,每一个主机都会有机会建立自己的路由表而实现网络通信。路由 器在一份通告报文中可以通告多个地址,并且给出每一个地 址的优先等级,这个优先等级是该 IP 作为默认路由的等级,至于怎么算 的就不深究了。

路由器一般会在450-600秒的时间间隔内发布一次通告,而一个给定的通告报文的寿命是30分钟。而主机在引导的时候会每三秒发 送一次请求报文,一旦接受到一个有效的通告报文,就停止发送请求报文。在 TCP/IP 详解编写的时候,只有 Solaris2.x 支持这两种报文,大多数系统还不支持这两种报文。(后面还会讲到一些有用的路由 报文)

动态选路协议

前面的选路方法叫做静态选路,简要地说就是在配置接口的时候,以默认的方式生成路由表项。并通过 route 来增加表项,或者 通过 ICMP 报文来更新表项(通常在默认方式出错的情况下)。 而如果上诉三种方法都不能满足,那么我们就使用动态选路。

动态选路协议是用于动态选路的重要组成部分,但是他们只是使用在路由器之间,相邻路由器之间互相通信。系统(路有选择程 序)选择比较合适的路有放到 核心路由表中,然后系统就可以根据这个核心路有表找到最合适的网路。也就是说,动态选路是在系统 核心网络外部进行的,它只是用一些选路的策略影响路由表, 而不会影响到最后通过路由表选择路由的那一部分。选路协议有一大类 常用的叫做内部网关协议(IGP),而在 IGP 中,RIP 就是其中最重要的协议。一种新 的 IGP 协议叫做开放最短路经优先(OSPF)协议,其意在取代 RIP。另一种最早用在网路骨干网上的 IGP 协议--HELLO,现在已经不用了。如今,任何支持动态选路的路由器都必须同时支持 OSPF 和 RIP,还可以选择性的支持其他的 IGP 协议。

1Unix 选路程序

Unix 系统上面通常都有路由守护程序--routed。还有一个叫做 gate。gate 所支持的协议要比 routed 多,routed 只是支持 RIPv1
版本。而 gate 则支持 RIPv1、v2,BGPv1 等等。

2RIP:选路信息协议

它的定义可以在 RFC1058内找到,这种协议使用 UDP 作为载体(也就是 UDP 的上层协议)。我们最关心的就是 RIP 其中的一个段,叫做度量的 段,这是一个以 hop 作为计数器(就是以走过多少路由为计数器)的段(IP 协议里面也有一个 TTL 不是么)。这个度 量段将最终影响到路由表的建立。

一般说来 routed 要承担如下的工作:

     给每一个已知的路由器发送 rip 请求报文,要求其他路由器给出完整的路由表。这种报文的命令字段为1,地址字段为0,度量 地段为16(相当于无穷大)。
     接受请求,如果接收到刚才的那个请求,就把自己的完整的路由表交给请求者。如果没有,就处理 IP 请求表项,把表项中自 己有的部分添上跳数,没有的部分添上16。然后发给请求者。
     接受回应。更新自己的路由表。使用 hop 数小的规则。
     定期更新路由表,一般是30s(真频繁)给相邻的路有启发一次自己的路由表。这种形式可以使广播形式的。


这个协议看起来会工作的很好,但是,这里面其实有很多隐藏的忧患,比如说 RIP 没有子网的概念,比如说环路的危险。而且 hop数的上限也限制了网络的大小。因此,出现了很多 RIPv1的替代品,比如说 RIPv2,比如说 OSPF。他们都是通过某种策略来影响路由表,所以就不说了。

tcp/ip学习20180805-数据链路层-ip选路

...sp;什么是IP选路? IP选路,即IP寻路,就是根据路由表中的记录,来决定当前数据报是直接交付(目的地址属于当前局域网)还是发往下一跳路由(隶属于不同的局域网)。   搜索匹配路由表的步骤& 查看详情

即时通讯开发之tcp/ip中的ip协议arp协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一... 查看详情

《tcp/ip具体解释卷2:实现》笔记--选路请求和选路消息

内核的各种协议并不直接使用前面提供的函数来訪问选路树,而是调用几个函数:rtalloc和rtallocl是完毕路由表查询的两个函数;rtrequest函数用于加入和删除路由表项;另外大多数接口在接口连接或断开时都会调用函数rtinit。选路... 查看详情

即时通讯开发之tcp/ip中的tcp协议概述

终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读。前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西。TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠... 查看详情

即时通讯开发之详解tcp/ip中的广播和多播igmp协议

单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。现在的具有路由功能的主... 查看详情

即时通讯开发之tcp/ip中的ip协议arp协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

tcp/ip详解-协议

本书17-23章讲解TCP,为重点。标题用红色字体标明1.概述TCP/IP通常被认为是一个四层协议系统,包括:1.链路层,用于处理物理接口。2.网络层,处理分组在网络中的活动,如分组的选路。在TCP/IP协议族中... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

tcp/ip协议(卷一)-----第一章节

TCP/IP协议分层网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。(1) 链路层,有时也称作数据链路层或... 查看详情

tcp/ip详解,卷1:协议

...遍布世界各地的计算机分层网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图1-1所示。每一层负责不... 查看详情

tcp/ip协议

...链路层:称数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡2)网络层:称互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议... 查看详情

即时通讯tcpudp

TCP协议与UDP协议的区别   首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很... 查看详情

即时通讯开发apachemina框架之iofilter详解

见名知义,IoFilter应该是一个过滤器,没错,它确实是一个过滤器。它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。 在Mina的官方文档中已经提到了IoFilter的作用:  (1)记录事... 查看详情

tcp/ip——基本知识

...,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。2)网络层,有时也称作互联网层,处理分组在网络中的活动,例如... 查看详情

网络七层协议之部分协议详解

网络七层协议由上到下分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。主要介绍以下4层:1)链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接... 查看详情

ip选路

下图是IP层处理数据报的基本流程IP搜索路由表的几个步骤:1)搜索匹配的主机地址;2)搜索匹配的网络地址;3)搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。匹配主机地址步骤始终发生在匹配... 查看详情

网络--路由表&ip选路

路由表的flags字段显示路由状态:A活动的休眠网关检测在路由上被启用。本字段只适用于AIX5.1或更新版本。U:Up.H:路由至主机而不是网络。G:路由至网关。不带G表示不经过路由D:路由通过重定向动态地创建。M:路由通过重定... 查看详情