TCP/IP详解-IP和IP选路

来源:互联网 发布:调度算法有哪些 编辑:程序博客网 时间:2024/06/06 10:41

1 IP简介
IP协议是不可靠的,它不保证IP数据报能成功地达到目的地。如果发送某种错误,如某个路由器暂时用完了缓冲区,IP的处理方法:丢弃该数据报,然后发送ICMP消息给信源端,任何可靠性由上层提供。

IP是无连接的,它不维护任何关于后续数据报的状态信息。

2 IP首部
这里写图片描述

4个32bit值以下面的次序传输:0-7bit,8-15bit,16-23bit,24-31bit。这种传输次序为大端字节序,也称为网络字节序。小端字节序传输前必须转换成网络字节序。

服务类型字段:
这里写图片描述

首部检验和依据IP首部计算的检验和码

3 子网寻址
B类地址的子网划为:
这里写图片描述

主机号全0和全1的IP不能分配为主机IP

4 子网掩码
子网掩码说明子网号和主机号之间的分界,表明多少比特用于子网号及多少比特用于主机号

这里写图片描述

5 特殊情况的IP地址
这里写图片描述

表中头两项,网络号为0,如主机使用BOOTP协议确定本机IP地址时只能作为初始化过程中的源地址出现

6 子网的例子
这里写图片描述

这里写图片描述

7 ifconfig命令
ipconfig命令提供系统上的接口信息
这里写图片描述

这里写图片描述

8 netstat命令
netstat命令也提供系统上的接口信息,-i参数打印出接口信息,-n参数打印出IP地址而不是主机名

这里写图片描述

9 IP路由选路
路由守护程序开机启动,并一直运行,提供选路策略
这里写图片描述

IP搜索路由表的流程:
1)搜索匹配的主机地址
2)搜索匹配的网络地址
3)搜索默认表项
4)如果第一步,第二步,第三步都不满足,则丢弃该报文

简单路由表:
这里写图片描述

U 该路由可以使用
G 该路由到是到一个网关。如果没有设置改标志,说明目的地是直接相连的
H 该路由是到一个主机,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
D 该路由是由重定向报文创建的
M 该路由已被重定向报文修改

标志G区分间接路由和直接路由(不设置G)。区别在于,发往直接路由的分组中不但具有指明目的端的IP地址,还有其链路层地址;发往间接路由的分组指明目的端的IP地址,但链路层地址指明的是网关

当目的地址为本机IP地址,第一次搜索就找到匹配的主机地址,然后把报文直接送给环回驱动程序,再有驱动程序把报文放入IP输出队列中

初始化路由表:
每当初始化一个接口时,就为接口自动创建一个直接路由

到达主机或网络额路由如果不是直接相连的,可以通过显示运用命令添加路由
这里写图片描述

没有到达目的地的路由:
1)如果数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错,主机不可达差错或网络不可达差错
2)如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文

10 ICMP主机与网络不可达差错
当路由器收到一份IP数据报但又不能转发时,就要发生一份ICMP”主机不可达”差错报文

11 转发或不转发
一般主机都不转发IP数据报,除非对它们进行特殊配置而作为路由器使用,例如:大多数伯克利派生出的系统有个内核变量ipforwarding来配置

12 ICMP重定向差错
只有主机可以选择路由器发送分组的情况下,才能看到ICMP重定向报文。
这里写图片描述
1)主机发送一份IP数据报为R1。这种选路决策经常发送,因为R1是该主机的默认路由
2)R1收到数据报并检查它的路由表,发现R2是发送数据报的下一站。当它把数据报发给R2时,R1检测到发送数据报的端口和数据报达到接口时相同的(主机和两个路由器在同一LAN),就给路由器发送重定向报文给原始发送端提供了线索
3)R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1

重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。ICMP重定向允许TCP/IP主机进行选路时不需要具备智能特性,而把所有的智能特性放在路由器端

例子:
某主机路由表:
这里写图片描述
如果ping程序指定-v选项,可以看到主机接收的任何ICMP报文
这里写图片描述
可以看到在收到ping程序第一个响应之前,主机收到来自默认路由器gateway的重定向报文
现在某主机的路由表:
这里写图片描述
ICMP重定向报文创建的是主机路由,而不是网络路由

13 ICMP路由器发现报文
主机在引导以后要广播或多播传送一份路由器请求报文,一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应的更新它们的路由表

ICMP路由通告报文:
这里写图片描述
这里写图片描述

当路由器启动时,它在随机时间(以减小与子网上其他路由器发生冲突的概率)内广播或多播发送接口上发送通告报文。
一般每两次通告间隔450秒和600秒。一份给定的通告报文默认生命周期是30分钟。

当路由器上的某个接口被关闭时,路由器可以在该接口上发送最后一份通告报文,并把生命周期设置为0。

除此之外,路由器还监听来自主机的请求报文,并发送路由器通告报文响应这些请求报文。

主机在引导期间一般发送三分路由器请求报文,没三秒钟发送一次,一旦接收到一个有效的通告报文,就停止发送请求报文。

主机也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器会超时。

只要有一般的默认路由器,该路由器就会每隔10分钟发送通告报文,报文的生命周期是30分钟。这说明主机的默认表项是不会超时的,即使错过一份或两份通告报文。

0 0
原创粉丝点击