精品文档---下载后可任意编辑计算机网络实验上机指导书专业 班级 学号 姓名 沈阳工程学院信息工程系精品文档---下载后可任意编辑实验 2ICMP 协议实践--ping 解析一. 实验目的掌握 ICMP 原理,利用其实现网络主机状态测试。二. 实验内容 利用 ICMP 协议原理编程实现 PING 命令,测试目标主机是否可到达。并了解 Ping 实现原理。三. 实验前的准备了解 ICMP 原理及相关概念。掌握相关软件编程知识。四. 实验要求及实验软硬件环境【基本要求】设计程序完成 PING 命令。完成此项实验,完成实验报告。【实验组织方式】个人实验【实验条件】局域网环境下微机两台,编程软件。五. 实验步骤.了解 ICMP 原理以及网络编程(1)源程序:WindowsPingPingPingPingPingPingS. Army Ballistic Research Laboratory */while( nleft > 1 ) {sum += *w++;nleft -= 2;}/* mop up an odd byte, if necessary */if( nleft == 1 ) {精品文档---下载后可任意编辑u_short u = 0;*(u_char *)(&u) = *(u_char *)w ;sum += u;}/* * add back carry outs from top 16 bits to low 16 bits */sum = (sum >> 16) + (sum & 0xffff);/* add hi 16 to low 16 */sum += (sum >> 16);/* add carry */answer = ~sum;/* truncate to 16 bits */return (answer);}实验结果如图 6-1 所示。图 6-1 ping 程序运行结果(2)LINUX /*简单的 ping 程序*/#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 3char 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 s...