关键词不能为空

当前您在: 主页 > 英语 >

Ping课程设计报告

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-05 22:26
tags:

-

2021年2月5日发(作者:supermarket怎么读)
















课程名称


_


计算机网络













题目名称


_PING


程序设计

















2012



12



25






摘要



为了 深入理解并全面掌握


ping


命令的使用


,


以下结合


ping


程序的原理对其 功能进行了深


入探讨


.


由此可见


Internet


中的某台主机能


ping< /p>


通并不能肯定该主机就能被访问


,



ping


不通


也并不意味着就不能被访问< /p>


,


同时也发现


ping

< br>命令对网络也存在一些安全隐患


.


Window


系统下使用


Win32


进行网络编程实现采用


WSA


通过


I P/ICMP


进行实现


Ping



的主机的功能。



使用

VisualStudio2008


控制台进行建立的工程,


使用


Window Socket API 2


< p>
本。自己定义


IP



IC MP


结构体,建立目的地址和原始套接字,调用


Win32


库函




数进行发 送、接收数据包。采用


ICMP


的时间截请求和回答差错报文。 本设计包


括了具体设计任务,


基本思路及所涉及的相关理论,< /p>


设计流程图,


以及考虑到运


行中会出现的 一些异常处理。




关键词:


Window


网络编程,


Socket



TCP/IP



IC MP


报文



































































目录







































一、



实验目的



.


.................................................. .............


1


二、



实验内容和要求



.

< br>............................................... ..........


2


1



RAW


模式的


SOCKET


编程



..................... ............................


3


2


、具体内容



.


..................................... ........................


3


三、



实验主要仪器设备和材料



.


........................................... ......


3


四、



实验方法及原理



.

< br>............................................... ..........


3


1. ICMP


报文组成结构:



..... ..............................................


3


2. RAW


模式的


SOCKET


编程实现


Ping

的具体原理



..............................


4


2. 1


创建原始套接字



........ ..........................................


4



1



2.2


设置套接字选项



............................................. ......


5


2.3


创建并填充相应协议头



.......................................... ...


5


五、



实验流程图



.


................................................. ............


6


六、



实验具体步骤



.

................................................ ...........


6


1.


定义


IP


结构体


.


.................................... ....................


7


2.


定义


ICMP


结构体



.


......................... .............................


7


3.


定义目的地址



.


.................................. .......................


7


4.


定义原始套接字



.

< br>............................................... ........


7


5.


发送数据包



.


................................................. ..........


7


6.


接收数据包



.


................................................. ..........


7


7.


解析数据包



.


................................................. ..........


8


8.


校验和的实现



.

................................................ .........


8


9.


打印相关信息



.

................................................ .........


8


10.


循环工作实现块



.

< br>............................................... .......


8


11.


信息统计



.


.................................................. ..........


8


12.


相关异常处理



.

................................................ ........


9


13.


相关引用到的头文件及宏



.


........................................... ..


11


七、



实验测试结果以及使用说明



.


.......................................... ...


111


八、



参考文献



.


.................................................. ...........


123


九、



附录:源代码



.

................................................ .........


134
















一、



实验目的



PING

< br>程序是我们使用的比较多的用于测试网络连通性的程序。


PING


程序基



ICMP


,使用


ICMP


的回送请求和回送应答来工作。由计算机网络课程知道,< /p>


ICMP


是基于


IP

的一个协议,


ICMP


包通过


IP


的封装之后传递。



课程设计中选取< /p>


PING


程序的设计,其目的是希望同学们通过

< br>PING


程序的


设计,能初步掌握


TCP/IP


网络协议的基本实现方法,对网络的实现机制有进一

步的认识。



二、



实验内容和要求




2



1


、< /p>


RAW


模式的


SOCKET


编程



PING


程序是面向 用户的应用程序,该程序使用


ICMP


的封装机制,通过


IP


协议来工作。


为了实现直接对

< p>
IP



ICMP


包进行操 作,


实验中使用


RAW


模式的


SOCKET


编程。



熟悉


SOCKET


的编程,包括基本的系统调用如


SOCKET



BIND


等 ;



2


、具体内容



1)



定义数据结构



需要定义好

< p>
IP


数据报、


ICMP


包 等相关的数据结构;



2)



程序实现




WINDOWS


环境下实现


PING


程 序;



3)



程序要求



在命令提示符下输入:









PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ



其中


Χ


Χ


Χ


为目的主机的


IP


地址,不要求支持域名,对是否带有开关变量


