《平安365》 20180324 假牙迷局
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)

网络编程-PING程序设计实验指导书 一.实验目的 (1)熟悉原始套接字编程。 (2)了解网络的结构。 (3)了解网络传输底层协议。 二.实验要求 PING程序是用于测试网络连通性的程序。要求在WINDOWS环境下实现基本的PING程序 功能. 在命令提示符下输入: PING ***.***.***.*** 其中***为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。 不带开关变量时,要求返回4次响应。 返回信息的格式: REPLY FROM ***.***.***.*** 或 REQUEST TimeOut (无法PING通的情况) 三.实验原理 1、PING的工作原理 ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这 台主机建立连接。ping 使用的是ICMP协议,它发送ICMP回送请求消息给目的主机。ICMP协议规定:目的主机必 须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可 达。 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。因此, 保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制 报文)协议。 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错 误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立 在IP层以上的协议是可能做到安全的原因。ICMP数据包由8bit的错误类型和8bit的代码 和16bit的校验和组成。而前 16bit就组成了ICMP所要传递的信息。 PING利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请求 ,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少 个包被送达。用户就可以判断网络大致的情况。 IP数据报 TCP/IP协议定义了一个在因特网上传输的包, 称为IP数据报(IP datagram). 这是一个与硬件无关的虚拟包, 由包头和数据两部分组成, 包头中的源地址和目的地址都是IP协议地址. ICMP TCP/IP组件包括一个ICMP(Internet Control Message Protocol)协议, 该协议定义了的报文类型: Echo,Echo Reply,用于ping程序的基本实现 下图是ICMP报文的传送: 2、RAW模式的SOCKET编程 PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。为 了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。 熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等. 3、具体内容 (1)?定义数据结构 需要定义好IP数据报、ICMP包等相关的数据结构 (2)?程序实现 在WINDOWS环境下实现PING程序 四. 实验步骤和注意事项 1、?熟悉IP以及ICMP协议的工作机制 2、 熟悉RAW模式的SOCKET编程 3、编写PING的实现程序 4、编译环境中需要包括SOCKET库 WS2_32.lib 5、?在模拟实现环境下调试并运行自己编写的PING程序 6、最后提交源程序,撰写实验报告 初步流程图 具体步骤 1、定义IP头和ICMP头 该程序定义自己的IP头和ICMP头数据结构,代码如下: //IP首部数据结构 typedef struct iphdr { unsigned int h_len : 4 ; //首部长度 unsigned int version : 4 ; //版本 unsigned char tos ; //服务类型 unsigned short total_len ; //报文总长度 unsigned short ident ; //标识 unsigned short frag_and_flags ; //偏移量 unsigned char ttl ; //寿命 unsigned char proto ; //协议 unsigned short checksum ;// 首部校验和 unsigned int sourceIP ;// 源站IP unsigned int destIP ;// 目的站IP }; //ICMP首部数据结构 typedef struct icmphdr { BYTE i_type ; //类型 BYTE i_code ; //代码 USHORT i_cksum ; //首部校验和 USHORT i_id ; //标识 USHORT i_seq ; //序列号 ULONG timestamp ; //时间戳 }; 2.定义变量 WSADATA wsaDa 【网络编程实验-PING程序设计】 实验的主要目的是深入理解网络通信的基础,特别是原始套接字编程,以及网络传输协议的工作机制。实验的核心是通过编写一个简单的PING程序来测试网络连通性,以此来学习和实践相关知识。 **实验原理** 1. **PING的工作原理**:PING程序基于Internet控制消息协议(ICMP),它发送ICMP回送请求给目标主机。如果目标主机可到达,它将回应一个ICMP回送应答。通过计算响应时间和接收到的响应数量,可以评估网络的状态。ICMP是TCP/IP协议族的一部分,它在IP层之上提供错误报告和控制消息。 2. **IP数据报**:IP数据报是TCP/IP协议中在网络层传输的数据单元,包含头部和数据部分。头部包含了源和目的IP地址,以及其他用于路由和处理的字段。 3. **ICMP协议**:ICMP报文用于错误报告和网络诊断,例如主机不可达、路由不可达等。它通过IP协议传输,且ICMP报文由错误类型、代码、校验和等字段构成。 4. **RAW模式的SOCKET编程**:为了直接操作IP和ICMP数据包,实验中采用RAW模式的SOCKET编程。这种方式允许程序员创建和解析协议头,而不依赖于高层协议栈的抽象。 **实验步骤和注意事项** 1. **了解协议机制**:首先要理解IP和ICMP协议的工作方式,包括它们的头部结构和协议规则。 2. **RAW SOCKET编程**:学习如何使用SOCKET API,特别是RAW模式,以便直接操作网络包。 3. **程序实现**:在Windows环境下编写PING程序,需要定义IP头和ICMP头的数据结构,并实现发送和接收ICMP请求及响应的逻辑。 4. **环境配置**:确保编译环境包含SOCKET库WS2_32.lib,这是在Windows上进行网络编程的必要组件。 5. **调试与运行**:在模拟环境中调试程序,检查其能否正确发送和接收ICMP报文,按照实验要求返回适当的响应。 6. **实验报告**:整理源代码和实验过程,撰写详细的实验报告。 **关键数据结构定义** 实验代码中定义了两个结构体,即IP头和ICMP头,用于构建和解析数据包。IP头包括首部长度、版本、服务类型、总长度、标识、偏移量、生存时间、协议等字段,而ICMP头包含类型、代码、校验和、标识、序列号和时间戳字段。 通过这个实验,学生不仅可以掌握网络编程的基本技能,还能深入了解网络底层协议的运作,这对于网络管理员、系统开发者和网络安全专业人士来说是非常宝贵的经验。




















- m0_632029722025-08-07超赞的资源,感谢资源主分享,大家一起进步!
- 2302_783949942025-08-07资源很实用,对我启发很大,有很好的参考价值,内容详细。

- 粉丝: 205
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 组建EPC项目管理组织机构的设想.-1doc.doc
- 二院综合布线系统施工方案.doc
- 国债项目管理办法.doc
- 还您一个健康的网络医院网络安全解决方案.doc
- 办公软件应用教案.doc
- 计算机系统综合设计课程项目集合-minisys-包含Verilog实现的五级流水单发射哈佛结构可中断CPU支持57条MIPS指令-总线下挂式外设如拨码开关矩阵键盘数码管蜂鸣器LED.zip
- 更新版国家开放大学电大专科《网络营销与策划》单项多项选择题题库及答案.docx
- 数值分析雅克比高斯迭代法MATLAB程序.doc
- 大厦网络语音综合布线设计方案.doc
- 虚拟化与云安全解决方案.docx
- 循迹小车设计报告-基于单片机C.doc
- 移动互联网时代的运营商定位(简版).pptx
- 云计算架构技术与实践概述.pptx
- 数学常用巧算速算法.doc
- 数值积分算法与MATLAB实现设计.doc
- 配置网络信息管理系统的开发环境PPT课件.ppt


