转,原文链接https://blog.csdn.net/wh1511995112/article/details/51474692

IP选路

什么是IP选路?

IP选路,即IP寻路,就是根据路由表中的记录,来决定当前数据报是直接交付(目的地址属于当前局域网)还是发往下一跳路由(隶属于不同的局域网)。

搜索匹配路由表的步骤

搜索匹配的主机地址;

搜索匹配网络地址;

搜索默认表项(一般0.0.0.0)

I P层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。 这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。

简单路由表

路由表:

第1行说明,如果目的地是1 4 0 . 2 5 2 . 1 3 . 6 5,那么网关(路由器)将把分组转 发给1 4 0 . 2 5 2 . 1 3 . 3 5。

U 该路由可以使用。

G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。

H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该 标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网 络号与子网号的组合。

D 该路由是由重定向报文创建的。

M 该路由已被重定向报文修改。

重要标志H与G:

标志G非常重要,因为由它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)。其区别在于,发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址。当分组被发往一个间接路由时,IP地址指明的是最终的目的地,但是 链路层地址指明的是网关(即下一站路由器)。在上图这个路由 表例子中,有一个间接路由(设置了标志 G),因此采用这一项路由的分组其 I P地址是最终的目的地(1 4 0 . 2 5 2 . 1 3 . 6 5),但是其链路层地址必须对应于路由器 1 4 0 . 2 5 2 . 1 3 . 3 5。最后一行则表示是直连路由,属于同一局域网。

H标志则表明,目的地址是一个完整的主机地址。没有设置 H标志说明目的地址是一个网络地址(子网掩码决定,主机号部分为 0)。

ICMP主机与网络不可达差错,与差错定向

不可达:

当路由器收到一份I P数据报但又不能转发时,就要发送一份 ICMP“主机不可达”差错报文。

重定向:

1) 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为 R1是该主机的默认路由。

2) R1收到数据报并且检查它的路由表,发现 R2是发送该数据报的下一站。当它把数据报 发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器 所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。

3) R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。

静态路由与动态路由

1.静态路由是指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也可以通过对路由器进行设置使之成为共享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。

2.动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际实际情况的变化适时地进行调整。动态路由机制的运作依赖路由器的两个基本功能:对路由表的维护;路由器之间适时的路由信息交换。

两个著名的动态路由协议:

RIP(路由信息协议):基于距离矢量算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。

缺点:

1). RIP的15跳限制,超过15跳的路由被认为不可达

2). RIP不能支持可变长子网掩码(VLSM),导致IP地址分配的低效率

3). 周期性广播整个路由表,在低速链路及广域网云中应用将产生很大问题

4). 收敛速度慢于OSPF,在大型网络中收敛时间需要几分钟

5). RIP没有网络延迟和链路开销的概念,路由选路基于跳数。拥有较少跳数的路由总是被选为最佳路由即使较长的路径有低的延迟和开销

6). RIP没有区域的概念,不能在任意比特位进行路由汇

OSPF(开放式最短路径优先):基于链路状态及最短路径树算法,较之RIP略显复杂。

优点:

1).没有跳数的限制

2).支持可变长子网掩码(VLSM)

3).使用组播发送链路状态更新,在链路状态变化时使用触发更新,提高了带宽的利用率

4).收敛速度快,状态更新能快速覆盖整个网络。

5).具有认证功能

如今,任何支持动态选路的路由器都必须同时支持OSPF和RIP,还可以选择性的支持其他的IGP协议。

TCP/IP学习20180805-数据链路层-IP选路的更多相关文章

  1. TCP/IP学习笔记7--TCP/IP模型通信例子学习

    "一位如蝴蝶般美丽的女子向我飞来,翩翩的舞姿如同云端轻盈的叶儿." -------------------------------------------------------- ...

  2. TCP/IP学习笔记6--TCP/IP模型

    "五月的风慢慢地吹过湖面,泛起波浪层层,一只鸟儿飞过来,在我面前婉转歌唱" TCP/IP是当今计算机网络世界使用最为广泛的协议.该方面的知识对于那些想做网络编程的人来说是只至关重要 ...

  3. TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

    1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...

  4. TCP/IP学习笔记(5)------IP选路

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

  5. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  6. TCP/IP笔记(三)数据链路层

    数据链路的作用 数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范.通信媒介包括双绞线电缆.同轴电缆.光纤.电波以及红外线等介质.此外,各个设备之间有时也会通过交换机.网桥.中继器等中转数据. ...

  7. TCP/IP学习笔记(3)-IP、ARP、RARP协议

    这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...

  8. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议【转】

    转自:http://blog.csdn.net/goodboy1881/article/details/668556 把这三个协议放到一起学习是因为这三个协议处于同一层(网际层),ARP协议用来找到目 ...

  9. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  10. TCP/IP学习(四)TCP缓冲区大小及限制(转)

    链接来自:http://blog.csdn.net/ysu108/article/details/7764461 这个问题在前面有的部分已经涉及,这里在重新总结下.主要参考UNIX网络编程. (1)数 ...

随机推荐

  1. Sublime使用及配置C编译器

    一.环境配置 在安装了MinGW+Gcc的基础上做如下设置—— 新建编译系统c.sublime-build: { "cmd" : ["gcc", "$ ...

  2. mongo常用sql

    基本查询  db.getCollection('chdr').find({chdrnum:"test123456"}) lookup关联查询 db.getCollection ( ...

  3. 3--TestNG多线程

    第一: 注解方式 public class MultiThreadOnAnnotation{ @test(invocationCount=10,threadPoolSize=10) public vo ...

  4. C语言链表:删除有序链表中大于mink小于maxk的元素

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define LEN sizeof( ...

  5. C# 对结构体和指针的使用

    //结构体的定义 [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]        pub ...

  6. 自动删除Android工程中无用的资源

    开发时间久了, 几个版本迭代之后, 工程中难免留下很多垃圾资源, 造成apk的包很大, 这里介绍一个工具, 可以自动扫描工程中, 没有使用的资源, 然后自动删除: 包括图片, xml, 文本等. 采用 ...

  7. C语言权威指南和书单 - 专家级别

    注: 点击标题即可下载 1. Advanced Programming in the UNIX Environment, 3rd Edition 2. Essential C 3. Computer ...

  8. Spring Security框架下Restful Token的验证方案

    项目使用Restful的规范,权限内容的访问,考虑使用Token验证的权限解决方案. 验证方案(简要概括): 首先,用户需要登陆,成功登陆后返回一个Token串: 然后用户访问有权限的内容时需要上传T ...

  9. Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解

    把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...

  10. 浅谈get,post,put和delete请求

    get.put.post.delete含义与区别   1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数据,不会影 ...