转自:http://hi.baidu.com/adobestone/item/7140eaf5feae1d3e753c4c2a
adobestone注:下图来自于《TCP/IP详解卷一:协议》第二章 图2-4
另,无论是ping127.0.0.1或本地IP(在Windows和Linux下),都不能抓获到ping数据帧,亦即ping两者都是不经过网卡的,都是通过环路来处理的(从图中也可以看出来)。但是由于在以太网驱动程序中可以获取本地主机的IP地址,这样的处理机制使得我们能够通过ping本地IP的方法来判断网卡是否正常工作,但实际上并没有发送到网卡。当拔掉网线后,ping本机是失败的,因为在这种情况下,驱动程序未能获得本地主机IP。并不能由此证明“ ping本机则是需要经过网卡的”。jergolfer 正解。
下面是那篇文章:
文章来源:http://blog.csdn.net/ixidof/article/details/5605942
alvas:
当发送icmp包的时候,这些包的发送路径是什么?都经过了什么地方?router的选择和interface的选择都由什么决定?
kapiter:
ping 127.0.0.1和ping本机的过程是不一样的
ip输出函数先检查地址是不是环回地址:
1. 如果是环回地址,直接交给环回驱动程序处理,返回ip输入函数
2. 如果不是环回地址,检查是不是广播地址或者多播地址
3. 如果不是广播或者多播地址,才检查是不是本机地址,如果是本机地址,则交给环回驱动程序处理,环回驱动程序返回给ip输入函数
从上面可以看出 ping 127.0.0.1数据包是不经过网卡的 ping本机则是需要经过网卡的
ICMP报文是封装在ip数据包里面的,所以router选择和interface选择过程和ip数据包是一样的
alvas:
thx
maoyinjie:
ping 127.0.0.1 和 ping本机同样是不经过网卡的,都是环回驱动处理掉的
dingcuipu8888:
lz你拔掉网线照样能ping 127.0.0.1,但是IP地址是ping不通的。2#说的没问题
liuyongq:
支持二楼的
jergolfer:
ping 127.0.0.1是测试本机是否安装了TCP/IP协议,而路由器和接口的选择是由路由表决定的,windows下可通过router print查看
ping 127.0.0.1是不会经过本机网卡的,当然抓包是看不到的
ping本机IP也不会经过本机网卡的
Richard Steven卷一中有详细分析,正如kapiter所说的