2013-08-21 13:56:23


  • 3.3 IP路由选择
1. IP路由选择有两种情况。(1)如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接到达目的主机。(2)如果目的主机和源主机不直接相连,则主机把数据报发往一默认的路由器上,由路由器来转发该数据报。
2. IP层既可以配置成路由器的功能,也可以配置成主机的功能。本质上的区别在于主机从不把数据从一个接口转发到另外一个接口,而路由器则要转发数据报。内含路由器功能的主机应该从不转发数据报,除非它被设置成那样。
3. IP路由选择机制,IP可以从TCP、UDP、ICMP和IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表进行搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么分两种情况处理:(1)如果IP层被设置为路由器功能,那么就对数据报进行转发(也就是说面向下面对待发出的数据报一样处理);(2)如果IP没有设置路由功能,数据报被丢弃。
4. 路由表的结构:

目的IP地址 它既可以是一个完整的主机地址,也可以是一个网络地址。主机地址有一个非0的主机号(见图1-5),以指定某一特定的主机,而网络地址中的主机号为0,以制定网络中的所有主机(如以太网,令牌环网)
下一站(或下一跳)路由器(next-hop router)的IP地址,或者有直接连接的网络IP地址 下一站路由器是指一个直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的
标志 指明目的IP是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
为数据报的传输制定一个网络接口  
5. IP路由选择的步骤:

(1)搜索路由表,寻找与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发给该表目制定的下一站路由器或直接链接的网络接口(取决于标志字段的值)
(2)搜索路由表,寻找能与目的网络号匹配的表目。如果找到,则把报文发送给该表目制定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论
(3)搜索路由表,寻找标为"默认(default)"的表目。如果找到,则把报文发送给该表目指定的下一站路由器

如果上面的步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误

6. 为一个网络制定一个路由器,而不必为每个主机制定一个路由器,是IP路由选择机制的另一个基本特征
  • 举例
  • 例一:

  同一个以太网上的两台主机,bsdi向sun发送数据。当IP从某个上层收到这份数据报后,它搜索路由表,发现目的IP地址(140.252.13.33)在一个直接相连的网络上(以太网140.252.13.0)。于是,在表中找到匹配网络地址(在下一节中,我们将看到,由于以太网的子网掩码的存在,实际的网络地址是140.252.13.32,但是这并不影响这里所讨论的路由选择)。数据报被送到以太网驱动程序,然后作为一个以太网数据帧被送到sun主机上。IP数据报中的目的地址是sun的IP地址(140.252.13.33),而在链路层首部中的目的地址是48bit的sun主机的以太网接口地址。这个48bit的以太网地址是用ARP协议获得的。

  • 例二:

  主机bsdi有一份IP数据报要传送到ftp.uu.net主机上,它的IP地址是192.48.96.9。经过的前三个路由器如上图3-4所示。首先,主机bsdi搜索路由表,但是没有找到于主机地址或网络地址相匹配的表目,因此只能用默认的表目,把数据报传给下一站路由器,即主机sun。当数据报从主机bsdi传到主机sun以后,目的IP地址是最终的信宿机地址(192.48.96.9),但是链路层地址却是sun主机的以太网接口地址。

  当sun收到数据报后,它发现数据报的目的IP地址并不是本机的任一地址,而sun已被设置成具有路由器功能,因此它把数据报进行转发。经过搜索路由表,选用了默认表目。根据sun的默认表目,它把数据报传给了下一站路由器netb,该路由器的地址是140.252.1.183。数据报是经过点对点SLIP链路传送的,采用了最小封装格式。图中没有给出像以太网那样的链路层数据帧首部,因为在SLIP链路中没有那样的首部。

  当netb收到数据报后,它执行sun主机相同的步骤,自己不是数据报上要找的东西,但是自己又有路由器功能,所以netb就有转发这个报文的义务。但是一看路由表,发现没有要找的那个主机的IP地址的记录,就连那个主机所在的网路的记录也没有,那怎么办?于是,他就把这个数据报发给了默认接它班的下一站路由器gateway,希望它能帮助自己完成未完成的使命。

  这里补充一下,netb是以太网140.252.1下的主机,而netb原来经过SLIP收到的数据报是没有链路层地址的,所以它动用了ARP协议,不知用了什么招数(以后会学到的),然后就知道了下一站的IP地址,然后就把它封装到了数据报的首部。

  路由器gateway也执行与前面两个路由器相同的步骤。它的默认路由表目所指定的下一站路由器IP地址是140.252.104.2。这个例子就到此为止了,预知后事如何,还要继续看书啦~

  例子的一些关键点:

