• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
ping
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
ping 命令工作原理详细解析
软件发布 ping 命令工作原理详细解析
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 思科认证 >> Cisco指导 >> ping 命令工作原理详细解析

ping 命令工作原理详细解析

添加时间: 2007-12-30 19:12:01  作者: Cisco教程指导  阅读次数:30   来源: http://www.d9soft.com

       

    
ping的 原理 就是首先建立通道,然后发送包,对方接受后返回信息,这个包至少包括以下内容,发送的时候,包的内容包括对方的ip地址和自己的地址,还有序列数,回送的时候包括双方地址,还有时间等,主要是接受方在都是在操作系统内核里做好的,时刻在监听,提供一段c程序的代码,希望对大家有用。
  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #define PACKET_SIZE 4096

  #define MAX_WAIT_TIME 5

  #define MAX_NO_PACKETS 3

  char sendpacket[PACKET_SIZE];

  char recvpacket[PACKET_SIZE];

  int sockfd,datalen=56;

  int nsend=0,nreceived=0;

  struct sockaddr_in dest_addr;

  pid_t pid;

  struct sockaddr_in from;

  struct timeval tvrecv;

  void statistics(int signo);

  unsigned short cal_chksum(unsigned short *addr,int len);

  int pack(int pack_no);

  void send_packet(void);

  void recv_packet(void);

  int unpack(char *buf,int len);

  void tv_sub(struct timeval *out,struct timeval *in);

  void statistics(int signo)

  { printf(" --------------------PING statistics------------------- ");

  printf("%d packets transmitted, %d received , %%%d lost ",nsend,nreceived,

  (nsend-nreceived)/nsend*100);

  close(sockfd);

  exit(1);

  }

  /*校验和算法*/

  unsigned short cal_chksum(unsigned short *addr,int len)

  { int nleft=len;

  int sum=0;

  unsigned short *w=addr;

  unsigned short answer=0;

  /*把ICMP报头二进制数据以2字节为单位累加起来*/

  while(nleft>1)

  { sum+=*w++;

  nleft-=2;

  }

  /*若ICMP报头为奇数个字节,会剩下最后一字节。把最后一个字节视为一个2字节数据的高字节,这个2字节数据的低字节为0,继续累加*/

  if( nleft==1)

  { *(unsigned char *)(&answer)=*(unsigned char *)w;

  sum+=answer;

  }

  sum=(sum>>16)+(sum&0xffff);

  sum+=(sum>>16);

  answer=~sum;

  return answer;

  }

  /*设置ICMP报头*/

  int pack(int pack_no)

  { int i,packsize;

  struct icmp *icmp;

  struct timeval *tval;

  icmp=(struct icmp*)sendpacket;

  icmp->icmp_type=ICMP_ECHO;

  icmp->icmp_code=0;

  icmp->icmp_cksum=0;

  icmp->icmp_seq=pack_no;

  icmp->icmp_id=pid;

  packsize=8+datalen;

  tval= (struct timeval *)icmp->icmp_data;

  gettimeofday(tval,NULL); /*记录发送时间*/

  icmp->icmp_cksum=cal_chksum( (unsigned short *)icmp,packsize); /*校验算法*/

  return packsize;

  }

 

上下文章:

 

上一篇文章: CCNP路由精华6:配置基本的边界网关协议 下一篇文章: Cisco系列路由器密码恢复研究与实践

相关文章:

  • [Oracle]Oracle10g闪回恢复区详细解析
  • oracle联机热备原理及rman
  • Oracle10g闪回恢复区详细解析
  • Oraclesqlplus编辑命令
  • Oracle认证考试详细介绍

相关软件:

  • 手机主题工作室 0.96
  • AutoCAD命令助手 V1.1
  • WorkLog 工作日志管理 3.18
  • Ping Pong 3D 1.4
  • KP Typing Tutor 6.8
  • KP Typing Tutor 4.02 汉化补丁

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

思科认证分类导航

  • Cisco动态
  • Cisco指导
  • Cisco介绍
  • Cisco试题

本类经典文章推荐

  • CISCO认证增长60%新认证推陈出新
  • 加快千兆网络普及以太网技术动向
  • WinGate与Internet连接共享
  • WinGate3.0安装指导
  • 远程传输的两种技术优劣各异
  • Cisco认证指导:基础中文命令集
  • IOS软件结构读书笔记
  • 路由器基础配置及传输协议
  • 网络安全:IPv6安全威胁
  • 路由技术:路由器远程管理实例

Cisco指导阅读排行

  • Cisco路由器访问控制列表详解
  • 我的CISCO认证学习笔记总结
  • EPON与GPON的综合比较
  • CCNA考试主要知识点指导
  • 企业网络规划对工作效率的影响
  • 如何安全地使用SNMP
  • Cisco指导:IOS命令大全(一)
  • GSM数字移动通信无线网络规划设计...
  • 使用IPSec阻止特定网络协议和端口
  • 如何配置Cisco PIX防火墙[5]

思科认证阅读总排行

  • Cisco路由器访问控制列表详解
  • 我的CISCO认证学习笔记总结
  • 思科考试认证(CISCO) CCNA考试就...
  • EPON与GPON的综合比较
  • Cisco经验介绍:CCNP培训日记(2)
  • CCNA考试主要知识点指导
  • Cisco经验介绍:ping命令之解惑
  • CCNABRAINDUMP6(1)
  • 企业网络规划对工作效率的影响
  • 思科认证考试(CCNA)考试模拟...

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有