文档库 最新最全的文档下载
当前位置:文档库 › ping流程

ping流程

ping流程
ping流程

ping命令

1.什么是ping?

Ping是Packet Internet Groper的英文缩写。它使用ICMP的echo协议信息在互联网络上检查计算机间物理连接的连通性。

扩展:ICMP(因特网控制报文协议),工作在网络层。被IP用于提供控制和信息传递功能,是一个管理性协议。它的信息是被作为IP数据报来传送的。

echo协议的结果可以有助于评估以下内容:

*主机路径的可靠性

*路径的延迟

*主机能否到达或是否正在运行

Ping的操作可以在用户或特权EXEC模式下执行。

Ping返回代码

代码 含义

! 收到一个ICMP回应应答

.等待应答时网络服务超时

U收到一条ICMP不可达信息

C收到一条ICMP源抑制信息

&收到一条ICMP超时信息

2.Ping的工作流程

首先说明的是,ping是一个双向过程,下面这个流程图只是将其中的一个方向大致的画了出来。在这个过程中还有数据的封装和解封装过程没有在图上表示。

由于ping是一个双向过程,所以在ping 失败的时候,许多人会认为数据包没有到达目的主机。但是,有时候也会是由于路由器等设备缺乏返回源方主机网络的路由并将数据包丢弃!数据包被丢弃在返回源方的旅途中,并不是丢弃在它前往目的主机的过程中。

还有一个需要注意的是。当主机A发送数据包到不同网络的主机B 时,所使用的目的方硬件地址时默认网关的以太网接口。这里因为数据帧是不可以被直接发送到远方网络的,它只有先发送到本地网络上,而且去往远程网络的数据包必须要通过默认网关转发!

Ping工作流程图

3.实例分析

TOPO1:

实验目的:了解当ping自身的ip地址时,ping包是如何发送和接受的

实验假想:既然是ping自己那只要在自身内部发包和收包即可,不需要通过别的终端。

RA的配置:

Router>en

Router#conf t

Router(config)#host RA

RA(config)#int s1/0

RA(config-if)#ip add 192.168.1.2 255.255.255.0

RA(config-if)#no shu

RA(config-if)#clock rate 64000

RB的配置:

Router>en

Router#conf t

Router(config)#host RB

RB(config)#int s1/0

RB(config-if)#ip add 192.168.1.1 255.255.255.0

RB(config-if)#no shu

RB(config-if)#end

RB#debug ip pack

RB#ping 192.168.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max =48/99/188 ms

RB#

*Nov 3 12:59:15.519: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), routed via FIB

*Nov 3 12:59:15.523: IP: s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), len 100, sending

*Nov 3 12:59:15.703: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:15.703: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:15.707: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), routed via FIB

*Nov 3 12:59:15.711: IP: s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), len 100, sending

*Nov 3 12:59:15.823: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:15.827: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:15.831: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), routed via FIB

*Nov 3 12:59:15.831: IP: s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), len 100, sending

*Nov 3 12:59:15.919: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:15.919: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:15.923: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), routed via FIB

*Nov 3 12:59:15.927: IP: s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), len 100, sending

*Nov 3 12:59:15.967: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:15.967: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:15.971: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), routed via FIB

*Nov 3 12:59:15.975: IP: s=192.168.1.1 (local), d=192.168.1.2 (Serial1/0), len 100, sending

*Nov 3 12:59:16.015: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:16.015: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

RB#ping 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 96/200/360 ms

RB#

*Nov 3 12:59:20.991: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:20.995: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.127: IP: tableid=0, s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.127: IP: s=192.168.1.2 (Serial1/0), d=192.168.1.1 (Serial1/0), len 56, rcvd 3

*Nov 3 12:59:21.199: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.199: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.203: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.207: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.271: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.271: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.279: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.279: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.343: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.343: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.347: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.351: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.415: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.415: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.419: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.423: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.463: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB *Nov 3 12:59:21.463: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.467: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.471: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.535: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.535: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.539: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.543: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.607: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.607: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.611: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.615: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.631: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.631: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.635: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.639: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.703: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.707: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

