ping程序的设计与实现.docx
- 文档编号:11234890
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:16
- 大小:291.96KB
ping程序的设计与实现.docx
《ping程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《ping程序的设计与实现.docx(16页珍藏版)》请在冰豆网上搜索。
ping程序的设计与实现
计算机网络课程设计任务书
学院
计算机与信息工程
专业
网络工程
课程名称
题目
基于原始套接字实现简单的ping程序
完成期限
自2014年8月25日至2014年8月30日共1周
容
及
任
务
一、项目的目的
通过设计Ping程序,理解Ping程序的实现原理,并初步讲解了c语言网络编程技术。
二、项目任务的主要容和要求
⑴实现类似操作系统自带ping程序的基本功能。
⑵支持-t选项的功能,即如果用户不中止则可以不断的ping下去。
⑶能显示IP报头的部分字段,如TTL等。
三、项目设计(研究)思路
PING的工作原理下,PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。
对网络连通性的测试,探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。
四、具体成果形式和要求
可以实现一个简单的ping程序,并且能显示TTL、支持-t功能。
进
度
安
排
起止日期
工作容
8.25-8.26
查阅资料了解ping程序
8.26-8.27
查阅资料并编写ping程序
8.27-8.30
完善程序并完成实验报告
主
要
参
考
资
料
1.VisualC++网络通信编程实用案例精选(第二版)曹衍龙编著
2.VisualC++网络程序设计实例详解越编著
指导教师
意见
(签字):
×年×月×日
系(教研室)主任意见
(签字):
×年×月×日
计算机网络课程设计说明书
学院名称:
计算机与信息工程
班级名称:
学生:
学号:
题目:
基于原始套间字实现简单的ping程序
指导教师
姓名:
起止日期:
一、选题背景(标题:
四号仿宋加粗,顶格,行间距:
24磅,上下间距:
段前0.5行,段后0.5行)(容:
用小四号仿宋,首行空两格)
通过设计Ping程序,理解Ping程序的实现原理,ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。
ping 使用的是ICMP协议,它发送ICMP回送请求消息给目的主机。
ICMP协议规定:
目的主机必须返回ICMP回送应答消息给源主机。
如果源主机在一定时间收到应答,则认为主机可达。
ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。
因此,保证数据送达的工作应该由其他的模块来完成。
其中一个重要的模块就是ICMP(网络控制报文)协议。
二、方案设计(或概要设计)
Ping程序可分为四个模块,分别是:
初始化(图1-1)、功能控制(图1-2、图1-3、图1-4、)、ping(图1-5)、main测试(图1-6).
1.初始化:
2.功能控制:
图1-2
图1-3
图1-4
3.ping:
图1-5
4.main()函数:
图1-6
三、详细设计
要实现ping程序,需要实现以下步骤:
1.初始化
//定义IP首部格式
typedefstruct_IPHeader
{
u_charVIHL;//版本和首部长度
u_charToS;//服务类型
u_shortTotalLen;//总长度
u_shortID;//标识号
u_shortFrag_Flags;//片偏移量
u_charTTL;//生存时间
u_charProtocol;//协议
u_shortChecksum;//首部校验和
structin_addrSrcIP;//源IP地址
structin_addrDestIP;//目的地址
}IPHDR,*PIPHDR;
//定义ICMP首部格式
typedefstruct_ICMPHeader
{
u_charType;//类型
u_charCode;//代码
u_shortChecksum;//首部校验和
u_shortID;//标识
u_shortSeq;//序列号
charData;//数据
}ICMPHDR,*PICMPHDR;
//定义ICMP回应请求
typedefstruct_ECHOREQUEST
{
ICMPHDRicmpHdr;
DWORDdwTime;
charcData[REQ_DATASIZE];
}ECHOREQUEST,*PECHOREQUEST;
//定义ICMP回应答复
typedefstruct_ECHOREPLY
{
IPHDRipHdr;
ECHOREQUESTechoRequest;
charcFiller[256];
}ECHOREPLY,*PECHOREPLY;
2.功能
//计算校验和函数
u_shortchecksum(u_short*buffer,intlen)
//发送回应请求函数
intSendEchoRequest(SOCKETs,structsockaddr_in*lpstToAddr)
//接收应答回复并进行解析函数
DWORDRecvEchoReply(SOCKETs,LPSOCKADDR_INlpsaFrom,u_char*pTTL)
3.ping程序
//创建原始套接字,ICMP类型实现ping
rawSocket=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);//第二个注释函数socket
if(rawSocket==SOCKET_ERROR)
{
printf("socket()error:
%d\n",WSAGetLastError());
return;
}
四、结果分析(或测试)
1.输入ping主机的命令
2.输入ping-t命令
3.输入外部网主机命令
五、总结
刚刚拿到课题时,我对于ping几乎没什么了解。
在课程设计过程中遇到过很多一开始看似不可克服的难题。
回顾这次课程设计,我感慨颇多。
在这段时间,需要经常从电脑上查询资料,但是这不仅可以帮助我巩固曾经学习过的知识,也让我增长了许多课本上学不到的的知识。
在这个过程中,我独立思考的能力得到了很大地提高,更重要的是我也学到了更多学习的方法,让我受益匪浅。
同时我也明白查阅资料的重要性,在信息多元化的今天,我们不可能掌握所有的知识,但是面对的复杂的情况又要求我们掌握一些自己专业知识之外的容,这时候就需要掌握正确的相关信息,学会求助书籍或者网络等是必不可少的。
查阅资料也使我们做的一切有理可依,而不是凭空想象。
通过这次课程设计我发现了自身存在的许多不足之处,自己感觉理论上已经掌握的东西,却不真正了解它的涵和工作原理,需要经过一番努力才能解决存在的困惑。
这也很大地激发了我以后努力学习的兴趣。
通过这次设计,我懂得了学习的重要性,学会了坚持、耐心和努力,为自己以后的学习和工作做最好的铺垫。
参考文献
1.VisualC++网络通信编程实用案例精选(第二版)曹衍龙编著;
2.VisualC++网络程序设计实例详解越编著
学生签名:
××××填表日期:
×年×月×日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ping 程序 设计 实现