关于TCP/IP协议栈内的数据封装过程和经过有几个小问题,还望救救我!!!

1、ICMP端口不可达是UDP返回的,那ICMP端口不可达报文的IP数据报内容和UDP首部应该是UDP给到ICMP的吧?
2、ARP有说是网络层,有说是数据链路层,那IP数据报会经过ARP吗?还是IP数据报直接到MAC,ARP只是把MAC地址给MAC层?
3、ping程序的ICMP数据报会经过IP打包吗?
图片说明图片说明

这两张图哪张更准确点?

https://blog.csdn.net/zhuyf0522/article/details/86705698