1. ICMP
ICMP (Internet Control Message Protocol) 作用:提高 IP 数据报交付成功的机会。
1.1 特点
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP 不是高层协议,而是 IP 层的协议。
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
1.2 格式
1.3 报文类型
种类 | 值 | 类型 |
差错报文 | 3 | 终点不可达 |
4 | 源站抑制 | |
11 | 时间超过 | |
12 | 参数问题 | |
5 | 改变路由(重定向) | |
询问报文 | 8或0 | 会送请求或回答 |
13或14 | 时间戳请求或回答 |
1.4 应用
(1)Ping(Packet InterNet Groper)
ping可以说是ICMP的最著名的应用,当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。一般的信息如下:
Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
Ping statistics for 10.4.24.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。我给的例子不太好,因为走的路由少,有兴趣地可以ping一下国外的网站比如sf.net,就可以观察到一些 丢包的现象,而程序运行的时间也会更加的长。
ping还给我们一个看主机到目的主机的路由的机会。这是因为,ICMP的ping请求数据报在每经过一个路由器的时候,路由器都会把自己的ip放到该数 据报中。而目的主机则会把这个ip列表复制到回应icmp数据包中发回给主机。但是,无论如何,ip头所能纪录的路由列表是非常的有限。如果要观察路由, 我们还是需要使用更好的工具,就是要讲到的Traceroute(windows下面的名字叫做tracert)。
2. Router 选择协议
(1)内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
(2)外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
2.1 RIP(Routing Information Protocol)
2.1.1 工作原理
RIP 是内部网关协议 IGP中最先得到广泛使用的协议,是一种分布式的基于距离向量的路由选择协议,要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
(1)给每一个已知的路由器发送rip请求报文,要求其他路由器给出完整的路由表。这种报文的命令字段为1,地址字段为0,度量地段为16(相当于无穷大)。
(2)接受请求,如果接收到刚才的那个请求,就把自己的完整的路由表交给请求者。如果没有,就处理IP请求表项,把表项中自己有的部分添上跳数,没有的部分添上16。然后发给请求者。
(3)接受回应。更新自己的路由表。使用hop数小的规则。
距离:RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
RIP 允许一条路径最多只能包含 15 个路由器,RIP 只适用于小型互联网
2.1.2 优缺点
(2)RIP 协议最大的优点就是实现简单,开销较小。
(3)RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
(4)路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加 .
缺点:好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。
2.1.3 RIP2报文格式
2.2 内部网关协议 OSPF
OSPF (Open Shortest Path First)
2.2.1 基本特点
(1)“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
(2)“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
(3)OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
(4)分布式的链路状态协议。
2.2.2 三要点
(1)向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
(3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
注意与RIP协议的区别
2.2.3 区域
OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域
好处:
(1)将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
(2)在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况,这样就减少了link-state database
2.2.4 OSPF 直接用 IP 数据报传送
(1)OSPF 不用 UDP 而是直接用 IP 数据报传送,可见 OSPF 的位置在网络层。
(2)OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
(3)数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
2.3 外部网关协议 BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。
2.3.1 发言人
每一个AS(自治系统)的管理员要选择至少一个路由器作为该自治系统的“BGP 发言人” 。
不同AS之间的通信是靠“发言人”交换信息完成的(通过TCP链接通信)。
2.3.2 BGP-4 报文
(1) 打开(Open)报文,用来与相邻的另一个BGP发言人建立关系。
(2) 更新(Update)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
(3) 保活(Keepalive)报文,用来确认打开报文和周期性地证实邻站关系。
(3) 通知(Notificaton)报文,用来发送检测到的差错。