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. 互联网产品团队中Web前端工程师的重要性

    国内外各大互联网公司,都有UEx/d|UCD|CDC(Customer Research & User Experience Design Center)团队. 在很多公司会认为,合格的产品经 ...

  2. 通过OpenSSL来生成二进制格式证书文件(pfx和cer)

    1.生成RSA字符串私钥 genrsa -out private-rsa.key 2.由1中私钥导出*.cer二进制公钥文件 req -new -x509 -key private-rsa.key - ...

  3. 为什么要选择Sublime Text3?

    为什么要选择Sublime Text3? Sublime Text3 自动保存,打开图片 跨平台启动快!!!!多行游标,太好用. 插件,简直选不过来. 代码片段 VIM兼容模式 菜单栏基础功能介绍 F ...

  4. ASP.Net页面刷新后自动滚动到原来位置

    在网上搜索之后总结了三种方式: 1.设置Page中的MaintainScrollPositionOnPostback属性为true A>.页面里有MaintainScrollPositionOn ...

  5. 高清HDMI编码器|上海视涛科技

    HDMI编码器(E300)简介 HDMI编码器(E300)是上海视涛科技出品的高性能HDMI+VGA编码产品.该HDMI+VGA编码器是上海视涛科技完全自主研发,并适用于VGA.DVI.HDMI等信号 ...

  6. Python数据结构与算法--数据类型

    从数据类型开始 Python支持面向对象的编程范式,这意味着Python把数据看成解决问题的关键. 在Python中,类似其他的面向对象的编程语言, 我们定义一个类,用来描述数据是什么 (状态) 和数 ...

  7. iOS设计模式之中介者模式

    中介者模式 基本理解 中介者模式又叫做调停者模式,其实就是中间人或者调停者的意思. 尽管将一个系统分割成许多对象通常可以增加可复用性,但是对象之间的连接又降低了可复用性. 如果两个类不必彼此直接通信, ...

  8. ARC-数据类型需要释放的情况

    // Foundation :  OC// Core Foundation : C语言// Foundation和Core Foundation框架的数据类型可以互相转换的 //NSString *s ...

  9. 自己使用 1.C语言历史以及特点。

    1. C语言的发展及特点? C在1969--1973年间与Unix操作系统同时诞生:最富创造性的时期是1972年.另一次大的变化发生在1977到1979年间,当Unix系统的可移植性得到证明时.在后一 ...

  10. Android 网络编程基础之简单聊天程序

    前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...