ping 127.0.0.1 和 本机的ip地址,数据包会发到网卡上面吗?

来源:互联网 发布:淘宝无忧退货怎么关闭 编辑:程序博客网 时间:2024/05/01 11:24

转自: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所说的