网络编程实验_ping实验报告
计算机网络实验报告(Ping命令)

〖实验项目名称〗:计算机网络基础〖实验目的〗:1、熟悉网卡、掌握如何在Windows下如何察看网卡的型号、MAC地址、IP地址等参数。
2、熟悉Windows中的网络组建及各参数的设置和基本意义。
3、网络测试命令PING的用法。
〖实验任务与要求〗:1、网卡是网络中不可缺少的网络设备,掌握其使用情况,及如何设置其参数对网络的正常使用非常重要。
本部分要完成以下任务:(1)利用Windows下ipconfig 命令查看网卡的基本参数。
(2)如何设置网卡的IP地址。
2、Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。
根据返回的信息,就可以推断TCP/IP参数是否设置得正确以及运行是否正常。
(1)Ping 本机IP(Ping 本机机器名;Ping 127.0.0.1)。
(2)Ping 邻近计算机的IP(或者是对方计算机的机器名)。
(3)Ping 网站(前题是能接入Internet)。
〖实验过程〗:(实验步骤、记录、数据、分析)1.Ipconfig的使用(1)、开始-运行,在弹出的对框框中,输入CMD将进入黑白屏幕的DOS界面。
(2)、在“命令提示符”下输入ipconfig/all查看本机网卡的基本参数。
(2)利用“网上邻居”修改网络参数。
(3)PING命令的使用ping 127.0.0.1ping 本机IPping localhostping 局域网内其他IP PING命令参数:-n:发送count指定的ECHO数据包数,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助。
能够测试发送数据包的返回平均时间,及时间的快慢程度。
默认值为 4。
-r:在“记录路由”字段中记录传出和返回数据包的路由。
通常情况下,发送的数据包是通过一系列路由才到达目标地址的,通过此参数可以设定,想探测经过路由的个数。
限定能跟踪到9个路由。
一般情况下,通过ping目标地址,可让对方返回TTL值的大小,通过TTL值可以粗略判断目标主机的系统类型是Windows还是UNIX/Linux,一般情况下Windows系统返回的TTL值在100-130之间,而UNIX/Linux系统返回的TTL值在240-255之间。
网络指令测试实验报告

一、实验目的1. 熟悉并掌握常用网络指令的使用方法。
2. 了解网络指令在网络诊断、配置和优化中的作用。
3. 提高网络故障排查和解决问题的能力。
二、实验环境1. 操作系统:Windows 102. 网络设备:路由器、交换机、计算机3. 网络拓扑:实验室局域网环境三、实验内容1. Ping命令测试网络连通性2. Tracert命令跟踪数据包路径3. Arp命令查看和修改ARP缓存4. Netstat命令查看网络连接状态5. Ipconfig命令查看网络配置信息6. Route命令查看和修改路由表7. Nbtstat命令查看NetBIOS名称表四、实验步骤及结果分析1. Ping命令测试网络连通性实验步骤:(1)在计算机A上打开命令提示符窗口。
(2)输入ping命令,后面跟目标IP地址或域名,例如:ping 192.168.1.1。
(3)观察返回结果,判断网络连通性。
实验结果:成功ping通目标IP地址或域名,表示网络连通性良好;若无法ping通,则可能存在网络故障。
2. Tracert命令跟踪数据包路径实验步骤:(1)在计算机A上打开命令提示符窗口。
(2)输入tracert命令,后面跟目标IP地址或域名,例如:tracert192.168.1.1。
(3)观察返回结果,查看数据包经过的路由器列表。
实验结果:成功跟踪到目标IP地址或域名,显示数据包经过的路由器列表;若无法跟踪到目标,则可能存在网络故障。
3. Arp命令查看和修改ARP缓存实验步骤:(1)在计算机A上打开命令提示符窗口。
(2)输入arp命令,查看ARP缓存列表。
(3)输入arp -d命令,删除ARP缓存中的某个条目。
实验结果:成功查看ARP缓存列表,了解计算机与网络设备之间的IP地址与MAC地址映射关系;删除ARP缓存条目后,重新获取映射关系。
4. Netstat命令查看网络连接状态实验步骤:(1)在计算机A上打开命令提示符窗口。
(2)输入netstat命令,查看当前所有网络连接状态。
ping实验报告1