*Nov 3 12:59:21.707: IP: tableid=0, s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.711: IP: s=192.168.1.1 (local), d=192.168.1.1 (Serial1/0), len 100, sending

*Nov 3 12:59:21.991: IP: tableid=0, s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), routed via RIB

*Nov 3 12:59:21.991: IP: s=192.168.1.1 (Serial1/0), d=192.168.1.1 (Serial1/0), len 100, rcvd 3

在这个实例中我们发现RB ping RA所用的时间比RB ping自己所用的时间几乎少了一半。为什么ping自己的时间会比ping对方的时间长呢?

我们通过debug信息可以发现,当RB ping自己时,并不是按照我们想象的那样在自己的内部ping,那是怎么回事呢?

假想:ping自身时,需要通过RA。

这时我们如果将RA的IP地址去掉,RB还能ping通自己吗?如果不行,就验证了我们的假想

RA(config)#int s1/0

RA(config-if)#no ip add

RB#show cdp nei

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge

S - Switch, H - Host, I - IGMP, r - Repeater

Device ID Local Intrfce Holdtme Capability Platform Port ID

RA Ser 1/0 129 R 7206VXR Ser 1/0

RB#ping 192.168.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

*Nov 3 15:50:35.211: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), routed via RIB *Nov 3 15:50:35.215: IP: s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), len 100, sending.

*Nov 3 15:50:37.211: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), routed via RIB *Nov 3 15:50:37.211: IP: s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), len 100, sending.

*Nov 3 15:50:39.211: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), routed via RIB *Nov 3 15:50:39.211: IP: s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), len 100, sending.

*Nov 3 15:50:41.211: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), routed via RIB *Nov 3 15:50:41.211: IP: s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), len 100, sending.

*Nov 3 15:50:43.211: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), routed via RIB *Nov 3 15:50:43.215: IP: s=192.168.1.2 (local), d=192.168.1.2 (Serial1/0), len 100, sending. Success rate is 0 percent (0/5)

此时无法ping通,这样就验证了我们的假想,ping自己要从对方那里走!

TOPO2:

实验目的:验证ping是一个双向过程

配置:(ip地址的配置省略)

RB(config)#ip route 192.168.2.0 255.255.255.0 192.168.1.1

RB#ping 192.168.2.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

*Nov 3 16:30:41.147: IP: tableid=0, s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), routed via FIB *Nov 3 16:30:41.151: IP: s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), len 100, sending.

*Nov 3 16:30:43.147: IP: tableid=0, s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), routed via FIB *Nov 3 16:30:43.147: IP: s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), len 100, sending.

*Nov 3 16:30:45.147: IP: tableid=0, s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), routed via FIB *Nov 3 16:30:45.147: IP: s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), len 100, sending.

*Nov 3 16:30:47.147: IP: tableid=0, s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), routed via FIB *Nov 3 16:30:47.147: IP: s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), len 100, sending.

*Nov 3 16:30:49.147: IP: tableid=0, s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), routed via FIB

*Nov 3 16:30:49.147: IP: s=192.168.1.2 (local), d=192.168.2.2 (Serial1/0), len 100, sending.

Success rate is 0 percent (0/5)

Ping不通,但是debug信息表示数据包已经发送成功

在RC上

RC#

*Nov 3 16:30:01.219: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:01.219: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:01.223: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

*Nov 3 16:30:20.851: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:20.851: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:20.855: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

*Nov 3 16:30:22.771: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:22.771: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:22.775: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

*Nov 3 16:30:24.739: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:24.739: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:24.743: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

*Nov 3 16:30:26.803: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:26.803: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:26.807: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

*Nov 3 16:30:28.795: IP: tableid=0, s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), routed via RIB *Nov 3 16:30:28.795: IP: s=192.168.1.2 (Serial1/1), d=192.168.2.2 (Serial1/1), len 100, rcvd 3

*Nov 3 16:30:28.799: IP: s=192.168.2.2 (local), d=192.168.1.2, len 100, unroutable

提示没有路由,则在RC上加上一下配置

