文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络技术交换技术ping命令工作原理详细解析
精品推荐
特别推荐
·串口连接设置超级终端管理交换机
·经典:交换机故障检测检查表
·交换机升级过程故障排除实例
·采购智能交换机的五个基本原则
·三层交换机的概念及其组网应用
·交换安全:用三层交换阻击DoS攻击
·交换机常见的故障类型及分析排查
·交换机的安全设置六大原则说明
·不要小看了ping命令
·常见网络交换机故障及应用问答
·教你识别交换机优劣的五个方面
·智能交换机产品及其选购要点
·什么样的交换机是安全的?
·深入了解计算机端口
·如何让网络坚不可摧 交换机安全六则
·巧用三层交换安全策略预防病毒
·关于交换机堆叠技术相关的常见问题
·笑傲江湖之三层交换篇
·信息网络案例----温州医学院附属第一医院
·cisco交换机3548配置
热点TOP10
·Cisco交换机基础
·串口连接设置超级终端管理交换机
·Cisco交换机配置教程
·CISCO交换机命令全集加说明2
·第三层交换机技术白皮书
·Cisco 6509交换机双引擎热备配置
·三层交换机的概念及其组网应用
·配置Catalyst交换端口分析器(SPAN)
·软交换技术组网应注意的问题与分析
·WiMAX回程链路和最后一公里无线宽带的市场机遇
·多层交换笔记2
·cisco交换机3548配置
·深入浅出了解交换机是怎么工作的
·深入了解计算机端口
·Cisco MDS 9000 系列交换阵列管理
·Quidway S3500系列交换机之高性能
·CISCO交换机命令全集加说明3
·LAN交换机如何工作
·Cisco 3550交换机上流量控制的实现
·常见网络交换机故障及应用问答

ping命令工作原理详细解析

日期:2007年5月3日 作者: 查看:[大字体 中字体 小字体]


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

#include <stdio.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netdb.h>
#include <setjmp.h>
#include <errno.h>

#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");
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); /*校验算法*/
return packsize;
}

/*发送三个ICMP报文*/

[1] [2] [3] 下一页 




上一篇:深入了解计算机端口

下一篇:网络设计师训练资料——60道典型选择题及答案

ping命令工作原理详细解析 相关文章:
·最详细的黑客入门法则
·初级网管或黑客必需撑握的8个DOS命令
·大航海家3-详细全攻略 - 游戏攻略
·《盟军敢死队:打击力量》详细流程攻略
·Excel密码保护的解除方法与解除原理
·秦殇复活-详细剧情攻略 - 游戏攻略
·socket编程原理
·中小企业整体网络安全解决方案解析
·ping 命令的用法大全
·DOS命令字典
ping命令工作原理详细解析 相关软件:
·豪杰音乐工作室V1.1 Build 0602
·工作流管理系统 V1.1
·手机的原理与维修
·shell编程和unix命令
·精通.Net核心技术原理与构架
·Linux 系统命令及其使用详解(大全)
·同济大学-通信原理视频教程 wmv 68集,查看
·DOS下常用网络命令解释大全
·同济大学.现代通信原理与技术
·多线程ping服务系统V1.2

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