ICMP协议全称是网际控制报文协议(Internet Control Message Protocol),ICMP协议可以报告错误信息或者异常情况
ICMP协议首部: 8位类型 8位代码 16位校验和
ICMP报文数据
ICMP报文分为:差错报告报文和询问报文:
ICMP报文种类 类型的值 报文类型 具体代码差错报告报文 3(终点不可达) 网络不可达 0
主机不可达 1
5(重定向) 对网络重定向 0
对主机重定向 1
11 传输超时 -
12 坏的IP头 0
缺少其他必要参数 1
询问报文 0或8 回送(Echo)请求或应答 -
13或14 时间戳(Timestamp)请求或应答 -
ICMP协议的应用
ping应用:我们可以通过ping命令进行简单的网络故障排查:
ping本地回环地址,一般情况下,都会得到返回的,如果得不到返回,则说明你的计算机的协议栈出现了问题,这个时候就可能需要重装系统,或者是重新安装这个协议栈
ping网关地址,即路由器地址,如果能得到返回的话,则说明本机到路由器的通路是通的,如果没有返回的话,则说明你的wifi,或者你的网线连接是有问题的
ping远端地址,如果不通的话,则说明你的家到ISP之间的网络是故障的,此时就需要联系网络服务商(移动、电信、联通)进行排查。
Traceroute应用:Traceroute可以探测IP数据报在网络中走过的路径
路由概述 思考:路由表中的下一跳地址是怎么来的?下一跳地址是唯一的吗?下一跳地址是最佳的吗?路由器怎么多,他们是怎么协同工作的?为了解决这些问题,路由表需要一个好的算法去解决这些事情。路由算法实际上是图论的算法,由于网络环境复杂,使得路由算法要比图论的算法更复杂。
由于互联网的规模是非常大的,互联网环境是非常复杂的,所以我们需要对互联网进行划分。自治系统(Autonomous System)是指处于一个管理机构下的网络设备群,AS内部网络自行管理,AS对外提供一个或者多个出(入)口。自治系统内部路由的协议称为:内部网关协议(RIP、OSPF), 自治系统外部路由的协议称为:外部网关协议(BGP)。
路由算法
路由算法的本质是距离矢量(DV)算法, 距离矢量(DV)算法介绍如下:
每一个节点使用两个向量\(D_i\)和\(S_i\)
\(D_i\)描述的是当前节点到别的节点的距离
\(S_i\)描述的是当前节点到别的节点的下一节点
每一个节点与相邻的节点交换向量\(D_i\)和\(S_i\)的信息
每一个节点根据交换的信息更新自己的节点信息
现在假设有A的距离矢量信息,收到的距离矢量信息如下图:
A通过B到各个节点得距离矢量信息如下:
A通过C到各个节点得距离矢量:并更新下一条的节点
A通过D到各个节点得距离矢量:并更新下一条的节点
A通过F到各个节点得距离矢量:并更新下一条的节点
RIP协议