RC(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1

RB#ping 192.168.2.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 96/160/224 ms

通了!

这个实验告诉我们,当ping对方不通的时候不一定是自己的问题,也许是对方主机上没有路由,需要到对方主机上核实信息。

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

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

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

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

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

Ping程序的设计与实现

Ping程序的设计与实现 Ping的基本实现原理请参考以下文档: https://www.wendangku.net/doc/d517348872.html,/view/e0769dc69ec3d5bbfd0a7476.html;https://www.wendangku.net/doc/d517348872.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")

1、ping命令使用详解

1、ping命令使用详解 以上就是怎么ping网速的相关介绍,你可以通过上面的说明了解怎么通过ping命令来检测网速,当然如果你想了解更多ping命令的使用方法,你可以输入ping /?,这时会显示所有有关ping命令的参数,具体如下: 用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name 选项: -t Ping 指定的主机,直到停止。 若要查看统计信息并继续操作 - 请键入 Control-Break; 若要停止 - 请键入 Control-C。 -a 将地址解析成主机名。 -n count 要发送的回显请求数。 -l size 发送缓冲区大小。 -f 在数据包中设置“不分段”标志(仅适用于 IPv4)。 -i TTL 生存时间。 -v TOS 服务类型(仅适用于 IPv4。该设置已不赞成使用,且 对 IP 标头中的服务字段类型没有任何影响)。 -r count 记录计数跃点的路由(仅适用于 IPv4)。 -s count 计数跃点的时间戳(仅适用于 IPv4)。 -j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。 -k host-list 与主机列表一起的严格源路由(仅适用于 IPv4)。 -w timeout 等待每次回复的超时时间(毫秒)。 -R 同样使用路由标头测试反向路由(仅适用于 IPv6)。 -S srcaddr 要使用的源地址。 -4 强制使用 IPv4。 -6 强制使用 IPv6。

UCOS一个简单Ping的实现

一个简单Ping的实现 作者 2002/12/10 Ping(Packet Internet Gopher分组网间网探测器)利用了ICMP(Internet Control Message Protocol互联网控制报文协议)协议的“回响”功能来实现主机/服务器是否有应答的测试。ICMP为路由器和主机提供了正常情况以外的通信,它是IP的一个完整的组成部分。ICMP 包括降低传送速率的源站抑制报文、请求主机改变选路表的重定向报文以及主机可用来决定目的站是否可达的回送请求/回答报文。ICMP报文在IP数据报的数据区中传送。当主机/服务器接收到具有回响类型的ICMP报文时,就响应1个“回响应答”报文。本地机器收到该报文并确认之后即可认为该主机/服务器处于活动状态,从而本机与远程主机/服务器之间能够连通,也可以互相通信。 仿照DOS下的ping命令并根据51单片机资源现状,我实现了一个简单的ping功能。它的使用方法如下: (1)单片机-->PC机在Shell里使用“ping XXX.XXX.XXX.XXX”,如果连通,显示“Reply from XXX.XXX.XXX.XXX: bytes=32 TTL=XXX”,否则,显示“Request timed out.(XXX.XXX.XXX.XXX)”。 (2)PC机-->单片机按照DOS里的常规操作即可 每个ping命令重复测试8次,即显示8次信息。 注意到显示内容与PC机上稍有不同,这是由于此处ping工作在多任务单窗口环境下,为了区分响应发送源,有必要增加源IP地址信息。另外,由于51资源限制,取消了time 参数(time是本机与对方主机往返一次所用时间)显示。具体简化内容如下: (1)只支持“ping+IP地址”命令格式,域名方式和其他可选项均不可用 (2)固定32字节测试包 (3)不计算本机与对方主机往返一次所用时间,测试用时为1到2秒 总之,经过简化的ping能够完成最基本的连通测试功能。 0 8 16 31 ------------------------------------------------ | 类型(8或0) | 代码(0) | 校验和| ------------------------------------------------ | 标识符| 序号| ------------------------------------------------ | 可选数据| ------------------------------------------------ | 。。。| ------------------------------------------------ 图1 ICMP回送请求或回答报文格式 PingCycle | 定时操作 V PingCmd ---------------- -------------- -------->| PingRequest|----------->| |

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观察本地网络设置是否正确,如图;

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 指导教师(签字): 年 月 日 系(教研室)主任(签字): 年 月 日

Ping命令大全及使用方法

Ping命令大全及使用方法 2006-12-10 21:24 -- Ping命令大全及使用方法 Ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中Ping 是一个十分好用的TCP/IP 工具。它主要的功能是用来检测网络的连通情况和分析网络速度。 Ping有好的善的一面也有恶的一面。先说一下善的一面吧。上面已经说过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 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由

课程设计---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。

PING命令作用

1)ping命令:ping命令是用来检查网络是否通畅以及网络连接速度的命令,对于黑客来说ping命令是第一个必须掌握的DOS命令,用Ping 命令就是我们给目标IP地址发一个数据包,再根据返回值来判断目标 主机的存在位置及操作系统等。 下面我们来看看它的常用操作。在命令提示框中输入ping,回车。ping 的命令格式如下 C:\Documents and settings\Administrator\ping Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] : [-k host-list]] [-w timeout] target_name 在此,我们只掌握一些基本的有用的参数就行了。 -t表示不间断的向目标IP发送数据包,直到我们按ctrl+c强迫其停止为止。如果你使用的是100M的宽带,而目标IP只是56K的小猫(调制解调器)那要不了多久目标IP就会因为接受不了这么多的数据而掉线,一次攻击就这么实现了。(不过现在已经米有什么人用56K的小 猫了) -l定义发送数据包的大小,默认为32字节,最大为65500字节,再结合上面的-t一起使用,有更好的效果。例如ping 125.213.73.120 -l 65500 -t (注:125.213.73.120为目标IP地址,65500为字节大小,可自行改动.)由于目标IP(125.213.73.120)有防火墙,所以我们ping 不进去显示Request timed out我们可以按Ctrl+C让其停止。 -n 定义向目标IP发送数据包的次数,默认为3次。如果-n和-t 一 起使用,则以放在后面的为准。

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

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

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

