TCP/IP 详解 卷1 ch7 Ping

本文详细介绍了ping命令的使用方法,包括如何通过添加特定选项使新版ping命令显示回显信息,以及如何利用ping命令测试本地和远程网络连接。还讨论了ping命令在内核层面的实现原理,并列举了一些实用的应用场景。

1. ping 命令,新版默认不回显,要加-s

/home/a/j/nomad2:ping -s x4100.unix-center.net PING x4100.unix-center.net: 56 data bytes 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=0. time=0.0960 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=1. time=0.0910 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=2. time=0.0560 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=3. time=0.0660 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=4. time=0.0590 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=5. time=0.0560 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=6. time=0.0620 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=7. time=0.0560 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=8. time=0.0650 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=9. time=0.0560 ms 64 bytes from x4100.unix-center.net (192.168.1.10): icmp_seq=10. time=0.0700 ms

第一个往返时间大,可能由于ARP。

2. ping WAN, youkuaiyun.com for example,

/home/a/j/nomad2:ping -s 117.79.93.195 PING 117.79.93.195: 56 data bytes 64 bytes from 117.79.93.195: icmp_seq=0. time=88.5 ms 64 bytes from 117.79.93.195: icmp_seq=1. time=0.872 ms 64 bytes from 117.79.93.195: icmp_seq=2. time=0.841 ms 64 bytes from 117.79.93.195: icmp_seq=3. time=0.998 ms 64 bytes from 117.79.93.195: icmp_seq=4. time=1.03 ms 64 bytes from 117.79.93.195: icmp_seq=5. time=0.595 ms 64 bytes from 117.79.93.195: icmp_seq=6. time=0.875 ms 64 bytes from 117.79.93.195: icmp_seq=7. time=0.782 ms 64 bytes from 117.79.93.195: icmp_seq=8. time=0.878 ms 64 bytes from 117.79.93.195: icmp_seq=9. time=0.829 ms 64 bytes from 117.79.93.195: icmp_seq=10. time=1.06 ms

有可能会丢包

3. IP Record Route Option

ping -R

4. ping is implemented in kernel, refer to http://lxr.linux.no/#linux+v2.6.36/net/ipv4/icmp.c

815/* 816 * Handle ICMP_ECHO ("ping") requests. 817 * 818 * RFC 1122: 3.2.2.6 MUST have an echo server that answers ICMP echo 819 * requests. 820 * RFC 1122: 3.2.2.6 Data received in the ICMP_ECHO request MUST be 821 * included in the reply. 822 * RFC 1812: 4.3.3.6 SHOULD have a config option for silently ignoring 823 * echo requests, MUST have default=NOT. 824 * See also WRT handling of options once they are done and working. 825 */ 826 827static void icmp_echo(struct sk_buff *skb) 828{ 829 struct net *net; 830 831 net = dev_net(skb_dst(skb)->dev); 832 if (!net->ipv4.sysctl_icmp_echo_ignore_all) { 833 struct icmp_bxm icmp_param; 834 835 icmp_param.data.icmph = *icmp_hdr(skb); 836 icmp_param.data.icmph.type = ICMP_ECHOREPLY; 837 icmp_param.skb = skb; 838 icmp_param.offset = 0; 839 icmp_param.data_len = skb->len; 840 icmp_param.head_len = sizeof(struct icmphdr); 841 icmp_reply(&icmp_param, skb); 842 } 843}

5. 一些应用

注意:ping本机IP(127.0.0.1 and 221.3.24.40)使用wireshark抓不到包。

0) 使用ipconfig /all观察本地网络设置是否正确;

1) ping 127.0.0.1 检查本机TCP/IP协议栈是否正常,失败则重装TCP/IP协议

2) ping 本机IP地址 检查网卡是否工作正常,失败则检查网线是否插上、网卡驱动是否正常

3) ping 网关IP地址 检查网关、网线及网络设置是否正常

4) ping 远端主机 检查本机与外部网络的连接是否正常

5) ping DNS服务器地址 检查本机是否能正常连接到DNS,更合适的检查DNS是否可用的方法是利用nslookup命令来测试

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值