1、icmp协议
查询报文类型 回送消息用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,ping
命令就是利用这个消息实现的
ping 这个程序是使用了 ICMP 里面的 ECHO REQUEST(类型为 8 ) 和 ECHO REPLY (类型为 0)。 ping 某个IP 就是往某个IP地址发个消息
2、在IPV4下用的是 ping 127.0.0.1 命令。在IPV6下用的是 ping6 ::1 命令。
3、断网也能ping 127.0.0.1 ping 回环地址和通过TCP等各种协议发送数据到回环地址都是走这条路径。整条路径从发到收,都没有经过"真网卡"。
当发现目标IP是回环地址时,就会选择本地网卡。
本地网卡,其实就是个**"假网卡",它不像"真网卡"那样有个ring buffer
什么的,"假网卡"会把数据推到一个叫 input_pkt_queue
的 链表 中。这个链表,其实是所有网卡共享的,上面挂着发给本机的各种消息。消息被发送到这个链表后,会再触发一个软中断**。
专门处理软中断的工具人**"ksoftirqd"** (这是个内核线程),它在收到软中断后就会立马去链表里把消息取出,然后顺着数据链路层、网络层等层层往上传递最后给到应用程序。
4、ping回环地址和ping本机地址没有区别
5、
127.0.0.1
是回环地址。localhost
是域名,但默认等于127.0.0.1
。