也不 做要求。不带开关变量时,要求返回


4


次响应。



返回信息的格式:









REPL


Y FROM ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ











REQUEST TimeOut



(无法


PING

通的情况)




三、



实验主要仪器设备和材料



联网


Win7


操作系统计算机、


VisualSt udio2008



Win32


控制台程序




四、



实验方法及原理



ping

< p>
的原理


:


Ping


命令 的主要作用是检测网络上主机的状态。


要是在几年前,


我们还< /p>


可以下如此断言,如果不能


Ping


通某 台主机,那么也就无法


Telnet


或者


FTP


到这台主机,


但随着互联网的安全意识的增加,


出现了访问控制清单的路由器和防火墙,


由于


ICMP


报文


是在


IP


数据包中被传输的,而到达一台主机不仅取决于


IP


层 是否到达,


还取决于使用何种


协议和端口。譬如金山公司的金山 网镖就可以禁止其他机器


Ping


通这台主机。所以在现在


的情况下,即时


Ping


不通某台机器,但 也有可能


FTP


登陆到这台机器,或者通过

HTTP



浏览这台机器上的


We b


页面





报文组成结构:


在网络中


,


一般用


ICMP


来传递差错报文以及其他应注意的信息


.ICMP

一般被认为是和


IP


协议同一层的协议

,IMCP


报文通常被


IP


层或者 更高层的协议


(



:TCP

< p>
或者


UDP)


使



,ICMP


对于互联网以及其他基于


IP


协议的网络的正常运行起着非常重要的作用


.


有许多重


要的网络程序都是基于


ICMP

协议上的


,


最为著名如


Ping< /p>



Tracert


.





3




< /p>



模式的


SOCKET

编程实现


Ping


的具体原理


< /p>


其中


PING


程序设计使用了

< p>
RAW


模式的


SOCKET


编程,程序使用


ICMP



封装机制 ,通过


IP


协议来工作。




2.1


创建原始套接字



要使用原始套接字,必须经过创建原始套接字、设置套接字选项和创建并填


充 相应协议头这三个步骤,


然后用


send



WSASend


函数将组装好的数据发送出去。

< p>
接收的过程也很相似,只是需要用


recv



WSARecv


函数接收数据。



我们可以用


socket


WSASocket


函数来创建原始套接字,因为原始套接字


能直接控制底层协议,因此只有属于“管理员”组的成员,才有权创建原始套接


字。下 面是用


socket


函数创建原始套接字的代码。



SOCKET sock




Sock



socket (AF_INET, SOCK_RAW, IPPROTO_UDP)




上述创 建原始套接字的代码使用的是


UDP


协议,如果要使用其它的协 议,比



ICMP


< br>IGMP



IP


等协议,只需要 把相应的参数改为


IPPROTO_ICM


< br>IPPROTO_


IGMP



IPPROTO_IP


就可以了。另外,


IPPROTO_UD P



IPPROTO_IP



IPPROTO_RAW


这几个协议标志要求使用套接字选项

< p>
IP_HDRINCL


,而目前只有


Window s


2000



Windows XP


提供了对


IP_HDRINCL


的支持 ,这意味着在


Windows 2000


以下平台


创建原始套接字时是不能使用


IP



UDP



TCP


协议的。



2.2


设置套接字选项



创建了原始套接字后,就要设置套接字选项,这要通过


setsocketo pt


函数


来实现,


setsocket opt


函数的声明如下:




int setsocketopt (


SOCKET s,


int level,


int optname,


const char FAR *optval,


int optlen


);




4



在该声明中,参数


s


是标识套接口的描述字,要注意的是选项对这个套接字

必须是有效的。参数


Level


表明选项定义的层次,对< /p>


TCP/IP


协议族而言,支持


SOL_ SOCKET



IPPROTO_IP



IPPROTO_CP


层次。参数


O ptname


是需要设置的选项


名,


这 些选项名是在


Winsock


头文件内定义的常数值。


参数


optval


是一个指针,


它指向存放选项值的缓冲区。参数


optlen


指示< /p>


optval


缓冲区的长度




2.3


创建并填充相应协议头




这一步就是创建


IP



TCP


协议头的数据结构,


根据相关协议的定义进行编


写即可,下面是一个


TCP


协议头的数据结构。



发送接收数据包的实现原理


:


Sendto()-


使用指定的


So cketFlags


,将指定字节数的数据发送到指定的终


结点 。


适用于已连接的数据报或流式套接口发送数据。


