网络协议笔记:ICMP==》网络层

ICMP(Internet Control Message Protocol,报文控制协议)属于网络层,和IP协议同层。
刘超老师将其比喻为网络界的侦察兵,我感觉非常非常合适,很形象。
1、ping命令是基于ICMP协议工作的,而ICMP是封装在IP包里面的。ICMP报文有(主动)查询报文类型和差错报文类型。
2、ping 的主动请求的包,称为ICMP Echo Request(代码,8),对主动请求的回复称为ICMP Echo Reply(代码,0)。它会比原生的ICMP多两个字段:类型和序号。还存放发送请求的时间值,用来计算往返时间。
3、差错报文主要有:
(1)终点不可达:网络不可达(代码:0;地方)、主机不可达(1;人)、协议不可达(2,口号不对)、端口不可达(3,种类)、需要分片但设置了不分片位(4);
(2)源站抑制(让源站放慢发送速度);
(3)时间超时;
(4)路由重定向
6、ping的发送过程:(同一局域网)
(1)源主机首先会构造一个ICMP请求数据包,包括多个字段:类型、顺序号等。还会插入发送时间;
(2)然后,由ICMP协议将这个数据包连通目标IP地址交给IP层;
(3)IP层构建IP数据包;加入MAC头,使用ARP映射表查找目标IP对应的MAC地址(若没有,发送ARP协议查询MAC);之后,由数据链路层构建数据帧,将其发送。
(4)目标主机接收到后,先检查MAC地址==》符合,接收后提取IP数据包,交给IP层;IP层检查后,提取信息交给ICMP协议;
很多中间设备是禁止ping的,但ping不同不代表网络不通,这时要使用Telnet。
7、Tranceroute:使用ICMP规则,故意制造产生错误的场景。
(1)故意设置一个特殊的TTL,来追踪去往目的地沿途经过的路由器。它的参数指向一个目标IP地址,会发送一个UDP的数据包。但它的UDP端口号会选择一个不可能的值,当该数据到达时,目的主机会产生一个“端口不可达”的错误ICMP报文。
(2)故意设置不分片,从而确认路径的MTU。

ping使用查询报文,Tranceroute使用差错报文。重点内容

推荐一下:《极客时间》里面的一节网络课程—-刘超老师

猜你喜欢

转载自blog.csdn.net/xuchonghao/article/details/81055452