学生实验报告学院:信息工程系课程名称: ping实验专业班级: XXX姓名: XXX学号: 1905010XX一、实验综述1、实验目的及要求实验目的:1.了解常用网络命令的工作原理 2.学会ping、ipconfig、traceRt、Netstat、ARP等常用命令 3.学会配置网络接口IP的属性(IP地址、子网掩码、默认网关)实验条件/要求:1.能够接入Internet的局域网 2.服务器端Windows2012的操作系统,客户机端Windows7操作系统2.实验环境装有cisco packet tracer student的电脑3、实验仪器、设备或软件命令提示符二、实验过程(实验步骤、记录、数据、分析)1.通过ping检测网络的连通情况和分析网络速度2.网络接口为自动获取IP地址方式,运行ipconfig命令查看自己正在使用的网络参数,包括:接口类型、IP 地址、子网掩码、默认网关、Mac地址、DNS服务器IP 地址等信息。
3.为网络接口配置IP地址、子网掩码、默认网关、DNS 服务器IP地址信息,观察可能带来什么问题。
注意:实验室的上网方式是通过校园网的,所以访问内访及学校网络之外的网络必须登入。
在本机上,如果按上边的设置好,会登入超时。
如果不是配置自动获取IP,当自己配置一个IP地址时候,有可能找不到正确的IP配置,那么就不会连上网路。
4.用ping命令查看网络的可连接性。
注意选择合适的访问对象及观察相关参数的影响,5.用tracerRT命令查看网络的可连接性。
注意选择合适的访问对象6.用ARP命令观察ARP调整缓存的变化情况,也可以用ARP-d或-s修改ARP调整缓存。
7.运行netstat命令查看主机的网络连接状态信息三、思考题1.IP地址、子网掩码默认网关、DNS服务器IP地址等设置的原则是什么?①一个主机的合法IP地址格式如下;<网络号.主机号>;子网掩码是一个32为IP地址②默认网关是主机所致向上一级网络设备的IP地址③子网掩码是根据你划分网段的大小而定的④DNS把域名转换成网络可以识别的IP地址2.网络命令可以查看一个域名对应的IP地址是什么?Ping、tracert命令可以查看3.如果一台主机不能上网,试分析可能的原因有哪些?①网线没有接好②网卡驱动没有配置③连接网络④IP地址、子网掩码,对应的默认网关没有正确配置⑤DNS服务出现问题、4.你的计算机平时能正常上网,某天突然不能上网了,你能否查出是什么原因造成的?通过ping命令来检查。
[计算机]ping实验报告
![[计算机]ping实验报告](https://img.taocdn.com/s3/m/4cc39e9f7e21af45b207a879.png)
学生__
学 号:
一、实验室名称:3302
二、实验项目名称:基于 ICMP 协议的 ping 程序
三、实验原理:
ping 程序使用 ICMP 协议实现。首先 Ping 向目标发送一个 ICMP 响应-请求(type=8),当目标主机 得到请求后,返回 ICMP 响应-应答,根据返回信息的不同判断目标主机是否存在。
七、实验结论:
.
八、总结与心得体会:
九、对本实验过程与字:
.
主机 A
向 192.168.3.1 发送响 应-请求包
主机存在
接收到应答 向发送响应-请求包
主机不存在
超时
主机 实际存在
主机 实际不存在
.
四、实验目的:
1)理解 ICMP 协议 2)了解 IP 协议 3)了解 ping 程序的功能
4)
五、实验内容:
六、实验器材(设备、元器件):
PC 机、可利用的程序运行网络环境(可自己搭建,也可直接连接 internet)。
常见网络命令的使用实验报告

