《TCP/IP详解》笔记——IP选路
本系列是针对《TCP/IP详解》的笔记总结,包含各章节的主要内容。有助于帮助你快速了解并掌握TCP/IP协议的相关内容。
目录
1、概述
2、选路原理
3、ICMP重定向差错
4、ICMP发现报文
1、概述
IP层工作步骤
1)搜索匹配的主机地址(MAC)
2)搜索匹配的网络地址(IP)
3)搜索默认表项,该默认的表项在路由表中被指定为一个网络表项,网络号为0
IP层进行的主要是一种选路机制,搜索路由表并决定向那个网络接口发送分组。(具体的选路策略是由守护程序提供)
其中route命令和netstat命令的主要作用是:
- route print显示你当前网络连接的路由情况,子网连接情况等信息;
- netstat -r就是显示当前你的电脑与外界网络连接的网络信息,包括端口使用情况和IP连接的信息等。
2、选路原理
2.1简单路由表
2.2 初始化路由表
当初始化一个接口时(通常是用ifconfig命令设置接口地址),就为接口自动创建一个直接路由。对于点对点链路和环回接口来说,路由是达到主机。对于广播接口来说,如以太网,路由是达到网络。
到达不直接相连的主机或网络的路由必须以某种方式添加到路由表中。一个常用的方法是在系统引导时显式地在初始化文件中运行route命令。
2.3 没有到达目的地的路由表
- 如果数据报是由本地主机产生的,那么就给发送该数据的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。
- 如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。
3、ICMP重定向差错
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。
1)我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。
2)R1收到数据报标签检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。
3)R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。
ICMP重定向报文的接受者必须查看三个IP地址:
(1)导致重定向的IP地址(在作为ICMP重定向报文数据部分返回的IP首部中);
(2)发送重定向报文的路由器的IP地址(包含重定向信息的IP数据报中的源地址)
(3)应该采用的路由器IP地址(在ICMP报文中的4~7字节)
其他规则:
首先,重定向报文只能由路由器生成,而不能由主机生成。
另外,重定向报文时为主机而不是为路由器使用的。假定路由器和其他一些路由器共同参与某一种选路协议,则该协议就能取消重定向的需求。
4、ICMP发现报文
一般认为,主机在引导以后要广播或多播发送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通知报文,允许每个正在监听的主机相应地更新它们的路由表。
RFC确定了这两种ICMP报文的格式。
路由器在一份报文中可以通知多个地址。地址数指的是报文中所含的地址数。地址项大小指的是每个路由器地址32bit字的数目,始终为2.生存期是指通告地址的有效时间。
接下来是一对或多对IP地址和优先级。优先级是一个有符号的32bit整数,指出该IP地址作为默认路由器地址的优先等级,这是与子网上的其他路由器相比较而言的。值越大说明优先级越高。优先级为0x80000000说明对应的地址不能作为默认路由器地址使用,尽管它也包含在通告报文中。优先级默认值一般为0。
4.1 路由器操作
当路由器启动时,它定期在所有广播或多播传送接口上发送通告报文。这些报文不是定期发送的,而是随机传送的,以减少与子网上其他路由器发生冲突的概率。一份给定的通告报文默认生命周期是30分钟。
使用生命周期的另一个时机是当路由器上的某个接口被关闭时。在这种情况下,路由器可以在该接口上发送最后一份通告报文,并将生命周期值设为0。
4.2 主机操作
主机在引导期间一般发送三份路由器请求报文,每三秒钟发送一次。一旦接收到一个有效的通告报文,就停止发送请求报文。
主机也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器会超时。
只要有一般的默认路由器,该路由器就会每个10分钟发送通告报文,报文的生命周期是30分钟。这说明主机的默认表项是不会超时的,即使错过了一份或两份通告报文。