1. 该例子中的所有主机和路由器都使用了默认路由。事实上,大多数主机和一些路由器可以用默认路由来处理任何目的,除非它在本地局域网上
2. 数据报中的目的IP地址始终不发生任何变化(在8.5节我们会看到不一样的情况)。所有的路由选择决策都是基于这个目的IP地址
3. 每个链路层可能具有不同的数据帧首部,而且链路层的目的地址(如果有的话)始终指的是下一站的链路层地址。在例子中,两个以太网封装了含有下一站以太网地址的链路层首部,但是SLIP链路没有这样做。以太网地址一般通过ARP获得。

『TCP/IP详解——卷一:协议』读书笔记——08的更多相关文章

  1. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  2. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

  5. 『TCP/IP详解——卷一:协议』读书笔记——13

    2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——11

    2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——07

    2013-08-20 17:51:49 第三章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP和IGMP数据都以IP数据报格式传输.再来看一下图 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——06

    2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——05

    2013-08-19 22:35:57 2.6 PPP:点对点协议 PPP点对点协议修改了SLIP协议中的所有缺陷: 1. 在串联链路上封装IP数据报的方法.PPP即支持数据为8位&无奇偶检验 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——04

    2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...

随机推荐

  1. ORACLE-SELECT学习

    (一)select格式:SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名2>[,…] [W ...

  2. PHP基础课程学习总结

    时间过得很快,不知不觉中过去了一个月,PHP基础课程已经学完了.休息这几天中,睡觉起来,整理下笔记,几天的假期又过去了,明天正式开始PHP的专业课程,新的征途又要开始了.开发整站时发现,过去整站做得太 ...

  3. Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

    本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式   Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...

  4. Linux命令总结:file

    转自:http://www.cnblogs.com/kerrycode/p/3806618.html 1.命令简介:用来识别文件类型,也可辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文件类 ...

  5. VMware学习笔记(一)

    vmware核心产品是vSphere,而vSphere主要包括ESXi和vCenterServer. ESXi不依赖其它操作系统OS,安装在每一台物理机上,ESXi是免费的.在ESXi主机上再安装vS ...

  6. {Links}{Matting}{Saliency Detection}{Superpixel}Source links

    自然图像抠图/视频抠像技术发展情况梳理(image matting, alpha matting, video matting)--计算机视觉专题1 http://blog.csdn.net/ansh ...

  7. 循序渐进之Spring AOP(5) - 创建切面

    在掌握了可用的增强后,接下来要做的就是精确的描述切点.前面的示例都是指定一个目标类并把增强织入到所有方法中,实际开发显然会有更精细的筛选需求,比如对所有类中名称以test结尾的方法加入监控执行时间,或 ...

  8. 浅谈Eclipse寻找JVM(JRE)的顺序机制(转)

    转自:http://blog.csdn.net/teedry/article/details/6666850 Eclipse也是一个普通的Java程序,因此必须有一个JRE做为运行环境.        ...

  9. HDU 4819 Mosaic (二维线段树)

    Mosaic Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)Total S ...

  10. MVC学习(四)几种分页的实现(2)

    在第一种分页方式中,仅仅实现了分页,但并未有体现出MVC的优势,没有体现出泛型编程思想,尤其在数据量很大的时候,分页十分缓慢,除此之外,还没有实现很好的封装,不是一个通用方法. 因此,我希望只要传入数 ...