计算机网络模型(四):网络层IP协议
计算机网络模型(五):网络层其他协议
ICMP协议
接上文,为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告。
ICMP协议不是上层协议,而是依附于IP协议的数据部分。
ICMP报文种类
目前ICMP报文有两种,一种是ICMP差错报文,一种是ICMP询问报文。下面列出几种常用的ICMP报文类型:
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
---|---|---|
差错报告报文 | 3 | 终点不可达 |
4 | 源点抑制(Source quench) | |
11 | 时间超时 | |
12 | 参数问题 | |
5 | 改变路由(Redirect) | |
询问报文 | 8或0 | 回(Echo)请求或回答 |
13或14 | 时间戳(Timestamp)请求或回答 |
差错报文类型有五种:
- 终点不可达:路由器或者主机发送了不能交付的数据报,就会向源点发送不可达报文。
- 源点抑制:当路由器或者主机由于拥塞而丢弃数据报时,向源点发送抑制报文,使源点直到把报文发送速率降低
- 时间超时:当路由器收到生存时间为0的报文时,应该向源点发送时间超时报文,并丢弃该生存时间为0的报文;或者当一个报文分片后,不能在规定时间内收到全部该分片报文,也会将其丢弃,并向源点发送时间超市报文。
- 参数问题:当路由器或者目的主机收到的数据报的首部中,有值不正确时,丢弃数据报,并向源点发送参数问题报文
- 改变路由:路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可以更好的路由)。
有几种情况,即使出现报文传问题,我们也不会发送差错报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
常用的ICMP询问报文有两种:
- 回送请求和回答:ICMP回送请求报文时由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送回送请求报文。
- 时间戳请求和回答: 请主机或者路由器回答当前日期和时间,有一个32位字段,写入整数,代表从1900年1月1日到当前时刻一共有多少秒。可用来同步时钟和测量时间。
内部网关协议
RIP协议以及Bellman-ford算法
RIP(Routing Information Protocol