1.linuxlinuxlinuxä¸ping
2.pingçLinux&Unix
3.linux ping命令详解
4.ping命令全链路分析(3)-用户态数据包构造与传递
5.linux pingå¤ç
linuxlinuxlinuxä¸ping
linuxä¸pingå½ä»¤ä½¿ç¨è¯¦è§£ï¼æç®åçå°±æ¯pingipäºï¼ä¹æ¯æ常ç¨çï¼æ¯å¦ping..1.1å¦å¤ï¼è¿æ-c-s-Wé项ping-c..1.1表示ping4次ping-s..1.1表示æ¯æ¬¡åé2Kçpingæµè¯å è³äº-Wæ¯ç¨äºè®¾ç½®æ¯æ¬¡pingçé´éæ¶é´ï¼ä»¥ç§ä¸ºåä½ä»¥ä¸å°±æ¯Linuxä¸pingå½ä»¤ç使ç¨æ¹æ³äºï¼å ¨äººå·¥ææï¼è¯·ç¬çº³~
linuxä¸pingå½ä»¤ææ ·ä¿®æ¹åèï¼
linuxä¸pingå çé»è®¤å¤§å°ä¸ºByteï¼æ¬¡æ°ä¸éã
pingå½ä»¤ä¸»è¦æ¯èµ°ICMPåè®®åçechoå½ä»¤ï¼å½ç¶æ们å¯ä»¥ä¿®æ¹åéæ°æ®é¿åº¦ã
-sæ°æ®å 大å°>
æå®æ¬¡æ°ä¸º4次ï¼æ°æ®å 大å°ä¸ºByteï¼ping-c4-sip
å¦æéè¦æ¹åpingå æ°æ®å°±è¦ä½¿ç¨åå§å¥æ¥åçæ¹å¼èªå·±ç¼ç¨æ¥å®ç°äºã
linuxpingç¨çåªä¸ªç«¯å£ï¼
pingåéçæ¯icmpæ¥æï¼å±äºl3å±æ¥æï¼ä¸æ¶å端å£çæ¦å¿µï¼ç«¯å£æ¯ä¼ è¾å±çæ¦å¿µ
linuxè½pingéï¼ä½ä¸è½ä¸ç½ï¼
1.å¯ä»¥pingéå¤ç½ipï¼æ æ³pingéååï¼é£ä¹å°±æ¯Linux使ç¨çDNSæé®é¢æ¢ä¸ä¸ªæ¯å¦ï¼sed-i'1anameserver8.8.8.8'/etc/resolv.conf2.LinuxçDNSåWindowsä¸æ¬å°è¿æ¥çDNSä¸æ ·éè¦ææ¶åè°æ´ä¸ä¸äºDNSä¼åºç°ä¸å¥½ä½¿çæ åµï¼é£ä¹å°±ç¼è¾/etc/resolv.confåä¸ç»çDNSææ¯è¾æç¨ã
é¿pingçå½ä»¤æ¯ä»ä¹ï¼
é¿pingçå½ä»¤æ¯æ¯doså½ä»¤ï¼ä¸è¬ç¨äºæ£æµç½ç»éä¸ä¸éï¼ä¹å«æ¶å»¶ï¼å ¶å¼è¶å¤§ï¼é度è¶æ ¢ã
Pingæ¯WindowsãUnixåLinuxç³»ç»ä¸çä¸ä¸ªå½ä»¤ãpingä¹å±äºä¸ä¸ªéä¿¡åè®®ï¼æ¯TCP/IPåè®®çä¸é¨åãå©ç¨âpingâå½ä»¤å¯ä»¥æ£æ¥ç½ç»æ¯å¦è¿éï¼å¯ä»¥å¾å¥½å°å¸®å©æ们åæåå¤å®ç½ç»æ éãåºç¨æ ¼å¼ï¼Pingç©ºæ ¼IPå°åã该å½ä»¤è¿å¯ä»¥å 许å¤åæ°ä½¿ç¨ï¼å ·ä½æ¯é®å ¥Pingæå车å³å¯çå°è¯¦ç»è¯´æã
pingçLinux&Unix
å¦å³å¾æ¯linuxçpingæ令 æè¿°:ping ç¨åºä½¿ç¨ ICMP åè®®ç强å¶åæ¾è¯·æ±æ°æ®æ¥ä»¥ä½¿ä¸»æºæç½å ³åéä¸ä»½ICMPçåæ¾åºçãåæ¾è¯·æ±æ°æ®æ¥(pings)å«æä¸ä¸ªIPåICMPçæ¥å¤´ï¼åè·ä¸ä¸ª``æ¶é´å¼å ³é®å''ç¶åæ¯ä¸æ®µä»»æé¿åº¦çå¡«å åèç¨äºæä¿æåç»é¿åº¦ä¸ºçæ´æ°åãLinuxçpingè¯æ³åWindowsçå·®ä¸å¤
ä½æ¯LinuxçPingæ°æ®å æ¯bytesç èWindowsçæ¯byteWindowsä¸é»è®¤åéå次æ°æ®å ,å®äºä¹åèªå·±ç»æ,Linuxä¸çpingç¨åºé»è®¤ä¸ååéæ°æ®å ,ç´å°ä½ æå¨åæ¢ãï¼åæ¢æ令æ¯ctrl+cï¼
è¿åæ°æ®æ ¼å¼ä¸å
ping [-dfnqrRv][-c<å®æ次æ°>][-i<é´éç§æ°>][-I<ç½ç»çé¢>][-l<åç½®è½½å ¥>][-p<èæ¬æ ·å¼>][-s<æ°æ®å 大å°>][-t<åæ´»æ°å¼>][主æºå称æIPå°å]
-c count å¨åé(åæ¥æ¶)äºæ£å¥½æ°é为countçåæ¾åºçåç»ååæ¢æä½ãå¨åéäº count个åç»å没ææ¶å°ä»»ä½åç»çç¹å«æ åµæ¯åé导è´äºç»æ¢(éç¨ä¸»æºæç½å ³ä¸å¯è¾¾)ã
-d å¨æç¨çå¥æ¥åä¸ä½¿ç¨ SO_DEBUG é项ã
-f 以é«éæ¹å¼æ¥ä½pingã以åç»è¿åçé度æ¥è¾åºå ¶å®åç»ææ¯ç§è¾åºç¾æ¬¡ãå½æ¶å°æ¯ä¸ªåæ¾åºç并æå°ä¸ä¸ªéæ ¼ç¬¦æ¶ï¼å¯¹æ¯ä¸ªåæ¾è¯·æ±é½æå°ä¸ä¸ªå¥ç¹``.''ãè¿å¯ä»¥å¿«éæ¾ç¤ºåºä¸¢å¼äºå¤å°ä¸ªåç»ï¼åªæè¶ çº§ç¨æ·å¯ä»¥ç¨ è¿ä¸ªé项ãè¿ï¼æä½ï¼å¯¹ç½ç»è¦æ±é常èå»ï¼åºè¯¥æ é使ç¨ã
-i wait å¨åéæ¯ä¸ªåç»æ¶çå¾ wait个ç§æ°ã缺çå¼ä¸ºæ¯ä¸ªåç»çå¾ ä¸ç§ãæ¤é项 ä¸-fé项ä¸è½åæ¶ä½¿ç¨ã
-l preload å¦ææå®preloadï¼é£ä¹pingç¨åºå¨å¼å§æ£å¸¸è¿è¡æ¨¡å¼åå°½å¯è½å¿«å°åéåç»ãåæ ·åªæè¶ çº§ç¨æ·å¯ä»¥ç¨è¿ä¸ªé项ã
-n åªä»¥æ°åå½¢å¼è¾åºä¿¡æ¯ãè¿æ ·å°±ä¸å°è¯å»æ¥æ¾ä¸»æºåäºã
-p pattern å¯ä»¥æå®æå¤ä¸ªå¡«å åèç¨äºä¿æåç»é¿åº¦ä¸ºçæ´æ°åãå¨ç½ç»ä¸è¯æä¸æ°æ®ç¸å ³é®é¢æ¶æ¤é项å¾æç¨ãä¾å¦``-pff''å°ä½¿ååºçåç»é½ç¨å ¨ 1å¡«å æ°æ®åºã
-q éæè¾åºãå¨ç¨åºå¯å¨åç»ææ¶åªæ¾ç¤ºæè¦è¡ã
-R è®°å½è·¯ç±ãå¨åæ¾è¯·æ±åç»ä¸å å«è®°å½è·¯ç±é项并å¨ç¸åºçåç»è¿åæ¶æ¾ç¤ºè·¯ç±ç¼å²åºã注æIPé¦é¨ç容éåªè½åæ¾9æ¡è¿æ ·çè·¯ç±ãå¾å¤ä¸»æºå¿½ç¥æç¦ç¨æ¤é项ã
-t åæ´»æ°å¼ï¼è®¾ç½®åæ´»æ°å¼TTLç大å°ã
-w timeout æå®çå¾ æ¯ä¸ªååºçæé¿æ¶é´ï¼åä½æ¯æ¯«ç§ï¼ãè¿ä¸ªéé¡¹ä» å-cé项ä¸èµ·æè½èµ·ä½ç¨ãå®ä½¿pingå½ä»¤ä»¥æé¿çè¶ æ¶æ¶é´å»çå¾ åºçï¼åéæåä¸ä¸ªä¿¡æ¯å åï¼ã linuxçä¸æ¯ipconfig /allèæ¯ifconfig
ææ ·ä½¿ç¨Pingè¿å½ä»¤æ¥æµè¯ç½ç»è¿éå¢ï¼
è¿éé®é¢æ¯ç±è®¸å¤åå å¼èµ·çï¼å¦æ¬å°é ç½®é误ãè¿ç¨ä¸»æºå议失æçï¼å½ç¶è¿å æ¬è®¾å¤çé æçæ éã
é¦å æ们讲ä¸ä¸ä½¿ç¨Pingå½ä»¤çæ¥éª¤ã
使ç¨Pingæ£æ¥è¿éæ§æå 个æ¥éª¤ï¼
1ï¼ ä½¿ç¨ifconfigè§å¯æ¬å°ç½ç»è®¾ç½®æ¯å¦æ£ç¡®ï¼
2ï¼ Ping.0.0.1ï¼.0.0.1åéå°åPingåéå°åæ¯ä¸ºäºæ£æ¥æ¬å°çTCP/IPåè®®æ没æ设置好ï¼
3ï¼ Pingæ¬æºIPå°åï¼è¿æ ·æ¯ä¸ºäºæ£æ¥æ¬æºçIPå°åæ¯å¦è®¾ç½®æ误ï¼
4ï¼ Pingæ¬ç½ç½å ³ææ¬ç½IPå°åï¼è¿æ ·çæ¯ä¸ºäºæ£æ¥ç¡¬ä»¶è®¾å¤æ¯å¦æé®é¢ï¼ä¹å¯ä»¥æ£æ¥æ¬æºä¸æ¬å°ç½ç»è¿æ¥æ¯å¦æ£å¸¸ï¼ï¼å¨éå±åç½ä¸è¿ä¸æ¥éª¤å¯ä»¥å¿½ç¥ï¼
5ï¼Pingæ¬å°DNSå°å,è¿æ ·åæ¯ä¸ºäºæ£æ¥DNSæ¯å¦è½å¤å°IPå°å解æã
6ï¼Pingè¿ç¨IPå°åï¼è¿ä¸»è¦æ¯æ£æ¥æ¬ç½ææ¬æºä¸å¤é¨çè¿æ¥æ¯å¦æ£å¸¸ã
linux ping命令详解
Linux系统下ping命令可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何,下面是ping命令内容的具体介绍:
1、ping命令简介:
ping命令向目标主机发送 ICMP 协议(Internet控制消息协议) 的echo request 数据包。如果目标主机在线且允许接受ping 请求,俄国源码论坛那么目标主机将回复 ICMP echo reply 数据包,可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。
2、语法:
ping(参数)(目标主机)
3、常见参数:
-A:自适应ping,根据ping包往返时间确定ping的速度;
-b:允许ping一个广播地址;
-B:不允许ping改变包头的源地址;
-c:countping指定次数后停止ping;
-d:使用Socket的SO_DEBUG功能;
-F:flow_label为ping回显请求分配一个位的“flow label”,如果未设置,外卖平台app源码内核会为ping随机分配;
-f:极限检测,快速连续ping一台主机,ping的速度达到次每秒;
-i:interval设定间隔几秒发送一个ping包,默认一秒ping一次;
-I:interface指定网卡接口、或指定的本机地址送出数据包;
-l:preload设置在送出要求信息之前,先行发出的数据包;
-L:抑制组播报文回送,只适用于ping的硬件压枪源码目标为一个组播地址
-n:不要将ip地址转换成主机名;
-p:pattern指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非常有用,如:“-p ff”;
-q:不显示任何传送封包的信息,只显示最后的结果
-Q:tos设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详见rfc和rfc文档;
-R:记录ping的路由过程(IPv4 only)。
ping命令全链路分析(3)-用户态数据包构造与传递
在Linux系统中,ping命令等网络工具基于inetutils包中的linux智能小车源码应用层网络工具。本文将探讨ping命令在Linux内核网络协议栈及驱动层面的实现方式。
应用层ping通过socket与内核层交互,程序首先初始化数据结构,创建socket连接,然后构造icmp数据包发送,并对返回的ICMP响应报文进行处理。初始化过程由ping_init()函数完成,授权商网站源码创建socket连接,分配数据结构存储空间。数据包构造、发送和返回报文处理由ping_echo()函数完成,其中设置了协议类型、包长度和目的地址,并注册了接收回调函数。
数据包发送过程在ping_run()函数中的send_echo()函数完成,将icmp报文数据部分复制到buf中,并通过socket_fd发送。当目的端返回ping命令的响应报文被网卡接收后,通过内核网络协议栈处理后返回给应用程序。ping应用程序采用IO复用中的select()方式来处理响应报文,当监控到对应socket连接中有数据包到来时,调用ping_recv()函数处理ICMP响应数据包。
应用层软件ping通过socket接口与内核通信,实现数据包发送和接收。数据包发送sendto()的实现代码在linux源码${ linux_src}/net/socket.c中,先检查数据区域是可读的,然后构造待发送消息,并将数据填充到消息中。数据包接收recvfrom()与发送相反,是从内核协议栈中读取数据包到应用层中,实现代码也在${ linux_src}/net/socket.c中。
本文主要分析了用户态程序ping如何构造ICMP请求报文,并通过socket接口实现数据在内核态与用户态之间的搬移。后续将继续分析内核态网络协议栈对数据包的处理,以及内核驱动与硬件的交互实现。
linux pingå¤ç
///////////ping.sh////////////
#!/bin/bash
input=$(cat $*)
for var in $input
do
ping $var &
done &>/tmp/a
///////////////////////////////////////
$ /bin/bash ping.sh a.txt
$ cat /tmp/a