ICMP - Internet Control Message Protocol
什么时候用到ICMP
为了让network layer运行,我们需要
1. The Internet Protocol(IP)
- The IP diagram
- Hop-by-hop delivery from end to end
2. Routing Tables
- Algorithms to populate router forwarding tables
3. ICMP - Internet Control Message Protocol
- Communicates network layer information between end host and routers
- reports error conditions
- Helps us diagnose problems
ICMP - 性质
ICMP - 原理
当router无法将packet正确地forward到destination B
它就会从router向source送回message,表示出现了error
IPMC - 结构
把原先的IP packet 中的header(包含了从A到B的 SRC和DEST),和data的前八位取出,加上type和code两个section,以此得到从router发回A的新IP packet中的data部分
(Type和Code两个section包含了对这个error的定义,例如Type 3 + Code 0 = destination network unreachable)
这个新packet的header中,IP src变成了router,IP dst变成了A
Ping命令是如何使用ICMP的
A 发送一个data部分为echo request的IP packet到B
B 发送一个data部分为echo reply的IP packet到A
Traceroute命令是如何使用ICMP的
A发送一个UDP message,但是在IP header中,它的TTL(time to live)=1,因此当这个packet到达第一个router的时候,TTL decrement变成0,那么这个router需要向A送回一个报告错误为TTL expired的ICMP datagram。那么它的IP header中的src是第一个router,dst是A。当A收到这个信息的时候,就可以得到第一个router的名称。
第二个router就通过发送一个TTL = 2的UDP信息
这个UDP message中的port number是错误的,因此到达B的时候,B会发送会一条报告错误为destination port unreachable的ICMP信息,则trace过程结束