[网络层]ICMP协议
文章目录
ICMP是干什么的:
Internet Control Message Protocol 网际控制报文协议,发现错误,诊断错误,
ICMP在TCP/IP协议栈中的位置
ICMP是网络层协议,ICMP报文被封装进IP报文的数据部分
ICMP报文格式和类型
差错报告报文:
差错报告报文是源主机发送给目的主机的路上出错了,然后由目的主机或源主机通往目的主机的路由上的路由器来返回一个ICMP差错报告报文。
错误类型一共有五种:
目的不可达(Destination Unreachable)
-
网络不可达
你试图把数据报发到一个不存在的网段,路由器不知道该往哪转发你这个数据报,就给你返回一个Network Unreachable -
主机不可达
你试图把数据报发到一个不存在的主机,但是这个网段是存在的,当数据报到了这个网段但是找不到这个主机,就会返回Host Unreachable
也就是说你去ping了某个存在网段上的一个为上线的主机 -
协议不可达
就是说你用的这个协议的代号错了,协议栈里没这协议 -
端口不可达
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程,如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),就丢弃该报文,并发送端口不可达(Port Unreachable)差错报文给发送方。
超时
超时ICMP可能被路由器发送也可能被目的主机发送,
- 当路由器收到一个TTL=0的数据报时,不仅丢弃该数据报,并发送超时报文
- 当目的主机不能在预先规定的时间内收到一个数据报的全部报片时,就把已收到的数据报片全丢弃,并向源点发送时间超过报文
参数问题
就是说编包有问题,或者说编包没问题但是传输路上发生了错误,
改变路由
源点抑制(已被废除)
查询报文
回显应答
Echo Request和Echo Response
主要是测试连通性、计算RTT