IP 数据报的格式
一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度共 20 字节是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段其长度是可变的。
IP 数据报首部的固定部分中的各字段
版本——占 4 位指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度——占 4 位可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。
区分服务——占 8 位用来获得更好的服务在旧标准中叫做服务类型但实际上一直未被使用过。1998年这个字段改名为区分服务。只有在使用区分服务DiffServ时这个字段才起作用。在一般的情况下都不使用这个字段
总长度——占 16 位指首部和数据之和的长度单位为字节因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
标识(identification)——占 16 位它是一个计数器用来产生数据报的标识。
标志(flag)——占 3 位目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF = 0 时才允许分片。
片偏移(13 位)指出较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
生存时间(8 位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。
协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程
首部检验和(16 位)字段只检验数据报的首部不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
源地址和目的地址都各占 4 字节
IP 数据报分片
IP 层转发分组的流程
有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
可以想像若按目的主机号来制作路由表则所得出的路由表就会过于庞大。
但若按主机所在的网络地址来制作路由表那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。
查找路由表
根据目的网络地址就能确定下一跳路由器这样做的结果是
IP 数据报最终一定可以找到目的主机所在目的网络上的路由器可能要通过多次的间接交付。
只有到达最后一个路由器时才试图向目的主机进行直接交付。
特定主机路由
这种路由是为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由(default route)
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
这种转发方式在一个网络只有很少的对外连接时是很有用的。
默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
如果一个主机连接在一个小网络上而这个网络只用一个路由器和因特网连接那么在这种情况下使用默认路由是非常合适的。
注意
IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
当路由器收到待转发的数据报不是将下一跳路由器的 IP 地址填入 IP 数据报而是送交下层的网络接口软件。
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址并将此硬件地址放在链路层的 MAC 帧的首部然后根据这个硬件地址找到下一跳路由器。
分组转发算法
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连则把数据报直接交付目的主机 D否则是间接交付执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由则把数据报传送给路由表中所指明的下一跳路由器否则执行(4)。
(4) 若路由表中有到达网络 N 的路由则把数据报传送给路由表指明的下一跳路由器否则执行(5)。
(5) 若路由表中有一个默认路由则把数据报传送给路由表中所指明的默认路由器否则执行(6)。
(6) 报告转发分组出错。
路由选择协议
因特网有两大类路由选择协议
内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多如 RIP 和 OSPF 协议。
外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中当数据报传到一个自治系统的边界时就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
下面主要介绍内部网关协议 RIP (Routing Information Protocol)
工作原理
路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
RIP 是一种分布式的基于距离向量的路由选择协议。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义
从一路由器到直接连接的网络的距离定义为 1。
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
RIP 协议中的“距离”也称为“跳数”(hop count)因为每经过一个路由器跳数就加 1。
这里的“距离”实际上指的是“最短距离”
RIP 认为一个好的路由就是它通过的路由器的数目少即“距离短”。
RIP 允许一条路径最多只能包含 15 个路由器。
“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由即最短路由哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP 协议的三个要点
仅和相邻路由器交换信息。
交换的信息是当前本路由器所知道的全部信息即自己的路由表。
按固定的时间间隔交换路由信息例如每隔 30 秒。
路由表的建立
路由器在刚刚开始工作时只知道到直接连接的网络的距离此距离定义为1。
以后每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
RIP 协议的收敛(convergence)过程较快即在自治系统中所有的结点都得到正确的路由选择信息的过程。
距离向量算法
示例
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。