『TCP/IP详解——卷一:协议』读书笔记——08
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. 路由表的结构:
|
||||||||
5. IP路由选择的步骤:
如果上面的步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误 |
||||||||
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的更多相关文章
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 『TCP/IP详解——卷一:协议』读书笔记——18
2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...
- 『TCP/IP详解——卷一:协议』读书笔记——14
2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...
- 『TCP/IP详解——卷一:协议』读书笔记——13
2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...
- 『TCP/IP详解——卷一:协议』读书笔记——11
2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...
- 『TCP/IP详解——卷一:协议』读书笔记——07
2013-08-20 17:51:49 第三章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP和IGMP数据都以IP数据报格式传输.再来看一下图 ...
- 『TCP/IP详解——卷一:协议』读书笔记——06
2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...
- 『TCP/IP详解——卷一:协议』读书笔记——05
2013-08-19 22:35:57 2.6 PPP:点对点协议 PPP点对点协议修改了SLIP协议中的所有缺陷: 1. 在串联链路上封装IP数据报的方法.PPP即支持数据为8位&无奇偶检验 ...
- 『TCP/IP详解——卷一:协议』读书笔记——04
2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...
随机推荐
- 多个字段用and和or时要注意用括号。
多个字段用and和or时要注意用括号. 新技能get! create table wly_test (name1 varchar2(10),number1 number(6),score1 numbe ...
- The listener supports no services解决一例
The listener supports no services解决一例 Listener动态监听静态监听注册实例 今天做Advacned Replication实验的时候碰到一个问题,启动目标 ...
- C#如何定义全局变量
C#中没有全局变量的概念,可以定义一个common类,通过静态变量来存放所有需要的全局变量,调用的时候通过common来调用即可. 例如: public static class common // ...
- EF6+MVC5之Oracleo数据库的Code First方式实现
折腾了好几天,在办公室机器上死活找不到ODP.net的Oracle数据库连接方式(但在家中电脑上正常).后来把之前安装的VS2013和所以安装的Oracle客气端统统卸载,重新安装visual stu ...
- MVC 下拉單數據內容綁定
#region /// <summary>授權範圍自建列表</summary> /// <returns></returns> ...
- magnum 命令使用说明
magnum 命令使用说明 1.用法 usage: magnum [--version] [--debug] [--os-cache] [--os-region-name <region-nam ...
- 往sql数据库表中添加字段
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...
- 《Linux内核设计与实现》读书笔记 第十七章 设备与模块
一.设备类型 1. Unix系统 - 块设备 - 字符设备 - 网络设备 2. 块设备 通常缩写为blkdev,它是可寻址的,寻址以块为单位,块大小随设备不同而不同:块设备通常支持重定位操作,也就是对 ...
- html里文本编辑器如何制作呢?
初入it职场,文本编辑器真的让人捉摸不透.最终在前端姐姐帮助下弄好了↓ 先在头部写好编辑器的各种功能的总体模型 <script>var editor; KindEditor.ready(f ...
- ubuntu下安装迅雷
----------------------------------2016-03-28新增适用于ubuntu16.04系列的安装包---------------------------------- ...