Ping与IPconfig命令的使用

上机一Ping与IPconfig命令的使用 1.Ping命令 1.1 命令格式 ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name 1.2 实验内容 (1)-t参数 该参数的意思是一直用ping命令去测试某个地址或某个服务器,直到用户按Ctrl+C 强制中断。如:ping https://www.wendangku.net/doc/d517348872.html, –t。 操作要求:请用该参数去ping某台计算机,并用CTRL+C中断,然后查看Ping的情况。 (2)-a参数 解析计算机NetBios名。如:ping -a 192.168.1.21。 操作要求:请用该参数去Ping某台计算机,并查看该台计算机的NetBios名。 (3)-n count参数 发送count指定的Echo数据包数。在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:ping -n 50 202.103.96.68 操作要求:请用该命令测试发送100个数据包到某台计算机的时间。 (4)-l size参数 定义echo数据包大小。在默认的情况下windows的ping发送的数据包大小为32byt,可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能当机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如可以通过配合-t参数来实现一个带有攻击性的命令。 ping -l 500 192.168.1.1 操作要求:请用该参数发送一个自己定义大小的数据包到某台计算机。 (5)-i TTL 参数 指定TTL值在对方的系统里停留的时间。此参数同样是帮助检查网络运转情况的。 (6)-r count 参数 在“记录路由”字段中记录传出和返回数据包的路由。在一般情况下发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定想探测经过的路由的个数,不过限制在了9个,也就是说只能跟踪到9个路由,如: ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由) 操作要求:请用该参数去Ping某台计算机,并指经过的路由数。

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

计算机网络课程设计报告 姓名:王齐 学号: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());

PING命令使用方法详解

PING命令使用方法详解 PING命令的功能是验证本地计算机与远程计算机(或者是局域网内的计算机)的连接。该命令只有在安装了TCP/IP协议后才可以使用。 依次单击“开始”→“运行”,弹出“运行”对话框,在窗口中输入“CMD”,打开命令行窗口,在命令中输入“ping /?”得到PING命令用法帮助如下: Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] target_name Options: -t Ping the specified host until stopped. To see statistics and continue - type Control-Break; To stop - type Control-C. -a Resolve addresses to hostnames. -n count Number of echo requests to send. -l size Send buffer size. -f Set Don't Fragment flag in packet. -i TTL Time To Live. -v TOS Type Of Service. -r count Record route for count hops. -s count Timestamp for count hops. -j host-list Loose source route along host-list. -k host-list Strict source route along host-list. -w timeout Timeout in milliseconds to wait for each reply. Ping命令参数中文含义如下: -t Ping 指定的计算机直到中断。 -a 将地址解析为计算机名。 -n count 发送count指定的ECHO数据包数。默认值为4。 -l size 发送包含由size指定的数据量的ECHO数据包。默认为32字节,可选值为65,527 -f 在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段 -i TTL 将“生存时间”字段设置为TTL指定的值。 -v TOS 将“服务类型”字段设置为TOS指定的值。 -r count 在“记录路由”字段中记录传出和返回数据包的路由。Count可以指定最少1台,最多9台计算机。 -s count 指定count指定的跃点的时间戳。 -j host-list 利用host-list指定的计算机列表路由数据包。连续计算机可以被中间网关分隔IP允许的最大数量为9。 -k host-list 利用host-list指定的计算机列表路由数据包。连续计算机不能被中间网关分隔IP允许的最大数量为9。 -w timeout 指定超时间隔,单位为毫秒。 Ping命令用法举例: 1、Ping IP址 依次单击“开始”→“运行”,弹出“运行”对话框,在窗口中输入“CMD”,打开命令行

ping命令的用法大全

ping命令的用法大全! 1)如何查看本机所开端口: 用netstat -an命令查看!再stat下面有一些英文,我来简单说一下这些英文具体都代表什么~ LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ESTABLISHED:代表一个打开的连接 FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认 TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有任何连接状态 ××××××××××××××××××××××××××××××××××××××××××××× 2)如何获得一个IP地址的主机名? 利用ping -a ip 命令查看!再第一行的pinging后面的『ip』前面的英文就是对方主机名! 同样道理,利用ping machine_name也可以得到对方的ip 获得一个网站的ip地址的方法是:ping https://www.wendangku.net/doc/d517348872.html, 比如想知道sohu的ip,就用ping https://www.wendangku.net/doc/d517348872.html,来查看就可以了~ 顺便说一句:如果返回:Reply from *.*.*.*: TTL expired in transit的话,呵呵,代表TTL(生命周期)在传输过程中过期 什么意思呢?我来解释一下! 导致这个问题出现的原因有两个:1)TTL值太小!TTL值小于你和对方主机之间经过的路由器数目。2)路由器数量太多,经过路由器的数量大于TTL值! 呵呵,其实这两点是一个意思!只不过说法不同而已! ××××××××××××××××××××××××××××××××××××××××××××× 3)如何查看本机的ip地址? 用ipconfig来查看就可以! 也可以再Windows中的开始菜单,运行中输入winipcfg,同样可以看到自己的ip

ping程序的实现

import https://www.wendangku.net/doc/d517348872.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

traceroute程序设计与实现

Traceroute程序设计与实现 学生姓名: 莫小锋指导老师:龙计征 摘要本文主要讲述了路由追踪的基本程序设计与实现,并给出了一种基于IP网络的路由追踪命令Tr acert,详细分析了实现路由追踪的基本原理,归纳了路由追踪的基本流程。Tr acert通过ICMP协议和IPheader中TTL(存活时间)利用路由器对数据报存活时间的处理方式来实现路由探测的。首先根据任务书设计好流程图,然后编写程序代码,运行得到Traceroute的命令窗口。提取tracert 的输出,再结合现有IP数据库及自建地名- 坐标数据库对路由中各节点IP进行定位,最终实现了动态显示追踪的详细信息和路径。 关键词: IP 地址,ICMP协议,TTL,Tracert路由追踪

1 引言 Internet,是目前世界上最大的计算机网络,更确切的说是网络中的网络,它由遍布全球的几万局域网和数百万台计算机组成,并通过用于异构网络的TCP/IP协议进行网间通信。互联网中,信息的传送是通过网中许多段的传输介质和设备从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路劲。当然每次数据包由某一同样的出发点到达某一同样的目的地走的路劲可能会不同,但基本上来说大部分时候所走的路由是相同的。随着Internet(国际互联网)的发展,越来越多的服务通过网络提供给大众,与此同时,针对互联网的攻击事件也越来越频繁。所谓路由追踪实际上就是在IP网络上判断从源到达目的所经过的路由器的IP地址,其基本的实现手段都是向目的地发送数据包以获取经过的路由器的IP。由于Internet上的路由协议是动态的,所以每次形成的数据包从同一个出发点到达目的地的路由可能会不一样,但由于路由算法有一定的稳定性,在大部分时侯所走的路由会是相同的。 1.1 课程设计目的 1.这次课程设计,主要为了加深同学们对计算机网络网络的理解和认识 2.了解信息在计算机网络与网络之间的传送和接收 3.进一步加深了解网络与网络之间的协议 4.理解网络中的IP地址以及路由之间的相关命令。 1.2 课程设计内容 1.已知参数:输入:目的节点IP地址或主机名;输出:从控制台屏幕输出IP 报文由本机出发到达目的主机所经过的路由信息。 2.设计要求:通过原始套接字编程,实现Tracert的基本功能

ping程序的设计与实现

滁州学院 课程设计报告 课程名称:计算机网络课程设计 设计题目:ping程序的设计与实现 系别:计算机与信息工程学院 专业:计算科学与技术 组别:第五小组 起止日期:2011年12月1日~2011年12月8日指导教师: 计算机科学与技术系二○一一年制

课程设计任务书 一.Ping 程序运行原理 在网络层,除了IP协议之外,还有一些控制协议,如ICMP,ARP, DHCP等。 1.ping的基础知识 原始套接字 原始套接字是允许访问底层传输协议的一种套接字类型。使用原始套接字操作IP数据报,可以进行路由跟踪,Ping等。另外,使用原始套接字需要知道许多下层协议结构的知识,所以下面讨论ICMP,IP, UDP, TCP格式。 原始套接字有两种类型,第一种类型是在IP头种使用预定义的协议,如ICMP;第二种类型是在IP头种使用自定义的协议。下面使用创建原始套接字的方法。 创建套接字的函数是socket()或者WSASocket(),只不过要将套接字类型指定为SOCK_RAW,代码如下: SOCKET sraw = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); 创建原始套接字时socket函数的第三个参数protocol值将成为IP头中得协议域的值。IPPROTO_ICMP指定要使用ICMP。 原始套解释提供管理下层传输的能力。他们可能会被恶意利用,因此,仅Administrator 组的成员能够创建SOCK_RAW类型的套接字。任何人在Windows NT下都可以创建原始套接字,但是没有Administrator权限的人不能用它来做任何事情,因为bind函数将会失败,出错码WSAEACCES.. 在上面的套接字创建代码种,我们使用ICMP,也可以使用IIGMP, UDP, IP或者原始IP,对应的宏定义分别是IPPROTO_IGMP, IPROTO_UDP, IPPROTO_IP或者IPPROTO_RAW。其中协议标志IPPROTO_UDP, IPPROTO_IP, 和IPPROTO_RAW 需要启动IP_HDRINCL选项。 使用恰当的协议标志创建原始套接字之后,便可以在发送和接受调用种使用此套接字句柄了。无论IP_HDRINCL选项是否设置,在原始套接字上接收到的数据种都会将包含IP 头。 2.ICMP协议与校验和的计算 互联网上得操作由路由器紧紧地监控着。当有异常饭送时候,具体事件通过ICMP报道,如目的不可到达,TTL超时等。这个协议也用来测试互联网。 每个ICMP消息都封装在IP封包中,所以使用IP寻址,

相关文档