文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络技术网络知识ping 命令工作原理详细解析
精品推荐
特别推荐
·全光网的发展趋势及其挑战
·详解策略路由和路由策略的区别
·ping 命令工作原理详细解析
·强烈推举系统管理员收藏的命令
·端口大全+注解
·常见端口表汇总
·网络监听的原理、实现技术与防范方法
·网管必须熟悉的几个网络DOS命令
·支招解决:网站本机无法访问故障
·支付宝数字证书无法使用解决方法
热点TOP10
·让ADSL自动拨号和永久在线
·我想知道怎么上网
·IMS国际标准研究的最新进展
·多情况下的 双网卡共享上网
·家庭多机共享上网的解决之道
·Internet你应该知道的21个事实
·网管们必须具备的硬件基础知识
·集合:网络安全方面的专业词汇
·利用网络保存个人文档的几种技巧
·1394网络适配器是什么东西?

ping 命令工作原理详细解析

日期:2008年1月15日 作者: 查看:[大字体 中字体 小字体]


ping 命令工作原理详细解析(1) 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("\n--------------------PING statistiCS-------------------\n");
ping 命令工作原理详细解析(2)   printf("%d packets transmitted, %d received , %%%d lost\n",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); /*校验算法*/

[1] [2] 下一页 




上一篇:面试:如何让考官喜欢上你?

下一篇:CCNP路由精华:在可扩展的网络中实施BGP

相关文章:
·最详细的黑客入门法则
·初级网管或黑客必需撑握的8个DOS命令
·基础知识 初级黑客安全技术命令详解
·Windows系统进程列表完全解析
·[宠物]问道宝宝,肉盾,法宠,攻宠全面解析
·英雄传说4:朱红的泪 详细攻略 - 游戏攻略
·常用的网络测试命令
·3Ds max多边形建模主要功能命令
·Excel密码保护的解除方法与解除原理
·千个常用DOS命令全面收藏
相关软件:
·工作流管理系统 V1.1
·精通.Net核心技术原理与构架
·2006年考研政治强化班·马克思主义政治经济学原理 刘儒 08
·2006年考研政治强化班·马克思主义政治经济学原理 刘儒 07
·2006年考研政治强化班·马克思主义哲学原理 任汝芬 10
·中级装饰美工工作要求
·2003CPA考试最新审计详细笔记
·自考试题2005年1月马克思主义哲学原理自考试题
·2006年考研政治强化班·政治经济学原理 包仁 04
·《马克思主义哲学原理》练习题1.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn