文档库 最新最全的文档下载
当前位置:文档库 › 计算机网络实验之Ping程序的设计与实现

计算机网络实验之Ping程序的设计与实现

计算机网络实验之Ping程序的设计与实现
计算机网络实验之Ping程序的设计与实现

课程名称计算机网络

实验序号实验五

实验项目Ping程序的设计与实现

2017年03月25 日

实验报告要求

1、实验报告封面填表说明(每份实验报告必须附上封面)

(1)课程名称:要求与实验大纲和实验指导书中的课程名称一致。

(2)实验序号:指该课程的第几个实验。

(3)实验项目:要求与实验大纲和实验指导书中的实验项目一致。

(4)实验地点:填写完成该实验项目所在的实验室名称。

(5)实验学时:要求与实验大纲和实验指导书中完成该实验项目所需学时一致。

(6)实验类型:是指演示性、操作性、验证性、综合性、设计性。

演示性:教师操作,学生观察,验证理论、说明原理和方法。

操作性:学生按要求动手拆装、调试实验装置或上机操作,掌握其基本原理和方法。

验证性:按实验指导书(教材)要求,由学生通过操作验证所学理论,加深对理论、知识的理解,掌握基本实验知识、方法、技能、数据处理等。

综合性:实验内容涉及本课程的综合知识或相关课程的知识,运用多的知识、多种方法,按要求或自拟实验方案进行实验。主要培养学生综合运用所学知识、实验方法和实验技能,以培养其分析、解决问题的能力。

设计性:给定实验目的、要求和实验条件,学生自己设计实验方案并加以实现的实验。学生独立完成从查阅资料、拟定实验方案、实验方法和步骤(或系统分析和设计)、选择仪器设备(或自行设计缺制作)进行实验并完成实验全过程,形成实验报告,培养学生自主实验的能力。

(1)批改:全部批改及更正错误。

(2)评分:按百分制评分,不能评分为“优、良、中、差”或“A、B、C”。

(3)签名及批改日期:任课教师必须在每份学生实验报告中签名和写上批改日期。

(4)成绩:填写学生实验成绩表,实验成绩作为考试成绩评定的依据。

(4)评语:任课教师批改学生实验报告时,应给出简明扼要的评语。

成绩:

指导教师签名:批阅日期:

一、实验目的及要求

1.加深对ICMP协议的理解

2.熟悉原始套接字的使用方法

3.掌握PING程序的实现流程

二、实验原理与内容

1、一种网络诊断工具

2、发送ICMP回送请求报文

3、接收ICMP回送应答报文

4、IP报文格式

5、WinSock原始套接字的使用方法与API函数

W insock原始套接字编程过程中,服务器端/客户端的编程都按照以下步骤:初始化套接字(WSAStartup)

创建套接字(socket或WSASocket)

向服务器通信(sendto/recvfrom)

关闭套接字(closesocket)

结束使用套接字(WSACleanup)

6、三种WinSock地址结构

①用的Winsock地址结构sockaddr ,针对各种通信域的套接字,存储它们的地址信息。

②专门针对Internet 通信域的Winsock地址结构sockaddr_in

③专用于存储IP地址的结构in_addr

三、实验软硬件环境

运行Windows XP/ Windows Server 2003/Windows 7操作系统的PC一台

Visual C++6.0/ Visual Studio 2005/Visual Studio 2010开发环境

4.编写各个函数代码块

5.编译,运行

实验代码如下:(温馨提醒:意要在.cpp文件的前后添加#include"stdafx.h" (是预编译处理器把stdafx.h文件中的内容加载到程序中来。))

#include"stdafx.h"

#pragma pack(4)

#pragma comment( lib, "ws2_32.lib" )

#include"winsock2.h"

//#include "stdafx.h"//增加的头文

#include"stdlib.h"

#include"stdio.h"

#define ICMP_ECHO 8 // ICMP ECHO 请求报文类型

#define ICMP_ECHOREPLY 0 // ICMP ECHO 响应报文类型

#define ICMP_MIN 8 // 最小ICMP报文大小为8 bytes (只有ICMP首部)

#define ICMP_PACKET_SIZE 32 //ICMP报文数据大小

#define ICMP_PACKET_NUMBER 4 //发送ICMP报文的个数

#define MAX_PACKET 1024 // 最大ICMP报文数据长度

#define ICMP_TIMEOUT1000 //ICMP超时时间

#define xmalloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s)) #define xfree(p) HeapFree (GetProcessHeap(),0,(p))

/* 定义结构体:IP 首部*/

typedef struct iphdr {

unsigned int h_len : 4; // 首部长度

unsigned int version : 4; // IP版本

unsigned char tos; // 服务类型

unsigned short total_len; // 报文总长度

unsigned short ident; // IP报文标识符

unsigned short frag_and_flags; // 分片标记和片偏移

unsigned char ttl; // 生存时间

unsigned char proto; // 报文数据的协议类型

unsigned short checksum; // 首部检验和

unsigned int sourceIP; // 源IP

unsigned int destIP; // 目的IP

}IpHeader;

/* 定义结构体:ICMP 首部*/

typedef struct icmphdr {

BYTE i_type; // ICMP报文类型

BYTE i_code; // 代码

USHORT i_cksum; // 报文校验和

USHORT i_id; // ICMP报文标识符

USHORT i_seq; // 报文序号

ULONG timestamp; //时间戳,不是ICMP报文首部的标准组成部分}IcmpHeader;

计算机网络实验之Ping程序的设计与实现

计算机网络实验之Ping程序的设计与 实现

课程名称计算机网络 实验序号实验五 实验项目 Ping程序的设计与实现 03月 25 日

实验报告要求 1、实验报告封面填表说明(每份实验报告必须附上封面) (1)课程名称:要求与实验大纲和实验指导书中的课程名称一致。 (2)实验序号:指该课程的第几个实验。 (3)实验项目:要求与实验大纲和实验指导书中的实验项目一致。 (4)实验地点:填写完成该实验项目所在的实验室名称。 (5)实验学时:要求与实验大纲和实验指导书中完成该实验项目所需学时一致。 (6)实验类型:是指演示性、操作性、验证性、综合性、设计性。 演示性:教师操作,学生观察,验证理论、说明原理和方法。 操作性:学生按要求动手拆装、调试实验装置或上机操作,掌握其基本原理和方法。 验证性:按实验指导书(教材)要求,由学生经过操作验证所学理论,加深对理论、知识的理解,掌握基本实验知识、方法、技能、数据处理等。 综合性:实验内容涉及本课程的综合知识或相关课程的知识,运用多的知识、多种方法,按要求或自拟实验方案进行实验。主要培养学生综合运用所学知识、实验方法和实验技能,以培养其分析、解决问题的

设计性:给定实验目的、要求和实验条件,学生自己设计实验方案并加以实现的实验。学生独立完成从查阅资料、拟定实验方案、实验方法和步骤(或系统分析和设计)、选择仪器设备(或自行设计缺制作)进行实验并完成实验全过程,形成实验报告,培养学生自主实验的能力。 2、实验报告的格式 3、教师批改学生实验报告要求 (1)批改:全部批改及更正错误。 (2)评分:按百分制评分,不能评分为“优、良、中、差”或“A、B、C”。 (3)签名及批改日期:任课教师必须在每份学生实验报告中签名和写上批改日期。 (4)成绩:填写学生实验成绩表,实验成绩作为考试成绩评定的依据。 (4)评语:任课教师批改学生实验报告时,应给出简明扼要的评

简单程序设计

简单程序设计 1.两位BCD编码转换为二进制码 BCD编码,用于表示十进制数,十进制各位上的数字0~9分别用对应的四位二进制数表示,两位BCD编码即8位二进制数,一个字节。 将BCD编码转换为二进制,实际上就是计算其表示的数据大小,而BCD编码为十进制,因此应按照十进制进行计算:B=D0*100+D1*101+D2*102+…+D n*10n 由于还没有学习其他程序结构,因此这里假设对两位BCD 编码进行转换,即只考虑D0和D1 ,如果对多位BCD编码进行转换,可以使用后续学到的循环结构。 参考程序: DATA SEGMENT BCDD DB 56H BD DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, BCDD MOV AH, AL AND AL, 0FH AND AH, 0F0H MOV CL, 4 SHR AH, CL SHL AH, 1 MOV DL, AH 图4 两位BCD码转换为二进制数 SHL AH, 1 SHL AH, 1

ADD AH, AL MOV BD, AH MOV AH, 4CH ;在DOS环境或者命令行窗口运行汇编程序时,程序的最 INT 21H ;后需要进行DOS功能调用4CH,以返回操作系统。 CODE ENDS END START 2.简单的运算程序 以下举例说明如何编程实现简单的算术运算,因为较复杂的算术运算往往需要使用循环和分支程序结构。 编写程序实现((B1+B2-B3)/B4*B5)2—〉W,Bi为字节型变量,W为字变量,不考虑溢出问题。 参考程序如下: DATA SEGMENT B1 DB 12H B2 DB 0CH B3 DB 1FH B4 DB 03H B5 DB 4AH W DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, B1 ADD AL, B2 SUB AL, B3 XOR AH,AH DIV B4 MUL B5 MUL AX MOV W, AX

Ping程序的设计与实现

Ping程序的设计与实现 Ping的基本实现原理请参考以下文档: https://www.wendangku.net/doc/2a3836635.html,/view/e0769dc69ec3d5bbfd0a7476.html;https://www.wendangku.net/doc/2a3836635.html,/view/9ee3583143323968011c9213.html;初学者读代码请先百度: socket(),setsockopt(),HeapAlloc()等函数。 使用说明: 1、找到\Debug\ping.exe (即生成的可执行文件的目录);(Ping是工程名) 2、开始->运行->cmd进入命令提示符模式;

3、cd \Debug\ping.exe;然后输入参数即可。 Ping程序源码(无注释)//Ping.h #define WIN32_LEAN_AND_MEAN #include #include #include #include #include typedef struct tagIP_HEADER{ unsigned int h_len:4; unsigned int ver:4; unsigned char tos; unsigned short total_len; unsigned short ident; unsigned short frag_floags; unsigned char ttl; unsigned char protocol;

unsigned short checksum; unsigned int sourceip; unsigned int destip; }IP_HEADER,*PIP_HEADER; typedef struct tagIP_OPT_HEADER{ unsigned char code; unsigned char len; unsigned char ptr; unsigned long addr[9]; }IP_OPT_HEADER,*PIP_OPT_HEADER; typedef struct tagICMP_HEADER{ unsigned char type; unsigned char code; unsigned short checksum; unsigned short id; unsigned short seq; unsigned long timestamp; }ICMP_HEADER,*PICMP_HEADER; #define DEF_PACKET_SIZE 32 #define MAX_PACKET_SIZE 1024 #define ICMP_ECHO 8 #define ICMP_ECHOREPLY 0 #define IP_RECORD_ROUTER 7 void usageinfo(char *progname); void FillIcmpData(char *icmp_data,int size); USHORT CheckSum(USHORT *buf,int size); void DecodeIcmpHeader(char *buf,int ret,LPSOCKADDR_IN lpSin); void DecodeIpHeader(char *buf,int bytes); //Ping.cpp #include #include"Ping.h" #pragma comment(lib,"ws2_32")

实验一 熟悉常用的网络命令实验报告

实验一熟悉常用的网络命令 序号:姓名:李哲旭学号:20141120117成绩指导教师: 1.实验目的: 学会使用常用ping ,ipconfig, nslookup, arp ,tracert等常用网络测试命令检测网络连通、了解网络的配置状态,跟踪路由诊断域名系统等相关网络问题。 2实验环境: (1)运行windows 8.1操作系统的PC一台 (2)每台PC机具有一块网卡,通过双绞线与局域网网相连。 (3)局域网能连接Internet 3.实验步骤: 参见实验指导手册内容。 4.实验分析,回答下列问题 (1)查看本机TCP/IP协议配置,看你的计算机是通过自动获取IP还是通过手动方式设置IP地址的?写出你判断的理由。 自动获取IP地址 (2)如果是通过手动方式获取IP地址,可以直接读出IP地址,子网掩码,默认网关,首选DNS服务器地址,备用DNS服务器地址。填写下表。 如果是采用动态获取IP地址,如何获取完整的TCP/IP配置信息,请写出解决步骤。并填写下表。 点击运行,输入cmd,使用ipconfig/all命令 IP地址113.55.91.78

子网络掩码255.255.255.255 默认网关fe80::21e:73ff:fe9a:c820%1450. 0.0.0 首选DNS服务器地址202.203.208.33 备用DNS服务器地址222.203.208.33 (3)显示完整的TCP/IP的配置信息。 (4)在获取本机IP地址之后,在MS-DOS方式下运行下列Ping命令,填写实验运行结果(可附截图)。 (a)ping本机IP地址 (b)ping 本机IP地址–t

第三章 最简单的c程序设计

第三章最简单的c程序设计 实践教学: 属性:实训 时间:学时。 实践教学内容: 实验目的:熟悉运算符、表达式,掌握标准输入输出函数的适用方法和顺序结构程序设计的一般方法。 实验内容和步骤: 1.编程,要求从键盘按规定的格式输入时间(时:分:秒), 并将输入的时间在屏幕上显示出来,存入ex3_1.c文件, 并编译、调试、运行。 #include main() { int a ,b,c; scanf("%d%d%d",&a,&b,&c); if (a>24) printf("请重新输入"); if (b>60) printf("请重新输入"); if (c>60) printf("请重新输入"); printf("%d:%d:%d\n",a,b,c); return 0; }

2.编程,要求从键盘输入数据,使整型变量a=10,b=8;字符 型c1=’A’,c2=’a’;实型变量x=3.1,y=64.54。并按规定格式输出变量的值。格式如下。存入ex3-2.c文件,并编译、调试、运行。 __int___a=__10___b=____8 char_c1=__A,___c2=____a float___x=_3.1,___y=64.54 #include main() { int a=10,b=8; char c1='A',c2='a'; float x=3.1,y=64.54; return 0; } 3.c语言编程求ax2+bx+c=0并分析其结果。存入ex3_2.c文 件,并编译、调试、运行。 #include

Ping程序的实现

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2011 ~ 2012 学年第 1 学期课程名称计算机网络原理指导教师李建设职称副教授 学生姓名专业班级学号 题目 成绩起止日期2011 年11 月24 日~2011 年12 月4 日 目录清单

课程设计任务书 2010 —2011学年第 2 学期 学院(系、部) 计算机与通信学院 专业 软件工程 班级 091-3 课程名称: 计算机网络原理 学生姓名: 自己填写 设计题目: Ping 程序的实现 指导教师: 李建设 完成期限:自 2011 年 11 月 24 日至 2011 年 12 月 4 日 共 2 周 内 容 及 任 务 一、设计内容 实现ping 功能。程序能实现基本的ping 操作,发送ICMP 回显请求报文,接收显应答报文。 1. 能记录路由。程序提供了“-r ”选项,用以记录从源主机到目的主机的路由。 2. 能输出指定条数的记录。程序提供了“-n ”选项,用以输出指定条数的记录。 3. 能按照指定大小输出每条记录。程序提供了“datasize ”选项,用以指定输出的数据报的大小。 4. 能输出用户帮助。程序提供了用户帮助,显示程序提供的选项以及选项格式等。 5. 以图形显示输出结果。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1. 按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2. 课程设计所使用的编程语言任选,但建议使用C 或C++; 3. 绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期 工作内容 2011-11-24~2011-11-27 选题 2011-11-28~2011-11-29 系统分析和设计; 2011-11-30~2011-12-3 熟悉软件开发工具、编码系统、系统测试 2011-12-04~2011-12-05 撰写并提交课程设计说明书 (含电子文档)、源程序等。 主 要 参 考 资 料 [1] (美) Larry Peterson 著,薛静锋等译. 《计算机网络:系统方法》 (第4版) ,机械工业出版社,2009 [2] (荷) Andrew S.Tanenbaum 著,潘爱民译. 《计算机网络》(第4版),清华大学出版社, 2004 [3] 谢希仁著.《计算机网络》((第5版) ,电子工业出版社, 2008.1 [4] 吴功宜等著.《计算机网络课程设计》,机械工业出版社,2005 指导教师(签字): 年 月 日 系(教研室)主任(签字): 年 月 日

试验项目试验一最简单的C程序设计

试验项目试验一最简单的C程序设计

实验项目:实验一最简单的C程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 3.掌握顺序结构程序设计的基本思路。 二、实验条件 Pc和vc++编程环境 三、实验内容 1.熟悉编程环境。 2.输入并运行一个C程序 3.掌握各种格式转换符的正确使用方法。 4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar函数和printf函数输出这两个字符。 四、实验步骤 编写程序,输入数据,观察结果。

五、实验结果 观察结果和预期是否一致。 实验项目:实验二选择结构程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表示式。 3.熟练掌握if语句和switch语句 二、实验条件 Pc和vc++编程环境 三、实验内容

1.有一函数: ?????≥-<≤-<=)10x (113x ) 10x 1(12x )1x (x y 用scanf 函数输入x 的值,求y 值。 运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。 2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。 3.输入4个整数,要求按由小到大顺序输出。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验三 循环结构程序设计

PING命令应用(入门必看)

一、Ping 的基础知识 ping 命令相信大家已经再熟悉不过了,但是能把ping 的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping 发挥最大的功能,我也只不过经常用ping 这个工具,也总结了一些小经验,现在和大家分享一下。Ping 是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中Ping 是一个十分好用的TCP/IP工具。它主要的功能是用来检测网络的连通情况和分析网络速度。Ping有好的善的一面也有恶的一面。先说一下善的一面吧。 上面已经说过Ping 的用途就是用来检测网络的连同情况和分析网络速度,但它是通过什么来显示连通呢?这首先要了解Ping的一些参数和返回信息。 二、Ping命令详解 首先需要打开DOS命令界面,通过点击开始菜单中的“运行”选项,输入“cmd”回车即可打开(如下图)。 按确认键后 我们输入ping/?例出ping以下是PING的一些参数(如图):

下面我和大家讲解一下,每个参数意思和使用。 ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list -t Ping指定的计算机直到中断。 -a 将地址解析为计算机名。 -n count 发送count指定的ECHO数据包数。默认值为4。 -l length 发送包含由length指定的数据量的ECHO数据包。默认为32字节;最大值是65,527。 -f 在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。 -i ttl 将"生存时间"字段设置为ttl指定的值。 -v tos 将"服务类型"字段设置为tos指定的值。 -r count 在"记录路由"字段中记录传出和返回数据包的路由。count可以指定最少1台,最多9台计算机。 -s count 指定count指定的跃点数的时间戳。 -j computer-list 利用computer-list指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP允许的最大数量为9。 -k computer-list 利用computer-list指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP允许的最大数量为9。 -w timeout 指定超时间隔,单位为毫秒。 destination-list 指定要ping的远程计算机。 三、如何利用PING命令检查网络连通状态 连通问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备等造成的故障。首先我们讲一下使用Ping命令的步骤。使用Ping 检查连通性有五个步骤: 1.使用ipconfig/all观察本地网络设置是否正确,如图;

实验二TCP_IP实用程序的使用实验报告

《TCP/IP实用程序的使用》 实 验 报 告 计科121 12171105景元合 2015.5.19

TCP/IP实用程序的使用 一、实验目的 1.使用Ping实用程序来测试计算机上的TCP/IP配置及测试本计算机与计算机的连接性能,确保可以在网络上通信; 2.使用Hostname实用程序来标识计算机的名称; 3.使用Ipconfig实用程序来验证计算机上的TCP/IP配置选项,包括MAC地址、IP地址、子网掩码和缺省网关等多项配置信息; 4.考察操作系统为Windows2000的计算机的TCP/IP配置。 二、实验设备及仪器 联网计算机一台 三、TCP/IP实用程序原理 TCP/IP协议组包括许多实用程序,它们允许用户访问网络上的信息。Microsoft的TCP/IP协议组提供了基本的TCP/IP实用程序,允许运行windows2000的计算机访问网络上广泛的信息。Windows2000包括三种类型的基于TCP/IP的实用程序:诊断工具、连接工具和基于服务器的软件。诊断实用程序包括Arp,Hostname,Ipcogfig,Ping,Tracfert等。 1. 诊断实用程序:诊断实用程序允许用户检测和解决网络中的问题。一些通用的诊断实用程序包括: Arp:该实用程序显示和修改地址解析协议(ARP)缓存。 Hostname:该实用程序显示计算机的名称。 Ipconfig:该实用程序显示和更新当前TCP/IP配置,包括IP地址。 Ping:该实用程序验证配置、测试两台计算机之间的IP连接。Ping从源计算机上发送ICMP 请求,目的计算机用一个ICMP回答作为回应。 Tracert:该实用程序跟踪数据包到达目的地的路径。 2. 通用实用程序示例:Hostname、Ipconfig和Ping是三个通用的TCP/IP实用程序。因为经常使用它们,因此应掌握它们的使用。 Hostname:使用该实用程序的语法为hostname。要访问该实用程序,在命令提示符下键入hostname,系统将显示出你的计算机的名称。 Ipconfig:使用该实用程序来验证而不是设置主机上的TCP/IP配置选项,包括IP地址、子网掩码和缺少网关。要开始Ipconfig实用程序,在命令行提示下键入Ipconfig。此时显示三个主要的配置参数的值。但使用这个实用程序,不能确定分配该IP地址使用的是静态的还是动态的方法。 Ipconfig/all:通过指定开关all,可以使用Ipconfig实用程序来获得更多的详细信息。要使用带有这个开关的Ipconfig实用程序,在命令行提示下键入Ipconfig/all。屏幕显示所有关于配置选项的信息。此时可以确定是否启用了DHCP。如果DHCP启用参数为是,并显示了DHCP 服务器的IP地址,则隐含该IP地址是使用DHCP获得的。DHCP服务器租借一条IP地址给一台客户机一段时间。标签Lease Obtained和Lease Expires分别显示何时获得租借及何时到期的信息。 Ping:测试连接的语法是Ping。要用IP地址或计算机名称来测试连接,键入Ping[IP地址或计算机名称]。要测试你的计算机的TCP/IP配置,可以使用本地回路。本地回路是IP地址为127.0.0.1。键Ping 127.0.0.1可使用本地回路测试系统配置。 四、实验任务、实验步骤及思考题 1. 使用Ping实用程序来测试计算机上的TCP/IP配置 登陆到Windows2000中。 单击开始,然后将鼠标指针移到程序上,再移到附件上,然后单击命令提示符。

课程设计---Ping程序设计与实现

课程设计 课程名称____计算机网络_____ 题目名称_Ping程序设计与实现 学生学院____计算机学院____ 专业班级____08计科4班___ 学号_______ 2011年 1 月8 日

一、课程设计目的 本次课程设计的目的旨在通过网络相关程序的编写,使我们能深入理解TCP/IP协议机制,以及初步掌握基于Winsocket的网络编程技术。同时巩固相关的理论知识,为以后程序开发打下良好而又坚实的基础。 二、知识准备 1、ICMP协议 互联网控制信息协议(Internet CONTROL Message Protocol),用于错误报告和调试。该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。 常见ICMP报文有响应请求报文,目标不可到达、源抑制和超时报文,此外还有时间戳报文。2、Ping工作原理 Ping的原理就是首先建立通道,然后发送包,对方接受后返回信息,这个包至少包括以下内容:发送的时候,包的内容包括对方的ip地址和自己的地址,还有序列数;回送的时候包括双方地址,还有时间等,主要是接受方在都是在操作系统内核里做好的,时刻在监听。Ping程序生成一个icmp“回送请求”,将其发送给目的主机。通过检测是否可以收到目标主机的应答,便可以知道网络的连通性。 (3) Tracert 工作原理 透过向目标发送不同 IP 生存时间 (TTL) 值的ICMP回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP已超时”的消息发回源系统。Tracert 先发送 TTL 为 1 的响应数据包,并在随后的每次发送过程将 TTL 递增1,直到目标响应或 TTL 达到最大值,从而确定路由。透过检查中间路由器发回的“ICMP已超时”的消息确定路由。 三、界面设计及数据结构的说明 1 、MFC界面设计建立流程 步骤一:打开VC6.0,点击文件选项,在project选项卡中选择MFC Appwizard(exe),项目名称为ping。

程序设计基础(人民邮电出版社)答案第3章 最简单的C程序设计

一、选择题 1.C语言中,执行下列语句时,要使x,y的值均为1.25,正确的输入是___C__。scanf(“x=%f,y=%f”,&x,&y); A. 1.25,1.25 B. 1.25 1.25 C. x=1.25,y=1.25 D. x=1.25 y=1.25c 2.已知i,j,k为int型变量,若从键盘输入1,2,3↙,使i的值为1,j的值为2,k的值为3,则以下选项中正确的输入语句是___C_。 A.scanf(“%2d%2d%2d”,&i,&j,&k) ; B. scanf(“%d%d%d”,&i,&j,&k) ; C. scanf(“%d,%d,%d”,&i,&j,&k) ; D. scanf(“i=%d,j=%d,k=%d”,&i,&j,&k) ; 3. 以下程序段的执行结果是_C____。 int a=1234 ; printf(“%2d\n”,a); A. 12 B. 34 C. 1234 D.提示出错,无结果 4.如果x为float类型变量,则以下语句输出为____D _。 x=213.82631; printf(“%4.2f\n”,x); A. 213.82 B.宽度不够,不能输出 C. 213.82631 D.213.83 5.执行下列程序时输入:123 456 789↙,输出结果是___D__。 #include void main() { char s[10]; int c,i; scanf(“%c”,&c); scanf(“%d”,&i); scanf(“%s”,s); printf(“%c,%d,%s\n”,c,i,s); } A. 123,456,789 B. 1,456,789 C. 1,23,456,789 D.1,23,456 二、填空题 1.在printf()函数中以小数形式输出单精度、双精度实数,应采用格式符__%f___。2.在scanf()函数中要输入一个字符串,应采用格式符__%s__。

计算机网络实验之Ping程序的设计和实现

课程名称计算机网络 实验序号实验五 实验项目Ping程序的设计与实现

2017年03月25 日 实验报告要求 1、实验报告封面填表说明(每份实验报告必须附上封面) (1)课程名称:要求与实验大纲和实验指导书中的课程名称一致。 (2)实验序号:指该课程的第几个实验。 (3)实验项目:要求与实验大纲和实验指导书中的实验项目一致。 (4)实验地点:填写完成该实验项目所在的实验室名称。 (5)实验学时:要求与实验大纲和实验指导书中完成该实验项目所需学时一致。 (6)实验类型:是指演示性、操作性、验证性、综合性、设计性。 演示性:教师操作,学生观察,验证理论、说明原理和方法。 操作性:学生按要求动手拆装、调试实验装置或上机操作,掌握其基本原理和方法。 验证性:按实验指导书(教材)要求,由学生通过操作验证所学理论,加深对理论、知识的理解,掌握基本实验知识、方法、技能、数据处理等。 综合性:实验内容涉及本课程的综合知识或相关课程的知识,运用多的知识、多种方法,按要求或自拟实验方案进行实验。主要培养学生综合运用所学知识、实验方法和实验技能,以培养其分析、解决问题的能力。 设计性:给定实验目的、要求和实验条件,学生自己设计实验方案并加以实现的实验。学生独立完成从查阅资料、拟定实验方案、实验方法和步骤(或系统分析和设计)、选择仪器设备(或自行设计缺制作)进行实验并完成实验全过程,形成实验报告,培养学生自主实验的能力。 3、教师批改学生实验报告要求 (1)批改:全部批改及更正错误。 (2)评分:按百分制评分,不能评分为“优、良、中、差”或“A、B、C”。 (3)签名及批改日期:任课教师必须在每份学生实验报告中签名和写上批改日期。 (4)成绩:填写学生实验成绩表,实验成绩作为考试成绩评定的依据。

计算机网络课程设计实验报告

计算机网络课程设计报告 姓名:王齐 学号:1105010404 班级:计算机四班 指导老师:张会福 湖南科技大学计算机科学与工程学院 2014年02月

实验一: 一、设计题目 网络聊天程序的设计与实现 二、实验目的 1、加深对计算机网络通信系统工作原理的理解 通过编写计算机程序实现、模拟网络的某些功能,使自己理解并掌握计算机网络基本工作原理及过程。 2、提高网络编程和应用的能力 提高实际编程能力和灵活运用所学知识解决问题的能力。培养调查研究、查阅技术文献、资料、手册及编写技术文档的能力,理论运用于实践的能力。 三、课程设计要求 1、仔细分析每一个实验的具体内容、步骤和要求,按设计要求完成任务。 2、程序设计需要完成的程序流程图、说明文档和源程序清单。 3、提交课程设报告(包含课程设计名称、课程设计题目、课程设计内容、课程设计步骤、调试过程、课程设计结果以及结果分析、心得体会)、程序源文件、可执行文件。 四、程序原理 在计算机通信系统中,有两种通信方式:面向连接的TCP和面向报文的UDP。 TCP:传输控制协议。TCP提供可靠交付的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复、并且按序到达。所以服务器和客户端的通讯使用TCP来完成。确保服务器作为“中转站”能够得到、存储、转发正确的客户信息。 UDP:用户数据报协议。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。因为客户端之间的通讯(聊天)对数据正确性的要求不是太高,偶尔出错也不会有太大的影响。 本课程设计采用TCP方式来实现网络聊天程序。 五、课程设计步骤 1、TCP网络聊天程序 TCP传输控制提供可靠的,有保证的通信质量,是面向连接的通信。因此,在通信之前,通信双方就得采用建立连接。TCP通信采取C/S(客户机/服务器)模式。需要分别编写客户端程序和服务器端程序。 1)服务器端程序编写步骤: a)加载套接字库,创建套接字(WSAStartup()/socket()); b)绑定套接字到一个IP地址和一个端口上(bind());

最简单的程序设计

《程序设计语言 C1》随机作业题 做作业时间:2013-4-23 8:00:00至2013-5-23 8:00:00 1、以下合法的赋值语句是(3分) B A、B、C、D、 A、x=y=100 B、d--; C、x+y; D、c=int(a+b); 2、以下程序的输出结果是 main() { int a=3; printf("%d\n",(a+=a-=a*a));} } (3分) D A、B、C、D、 A、-6 B、12 C、0 D、-12 3、请选出以下语句的输出结果____ printf("%d\n",strlen("\t\ 065\xff\n")) (3分) B A、B、C、D、

A、5 B、4 C、8 D、输出项不合法,无正常输出 4、下面程序的输出是______ main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } (3分) D A、B、C、D、 A、k=11,k=12,k=13 B、k=11,k=13,k=13 C、k=11,k=013,k=oXb D、k=11,k=13,k=b 5、若有以下定义和语句: int u=010,v=0x10,w=10; printf(″%d,%d,%d\n″,u,v,w); 则输出结果是: (3分) A A、B、C、D、 A、8,16,10 B、10,10,10 C、8,8,10 D、8,10,10 6、以下程序的输出结果是 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k); }(3分) D A、B、C、D、 A、17,021,0x11 B、17,17,17 C、17,0x11,021 D、17,21,11 7、下面程序的输出是____

各种命令ping的实验报告

《计算机网络技术》实验报告 实验题目:各种命令的使用 一、实验材料: PC3台;集线器1台;双绞线直通线3条; 二、实验项目: 熟练ARP命令,ping命令,tracert命令,hostname命令,icponfig命令,icpnetstat命令,netstat 命令,nbtstat命令的使用 三、实验步骤: 任务1:arp命令的使用 步骤1:显示高速Cache中的ARP表。执行命令“arp –a”,结果如图1所示。 步骤2:添加ARP动态表项。使用ping命令向一个站点发送消息,来将这个站点IP地址与MAC地址的映射关系加入到ARP表中。执行命令“ping 200.200.200.26”,然后再次使用命令“arp –a”,结果如图2所示。

步骤3:添加ARP静态表项。执行命令“arp –s 200.200.200.25 00-21-97-Cd-64-58”,再次使用命令“arp –A”,结果如图

步骤4:删除ARP表项。执行命令“arp –d 192.168.101.12”,再次使用命令“arp –a”,结果如图 任务2:ping命令的使用 步骤1:测试TCP/IP是否安装正确。执行命令“ping 127.0.0.1”,结果如图5所示。

步骤二:测试IP地址是否配置正确 输入命令:ping 200.200.200.25图所示 步骤三:测试PCA和PCB之间的连通性 输入命令:ping200.200.200.26,结果如图

步骤四:连续发送ping测试报文 在pca上执行命令ping200.200.200.26 –t 按Ctrl+C结束ping命令。结果如图

实验报告ping

计算机与信息技术学院设计性实验报告 (1)了解Linux下Socket通信的原理,了解ping程序的工作原理。 (2)了解基于原始套接字的编程方法;理解并掌握IP报头格式和ICMP报头格式。 (3)掌握常见协议,如IP、TCP报头的结构和各字段的功能; 二、实验仪器或设备 一台装有Linux操作系统的计算机。 三.总体设计(设计原理、设计方案及流程等) (1)设计原理: ping程序是用来探测主机到主机之间是否可通信,如果不能到某台主机,表明不能和这台主机建立连接。使用的是ICMP协议,它发送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。因此,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。 ICMP数据报的数据发送前要经过两级封装:首先是添加ICMP报头形成ICMP IP报头形成IP数据报,如下图: ICMP数据报的格式如下: (2)、设计方案: 1)PING利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为

0的ICMP发请求,收到请求的主机则用类型码为8的ICMP回应。PING程序来计算间隔时间,并计算有多少个包被送达。 2)实验中用到的结构体: Struct timeval{ Int tv_sec; //指定秒数 Int tv_usec; //微秒数 }; Struct sockaddr_in{ //用来保存套接字地址信息 Short int sin_family; Unsigned short int sin_port; Struct in_addr sin_adr; Unsigned char sin_zero[8]; }; Struct sockaddr{ //功能同上,用来保存套接字地址信息 Unsigned short sa_family; Char sa_data[14]; }; Struct in_addr //定义32位IP地址 { _u32 s_addr; }; 3)实验中用到的重要函数: a)设置套接字的属性 setsockopt(int s,int level,int optname,void *optval,socklen_t *optlen) 其中参数s为一个套接字,参数level是进行套接字选项操作的层次,可以取通用套接字,IP层套接字,TCP层套接字,参数optname是套接字选项的名称。参数optval是待设置的套接字选项的值,参数optlen是该选项的长度。 b)发送套接字函数 int sendto(int s,const void * buf,int len,unsigned flags,const struct sockaddr *to ,int tolen) 其中:s是传送数据的socket; Buf是缓冲器指针,用来存放要传送的信息; Len是Buf的大小; Flags一般为0; To为接收端网络地址; Tolen为接收端网络地址的长度; c)接收套接字函数 int recvfrom(int s,const void * buf,int len,unsigned flags,const struct sockaddr * from ,int fromlen) 参数意义同上 d)地址转换函数 char * inet_ntoa(struct in_addr in) 将函数值为in的网络字节顺序形式的二进制IP地址转换成以“.”分隔的字符串形式,执行成功返回结果字符串指针,参数无效返回NULL

ping程序的实现

import https://www.wendangku.net/doc/2a3836635.html,.*;//java的网络包 import java.io.*;//java的io包 public class Ping {//定义类Ping private int timeOut;//定义私有整型变量timeout private Timer t;//声明一个Timer类的对象t,但未分配内存 public Ping(int timeOut){//构造方法进行初始化 this.timeOut=timeOut; t=new Timer();//给对象t分配内存。 } public String pingRang(String from,String to){ //确定ping地址的范围 int [] ipFrom=stringArToIntAr(from.split("\\."));//整形数组变量用来接收起始ip地址 int [] ipTo=stringArToIntAr(to.split("\\."));//接收终止的ip地址 String output="";//定义字符串型变量output用来接收结果 ipTo[3]=ipTo[3]+1;//ipTo 数组里的地址的第四个元素加1 while(!matchIP(ipFrom,ipTo)){// output+="Pinging:"+printIP(ipFrom);// output变量用来接收printIP (ipFrom)的返回结果 output+="("+ping(printIP(ipFrom))+") Response Time:"+responseTime()+"\n";//再接收ping(printIP(ipFrom))的结果 increaseIPrange(ipFrom,ipFrom.length-1);//调用increaseIPrange(),传入的参数为ipFrom起始地址、ipFrom数组长度-1,即为3 } return output; } private void increaseIPrange(int[] ipFrom,int curBit){//逐渐增加IP 地址的范围,curBit表示ip地址的最后一位 ipFrom[curBit]+=1;//ipFrom[3],即表示最后一位每次加1 if (ipFrom[curBit]>255){ //如果最后一位大于255 ipFrom[curBit]=0; //则重新置为0 if(curBit>0) //如果大于0 increaseIPrange(ipFrom,curBit-1);//则再次调用本方法,将增加位置改为ip地址的第三位 } } private boolean matchIP(int[] from,int[] to){//判断起始ip地址和终止ip地址是否在同一个网段中 for(int c=0;c

语言程序设计个简单的经典例子

经典C语言程序设计100例 1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题 22.乒乓球比赛抽签问题 23.打印菱形图案 24.分数数列求和 25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印 28.岁数问题 29.求解正整数位数 30.判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数34.练习函数调用 35.设置文本颜色 36.求100之内的素数37.对10个数进行排序 38.求3*3矩阵对角线元素之和 39.数字插入数组重新排序40. 将一个数组逆序输出 定义静态变量用法42.使用auto 定义变量用法43.使用static 的另一用法 44.使用external的用法 45.使用register定义变量方法 46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3) 49.#if #ifdef和#ifndef的综 合应用 50.#include 的应用练习 51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数从右端开始的 4~7位。 55.学习使用按位取反~ 56.用circle画圆形 57.学用line画直线 58.用rectangle画方形 59.画图综合例子1 60.画图综合例子2 61.打印杨辉三角形 62.学习putpixel画点 63.画椭圆ellipse 64.利用ellipse and rectangle 画图 65.画个最优美的图案 66.输入3个数字按大小顺序输 出 67.输入数组交换元素重新输出 68.多个整数后移位置问题 69.圆圈报数问题 70.计算一个字符串长度 71.编写输入/输出函数 72.创建链表 73.反向输出链表 74.连接两个链表 75.算一道简单题目 76.调用函数求 1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人 79.字符串排序 80.海滩猴子分桃 81.已知公式条件求数字 82.八进制转换为十进制 83.求0-7所能组成的奇数个数 84.由两个素数之和表示的偶数 85.判断一个素数能被几个9整 除 86.两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出 该值个数的* 89.数据加密 90.专升本一题 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏 95.家庭财务管理小程序 96.计算字符串中子串出现的次 数 97.输入字符并保存到磁盘98. 字符串转换成大写字母并输出 保存 99.文件操作应用1 100.文件操作应用2 -------------------------------------------------------------------------------- c语言经典100题【实用】

相关文档
相关文档 最新文档