1、主机中的路由表只能被守护进程routing daemon或者“redirect”类型的ICMP报文所更新。

2、在根据路由表进行路由选择时,判断的优先级从高到低依次为1)表中存在与目的IP完全匹配的表项2)表中存在与目的地址的网络地址匹配的表项3)表中存在default,即默认路由表项。经历上述三个步骤仍未匹配成功的,则丢弃该数据报。

3、netstat指令用于查看主机的路由表,如下图所示:

其中Gateway的“0.0.0.0”表示目的主机与当前主机在同一网段中,可直接到达,无需网关进行转发。Destination和Genmask都为“0.0.0.0”表示该表项为default gateway。而Flags字段除了上述的U,G以外还有其他的标识。

U表示该路由表项正在使用,是有效的

G表示目的主机并非与当前主机直接相连,需要通过网关转发到达,即间接路由(indirect routing)。

H表示该目的地址是一个主机完整的IP地址,否则则为网络地址

D表示该路由表项是通过"redirect"得到的

M表示该路由表项经过了“redirect”的修改

4、IP数据报经过路由表匹配后如果没有成功,则分两种情况进行处理:1)若该数据报是主机自己产生的,则给相应的进程返回一个“host unreachable”或“network unreachable”的错误,2)若仅仅只是转发这个数据报,则给该数据报的源主机发送一个“host unreachable”或“network unreachable”的ICMP。

5、ICMP redirect error:所谓的“redirect”重定向是指,A通过B给C发了个数据报,但是A和C其实在同一个网段中,A可以直接和C交互,这时B就会给A发送一个“redirect”类型的ICMP,要求A添加直接到C的路由表项。至于B是如何判断什么时候应该发送“redirect”的ICMP呢?其实只要满足B转发的数据报的入口和出口是同一个网卡接口时就可以了,这就说明了通过B的转发是完全没有必要的。这里需要注意的是,重定向添加的路由表项必然是到主机的路由,即Flags是有H标记的。因为产生重定向的ICMP的路由器对子网结构是不清楚的。

6、路由重定向的一个好处是,在开始配置主机路由表时不用配置太复杂的表项,因为在接下来的运行过程中可以通过重定向来不断优化。

7、ICMP Router Discovery Messages:除了读取配置文件,静态初始化路由表以外,我们还可以通过主机和路由器间护发“advertisement ”和“solicitation ” message的方式。当主机初始化的时候,它会广播一个solicitation message,听到这个消息的路由器就会发送advertisement message作为回应,希望将自己作为主机的默认网关。如果有多个路由器回应,则根据系统管理员的配置,从中选择一个。而且路由器大概会每隔十分钟发送一个advertisement message,使主机中的默认路由选项不会过期。如果超过了30分钟,主机还没有收到与当前默认路由相应的advertisement message,则该默认路由选项过期。

《TCP/IP 详解 卷一》读书笔记-----IP静态 路由的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

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

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

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

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

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

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

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

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

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

  8. 《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP

    1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的 ...

  9. 【TCP/IP详解 卷一:协议】第一章概论 学习笔记

    第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP < ...

  10. 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议

    11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...

随机推荐

  1. DataSet导出到Excel,并生成文件(C#实现,可合并行和列)

    using System; using System.IO; using System.Data; using System.Reflection; using System.Diagnostics; ...

  2. JPA(7) spring-data-jpa

    对于不是使用spring管理的项目,我们就自己创建对象使用:大概的思路就是①创建dao接口②实现该接口,并且编写逻辑: Dao: public interface StudentDao { publi ...

  3. uml中的几种关系

    这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...

  4. js 自带的 reduce() 方法

    1.方法说明 , Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,其效果 ...

  5. (旧)子数涵数·DW——图文混排页面

    一.首先,打开Dreamweaver,新建一个的HTML项目. 二.在设计区里,写一些文字,随便写一点(也可以在代码区中的<body>和</body>之间写). 三.插入一张图 ...

  6. 总结一下SQL的全局变量

    SQL Server 2008中的全局变量及其用法 T-SQL程序中的变量分为全局变量和局部变量两类,全局变量是由SQL Server系统定义和使用的变量.DBA和用户可以使用全局变量的值,但不能自己 ...

  7. IOS6学习笔记(四)

    1.GCD设置一个timer计时器 - (void)awakeFromNib { __weak id weakSelf = self; double delayInSeconds = 0.25; _t ...

  8. 关于HTML的编码问题

    平时我在写html文件时,很容易忘掉这个文件的编码类型,<meta charset=”utf-8”> 的语句,因为编辑器默认设置了一个编码,所以在我没有写编码格式设置语句的情况下,效果依然 ...

  9. 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。

    错误的写法:  if (this.GridView1.Rows.Count > 0)         {             string style = @"<style& ...

  10. 关于C#中泛型类型参数约束(where T : class)

    .NET支持的类型参数约束有以下五种:where T : struct                               | T必须是一个结构类型where T : class       ...