常见网络命令的使用实验报告一、实验目的了解和掌握常见网络命令的功能和使用方法,能够运用这些命令进行网络配置、故障排查和性能监测,提高对网络的管理和维护能力。
二、实验环境操作系统:Windows 10网络环境:连接到本地局域网和互联网三、实验内容及步骤(一)Ping 命令1、功能Ping 命令用于测试网络连接的可达性,通过向目标主机发送 ICMP (Internet Control Message Protocol,网际控制报文协议)回显请求数据包,并接收回显应答数据包来判断目标主机是否可达,以及网络延迟情况。
2、使用方法在命令提示符中输入“ping 目标主机的 IP 地址或域名”,例如“ping ”。
3、实验结果及分析执行 Ping 命令后,会显示一系列的统计信息,包括发送的数据包数量、接收的数据包数量、丢失的数据包数量以及往返时间的平均值、最小值和最大值。
如果所有数据包都成功接收,且往返时间较短,说明网络连接良好;如果有数据包丢失或往返时间较长,则可能存在网络延迟或丢包问题。
(二)Tracert 命令1、功能Tracert 命令用于跟踪数据包从本地主机到目标主机所经过的路径,并显示每个中间节点的 IP 地址和往返时间。
2、使用方法在命令提示符中输入“tracert 目标主机的 IP 地址或域名”,例如“tracert ”。
3、实验结果及分析执行 Tracert 命令后,会逐行显示数据包经过的每个路由器的 IP 地址和往返时间。
通过分析这些信息,可以确定网络中的故障点或延迟较大的节点,有助于排查网络连接问题。
(三)Ipconfig 命令1、功能Ipconfig 命令用于显示本地网络连接的配置信息,包括 IP 地址、子网掩码、默认网关等。
2、使用方法在命令提示符中输入“ipconfig”可显示基本信息,输入“ipconfig /all”可显示更详细的信息。
3、实验结果及分析通过查看 Ipconfig 命令的输出结果,可以了解本地网络连接的配置情况。
网络命令实验报告

网络命令实验报告网络命令实验报告引言:在当今信息时代,网络已经成为人们生活中不可或缺的一部分。
无论是个人用户还是企业机构,都需要通过网络进行通信、数据传输和资源共享。
而网络命令作为网络管理和维护的重要工具,对于了解网络运行状态和故障排查具有重要意义。
本文将对网络命令进行实验,探究其在网络管理中的应用。
一、Ping命令Ping命令是网络中最常用的命令之一,用于测试主机之间的连通性。
通过发送ICMP回显请求消息,Ping命令可以测量从源主机到目标主机的往返时间(RTT)和丢包率。
在实验中,我们使用Ping命令测试了不同目标主机的连通性,并记录了结果。
实验结果显示,Ping命令可以快速判断目标主机是否可达。
当目标主机可达时,Ping命令会显示回显应答时间和丢包率。
而当目标主机不可达时,Ping命令则会显示超时错误。
通过Ping命令,我们可以及时发现网络故障,并采取相应的措施进行修复。
二、Traceroute命令Traceroute命令用于追踪数据包在网络中的路径,帮助我们了解数据包从源主机到目标主机所经过的路由器和节点。
在实验中,我们使用Traceroute命令追踪了数据包的路径,并观察了结果。
实验结果显示,Traceroute命令可以显示数据包经过的每个路由器的IP地址和往返时间。
通过分析Traceroute命令的输出,我们可以发现网络中的瓶颈节点和延迟问题,帮助我们优化网络的传输路径和提高网络的性能。
三、Netstat命令Netstat命令用于显示网络连接、路由表和网络接口等信息。
在实验中,我们使用Netstat命令查看了当前主机的网络连接状态,并记录了结果。
实验结果显示,Netstat命令可以显示当前主机与其他主机之间的连接状态、协议类型和端口号等信息。
通过分析Netstat命令的输出,我们可以了解当前主机的网络活动情况,及时发现异常连接和网络安全问题。
四、Nslookup命令Nslookup命令用于查询域名对应的IP地址和反向查询IP地址对应的域名。
常用的网络测试命令实验报告
常用的网络测试命令实验报告一、实验目的随着信息技术的不断发展,网络已经成为人们生活和工作中不可或缺的一部分。
为了确保网络的正常运行和性能优化,网络测试命令成为了网络管理员和技术人员必备的工具。
本次实验的目的是通过实际操作和使用常用的网络测试命令,深入了解网络的性能、连接状态和故障排查方法,提高对网络的管理和维护能力。
二、实验环境本次实验在Windows 10 操作系统下进行,使用命令提示符(CMD)来执行网络测试命令。
实验所用的网络为本地局域网,通过以太网连接到路由器,再接入互联网。
三、常用网络测试命令介绍1、`ping`命令`ping`命令是用于测试网络连接的最常用命令之一。
它通过向目标主机发送 ICMP(Internet Control Message Protocol)回显请求数据包,并等待目标主机返回回显应答数据包,来确定网络的连通性和往返时间(RTT,RoundTrip Time)。
例如,要测试与百度网站的连接,可以在命令提示符中输入:`ping `2、`tracert`命令`Tracert`(跟踪路由)命令用于确定数据包从源主机到目标主机所经过的路径,并显示每个跃点的延迟和 IP 地址。
比如,要跟踪到腾讯网站的路由路径,可以输入:`tracert `3、`ipconfig`命令`ipconfig`命令用于显示当前计算机的网络配置信息,包括IP 地址、子网掩码、默认网关等。
执行`ipconfig`命令可以快速查看本地网络连接的基本信息。
4、`netstat`命令`Netstat`命令用于显示网络连接、路由表、接口统计等信息。
它可以帮助了解当前计算机与网络的通信状态。
例如,输入`netstat a`可以显示所有的连接和监听端口。
四、实验步骤及结果分析1、`ping`命令测试(1)首先,对本地网关进行`ping`测试,以确定本地网络连接是否正常。
输入命令`ping 19216811`(假设本地网关地址为 19216811),得到的结果显示平均往返时间较小,且没有丢包现象,说明本地网络连接正常。
PING实验报告
PING实验报告沈阳工程学院学生实验报告实验室名称:信息工程系软件实验室实验课程名称:计算机网络实验项目名称:icmp协议应用——ping解析班级:姓名:学号:实验日期:2012年04月28日实验台编号:23 指导教师:批阅教师(签字):成绩:篇二:网络编程实验_ping实验报告网络编程-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所要传递的信息。
计算机实验报告p ing命令检验两台计算机之间的网……
目录目录 (1)一、用p ing命令检验两台计算机之间的网络连通性,并分析结果。
(1)二、如何查看IP配置 (2)三、如何查看本机TCP/IP参数设置 (3)四、在局域网内通过设置网络共享,实现两台计算机之间的文件传递 (4)一、用p ing命令检验两台计算机之间的网络连通性,并分析结果。
1.用ping命令检验两台计算机之间的网络连通性,通常按一下顺序:(1)Ping127.0.0.1环回地址。
(一)显示上图(一),则表示ping通,那么TCP/IP协议安装,运行.如果ping不通,就表示TCP/IP 协议的安装或运行存在某些最基本的问题(2)Ping本地IP地址(二)出现上图(二),表示ping通,如果ping不通则表示本地配置或安装存在问题。
出现此文时,局域网用户可先断开网络电缆,然后重新发送该命令。
如果网线断块后该命令正确,则表示局域网内另一台计算机可能配置了相同的IP地址。
(3) Ping局域网内其他IP地址(三)该ping命令从用户计算机发出,经过网卡及网络电缆达到其他计算机,再返回。
收到应答即出现图(三)则表明本地网络IP地址和子网页吗正确。
目标主机可达。
二、如何查看IP配置首先需要进入命令提示符:单击开始—〉程序—〉附件—〉命令提示符(或者开始—〉运行—〉输入cmd然后回车),在窗口中输入ipconfig按回车键即可看到目前各个连接的IP地址,见图(四)。
默认网关等项目,如果需要更详细的信息(比如DNS地址,MAC地址),可以使用ipconfig /all,见图(五).(四)(五)三、如何查看本机TCP/IP参数设置右击桌面“网上邻居”图标,在弹出的快捷菜单中选择“属性”,打开“网络连接”窗口。
右击网卡所在“本地连接”图标,在弹出的快捷菜单中选择“属性”,打开如图(六)所示的“本地连接属性”对话框。
在“此地连接使用下列项目”列表框中“Internet协议(TCP/IP)”,双击或点击“属性”按钮,打开如图(七)所示的“Internet协议(TCP/IP)属性”对话框,即可查看本机TCP/IP参数设置。
网络命令实验报告结论(3篇)
第1篇一、实验目的本次实验旨在通过实际操作,使学生掌握基本的网络命令,提高网络操作能力,为今后网络管理、维护及网络安全打下基础。
二、实验内容1. IP地址与子网掩码的计算2. ping命令的使用3. tracert命令的使用4. nslookup命令的使用5. netstat命令的使用6. route命令的使用7. ipconfig命令的使用三、实验过程1. IP地址与子网掩码的计算在实验过程中,我们学习了如何根据IP地址和子网掩码计算出网络地址、广播地址和可用主机地址。
通过实际操作,我们掌握了IP地址与子网掩码的计算方法,为后续网络配置奠定了基础。
2. ping命令的使用ping命令用于测试网络连接是否正常。
在实验中,我们通过ping本机IP地址、局域网内其他设备IP地址以及公网IP地址,验证了网络连接的稳定性。
3. tracert命令的使用tracert命令用于追踪数据包在网络中的传输路径。
通过实验,我们了解了tracert命令的使用方法,并能够分析网络延迟和丢包情况。
4. nslookup命令的使用nslookup命令用于查询域名对应的IP地址。
在实验中,我们学会了如何使用nslookup命令查询域名和IP地址,为后续DNS解析问题提供了解决思路。
5. netstat命令的使用netstat命令用于显示网络连接、路由表、接口统计等信息。
通过实验,我们掌握了netstat命令的使用方法,能够分析网络连接状态,排查网络故障。
6. route命令的使用route命令用于配置和显示路由信息。
在实验中,我们学习了如何使用route命令添加、删除和修改路由,为网络通信提供保障。
7. ipconfig命令的使用ipconfig命令用于显示和修改网络接口配置。
通过实验,我们了解了ipconfig命令的使用方法,能够快速查看和修改网络配置。
四、实验结论1. 通过本次实验,我们掌握了基本的网络命令,提高了网络操作能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络编程-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协议地址.ICMPTCP/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.lib5、在模拟实现环境下调试并运行自己编写的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 ;// 源站IPunsigned 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 wsaData ;SOCKET sockRaw ;struct sockaddr_in dest,from ;struct hostent*hp ;int bread,datasize=32,packnum=6;int fromlen=sizeof(from);int timeout=1000 ;int statistic=0 ;int ts=0;char*dest_ip ;char*icmp_data ;char*recvbuf ;unsigned int addr=0 ;USHORT seq_no=0 ;int temp;3、定义函数:(1)void fill_icmp_data(char*icmp_data,int datasize,int ts);//填充ICMP报头void fill_icmp_data(char*icmp_data,int datasize,int ts){IcmpHeader*icmp_hdr ;char*datapart ;icmp_hdr=(IcmpHeader*)icmp_data ;icmp_hdr->i_type=ICMP_ECHO ;icmp_hdr->i_code=0 ;icmp_hdr->i_id=(USHORT)GetCurrentProcessId();icmp_hdr->i_cksum=0 ;icmp_hdr->i_seq=0 ;icmp_hdr->timestamp=ts;datapart=icmp_data+sizeof(IcmpHeader);memset(datapart,'E',datasize-sizeof(IcmpHeader));}(2)USHORT checksum(USHORT*buffer,int size);//计算ICMP首部校验和USHORT checksum(USHORT*buffer,int size){unsigned long cksum=0 ;while(size>1){cksum+=*buffer++;size-=sizeof(USHORT);}if(size){cksum+=*(UCHAR*)buffer ;}cksum=(cksum>>16)+(cksum&0xffff);cksum+=(cksum>>16);return(USHORT)(~cksum);}(3)int decode_resp(char*buf,int bytes,struct sockaddr_in*from);//解析收到的数据包int decode_resp(char*buf,int bytes,struct sockaddr_in*from){IpHeader*iphdr ;IcmpHeader*icmphdr ;unsigned short iphdrlen ;iphdr=(IpHeader*)buf ;iphdrlen=(iphdr->h_len)*4 ;if(bytes<iphdrlen+ICMP_MIN){cout<<"Too few bytes from "<<inet_ntoa(from->sin_addr)<<endl; }icmphdr=(IcmpHeader*)(buf+iphdrlen);if(icmphdr->i_type!=ICMP_ECHOREPLY){cout<<"non-echo type "<<icmphdr->i_type<<" recvd\n";return 1 ;}if(icmphdr->i_id!=(USHORT)GetCurrentProcessId()){cout<<"someone else's packet!\n";return 1 ;}bytes-=32;cout<<"Reply from "<<inet_ntoa(from->sin_addr)<<":"<<" bytes:"<<bytes;cout<<" packnum = "<<icmphdr->i_seq+1<<".";cout<<" time: "<<GetTickCount()-icmphdr->timestamp<<" ms "<<endl;return 0 ;}4.主函数的具体流程(int main(1)原始套接字的创建:SOCKET sockRaw ;sockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_OVERLAPPED;if(sockRaw==INVALID_SOCKET){cout<<"WSASocket() failed: "<<WSAGetLastError()<<endl;ExitProcess(STATUS_FAILED);}2)定义套接字选项bread=setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));如果没有出现错误,setsocket返回值为0;3)定义sockaddr_in类型的dest,from两个变量。
sock addr_in结构是专门被Windows Sockets用来详细说明套接字连接地址的。