对于数据报类 套接口,



需注意发送数据长度不应超过通讯子网的

< p>
IP


包最大长度。


IP


包 最大长度在


WSAStartup()


调用返回的


WSAData



iMaxUdpDg


元素中。


如果数据太长无法自动


通过下层协议,


则返回


WSAEMSGSIZE


错误,


数据不会被发送。


请注意成功地完成


sen dto()


调用并不意味着数据传送到达。


endto()


函数主要用于


SOCK_DGRAM


类型< /p>


套接口向


to


参数指定端的套接口发送数 据报。对于


SOCK_STREAM


类型套接口,


to



tolen


参数被忽 略;这种情况下


sendto()


等价于


send()


。为了发送广播数








SOCK_DGRAM




in




< br>含










IP




IN ADDR_BROADCAST



winsock.h


中有定义)和终端地址结合起来构造。通常建议


一个广播数据报的大小不 要大到以致产生碎片,


也就是说数据报的数据部分


(包


括头)


不超过


512


字 节。


如果传送系统的缓冲区空间不够保存需传送的数据,



非套接口处于非阻塞


I/O


方式,


否则


sendto()


将阻塞。


对于非阻塞


SOCK_STREAM


类型的套接口,< /p>


实际写的数据数目可能在


1


到所需大小之 间,


其值取决于本地和


远端主机的缓冲区大小。可用

< p>
select()


调用来确定何时能够进一步发送数据。

< br>


Recvfrom()-


接收一个数据报并保存源地址 。



对于


SOCK_STREAM


类型的套接


口,


最多可接收缓冲区大小个数 据。


如果套接口被设置为线内接收带外数据


(选


项为


SO_OOBINLINE


),且有带外数据未读 入,则返回带外数据。应用程序可通


过调用


ioctlsock et()



SOCATMARK


命令来 确定是否有带外数据待读入。对于


SOCK_STREAM


类型 套接口,忽略


from



fromle n


参数。对于数据报类套接口,


队列中第一个数据报中的数据被 解包,


但最多不超过缓冲区的大小。


如果数据报


大于缓冲区,


那么缓冲区中只有数据报的前面部分,


其 他的数据都丢失了,


并且


recvfrom()


函数返回


WSAEMSGSIZE


错误。若

< p>
from


非零,且套接口为


SOCK_DGRAM


类型,则发送数据源的地址被复制到相应的


sockaddr< /p>


结构中。


fromlen


所指向


的值初始化时为这个结构的大小,当调用返回时按实际地址所占的空间进行修

改。


如果没有数据待读,


那么除非是非阻塞模式,


不然的话套接口将一直等待数



5



据的到来,此时将返回


SOCKET _ERROR


错误,错误代码是


WSAEWOULDBLOCK


。用


select()



WSAAsynSelect()







< br>数












SOCK_STREAM


类型,


并且远端“优雅”地中止了连接,


那么< /p>


recvfrom()


一个数据


也不读取 ,立即返回。如果立即被强制中止,那么


recv()


将以


WSAECONNRESET


错误失败返回。




五、



实验流程图



--


另付图




六、



实验具体步骤



1.


定义


IP


结构体



//IP


格式



typedef



struct


iph{



UCHAR


iph_VerLen;


//


版本


-4byte



UCHAR


ip_TOS;


//


区分服务


-8byte



USHORT


ip_Length;


//


首部长度


-4byte



USHORT


ip_ID;


//


标识


-16byte



USHORT


ip_Flags;


/ /


标志


-3byte



UCHAR


ip_TTL;


//< /p>


生存数据(数据报在网络上的存活时间,每通过一个路


//


由器,该数值减一




UCHAR


ip_Protacol;

//


协议(


TCP/IP


协议类型 ,比如:


ICMP


为,


IGMP


为,


TCP


为,


UD P


为等)




USHORT


ip_Checksum;


//


头部检验和




ULONGip_Source;


//


IP


地址




ULONGip_Destination;


//

< p>
目的


IP


地址



}IPHDR;








2.


定义


ICMP


结构体



//ICMP


格式



typedef



struct


icmph{



unsigned



char


icmp_Type;


//


类型


-8byte



unsigned



char


icmp_Code;


//


代码


-16byte



unsigned



short


icmp_Checksum;

< br>//


检验和


-16byte



unsigned



short


icmp_Id;


//


识别号




6

-


-


-


-


-


-


-


-



本文更新与2021-02-05 22:26,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/603554.html

Ping课程设计报告的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文