Ping多少,网络延迟的秘密究竟隐藏了什么?

无法直接生成具体回答,因为“ping多少”这个问题不完整,缺乏关键信息。

一、简介

Ping是因特网包探索器(Packet Internet Groper)的缩写,是一种计算机网络管理应用,它通常被用于确认因特网上的一台主机是否可达,其原理是向特定的目的主机发送ICMP(Internet Control Message Protocol,因特网报文控制协议)Echo回显请求报文,并根据回复的ICMP回显应答消息,测试目的站是否可达并获取连接的丢包率和平均往返时间等有关状态信息。

二、历史由来

Ping程序是由Mike Muuss编写的,命名源自声纳系统在进行回声定位时发出的声音,Ping程序的作者将ping程序对“网络空间”的探测与声纳系统对物理空间的探测类比,因其原理的范式是相同的:ping使用定时IP/ICMP协议回显请求(ECHO_REQUEST)和回显应答(ECHO_REPLY)数据包探测到目标主机的“距离”。

三、实现方式

1. ICMPPing

ICMP是一种将差错与控制集于一体的协议,不仅用于传输差错报文,还用于消息控制报文,ICMP报文分为信息报文、差错报文、控制报文,信息报文一般由客户端发出,例如用于测试目的地址可达性的回应请求/应答报文;而差错报文一般由服务器或是路由器发出,表示网络或主机不能完成要求的服务,当发送一份ICMP差错报文时,始终包含了IP首部和产生ICMP差错报文的IP数据报的前8个字节,ICMP Ping就是向目标主机发送ICMP信息报文,目标主机(有时是路由器)回应ICMP信息报文或差错报文,Ping程序根据这些收到的ICMP报文,以知道目标主机的可达性,可用于Ping的信息报文有:回应请求与响应报文、时间戳请求与响应报文和掩码请求与响应报文。

Ping多少,网络延迟的秘密究竟隐藏了什么?

2. TCPPing

在进行ICMPPing的时候,如果在目标主机的网络网关过滤了ICMP Ping包,ICMPPing的结果就不准确了,应该考虑其他方式,如TCPPing、LIDPPing,TCP的功能是在一对ULP(Upper Layer Protocol,高层协议)之间提供的数据报服务基础上,建立可靠的端对端连接,并提供虚电路服务和面向数据流的传输服务,TCP中的基本传输单元是段(Segment),一个TCP段由段头和数据流两部分组成,在TCP协议中,SYN包用来表示建立连接请求,如果对方端口处在listening状态,就会回送ACK包,并附上自己的ISN,但是如果对方端口是关闭的,它会发回一个RST包,表示应该马上断开连接(少数情况下会发回一个同时置SYN和ACK位的包),如果我们向一个端口发送ACK包,而事先没有与此端口建立连接,无论端口是否打开,它都会回送一个RST包,所以可以看出,无论这个端口是否打开,总会有某一种数据包返回,以此可以判定目标主机可达,而目标主机如果不可达,路由器就会向扫描主机发送目的地不可达的ICMP报文,这样,通过向目标主机发送TCPSYN包或TCPACK包就可以准确判断目标主机是否可达,而且根据RFC793(TCP),目标主机(或路由器)都无法屏蔽TCPSYN包和TCPACK包,TCPPing的准确性比ICMPPing的准确性要高,在实现的时候,需要利用RAW Socket,定制TCP包并封装在IP包中,在Linux系统下,非root用户是没有此项权利的,同样Windows的非Administrator组用户也不能直接填写TCP包头和IP包头。

3. UDPPing

Ping多少,网络延迟的秘密究竟隐藏了什么?

在TCP/IP协议组中,用户数据报协议(UDP)提供应用进程之间数据报传送的基本机制,每个UDP报文不仅传送用户数据,而且还包括发送方和接收方的协议端口号,UDPPing与TCPPing的原理类似,通过RAW Socket定制UDP包,主要是格式化UDP包中的目的端口号,一般指定一个数量值很大的目的端口号(比如31558),很少应用程序用到数量值入的端口号,也就是说该端口很有可能是处于关闭状态,首先构建好UDP报文,然后递交给IP实体发送,如果目标主机不可达(网络不通或主机未打开),则路由器将发送一个目的不可达ICMP报文,而如果目标主机可达,在其接收数据时,其UDP实体首先判断接收到的目的端口号是否与当前使用的某端口号匹配,如果匹配,则将数据报放入到对应的接收队列,否则如果目的端口号对应的端口关闭则丢弃该数据报,并回送一个“端口不可达”的ICMP报文,只要目标主机可达,UDPPing程序将收到一个UDP回应包(也可能没有)或者“端口不可达”的ICMP报文而目标主机不可达,将收到“目的不可达’’的ICMP报文。

四、工作原理

Ping命令本质上是一种发送Internet控制消息协议(ICMP)回显请求和响应消息的命令组合,ICMP协议是一种构建在IP协议之上的网络协议,其报头封装在IP层报头之内,当网络管理员在命令提示符下输入ping命令时,主机会向目标设备或指定的IP地址发送ICMP回显请求消息(ICMP Echo Request Message),这些请求消息是最多64字节的小数据包(在ping命令中一般为32字节),用于判断数据包是否成功到达对端,发送请求的本地计算机将等待远程主机的响应,如果远程主机正在运行且网络可达,目标计算机收到回显请求消息后,会将ICMP回显响应消息(ICMP Echo Reply Message)送回原始计算机。

五、回显请求消息(Echo Request)报文格式

Ping多少,网络延迟的秘密究竟隐藏了什么?

字段 类型 描述
Type 8比特 IPv4为8,IPv6为128
Code 8比特 0
Checksum 16比特 校验和
Identifier 16比特 标识符,用于匹配请求和响应
Sequence Number 16比特 序列号,用于区分不同的请求
Payload 可变长度 可选的数据负载,通常用于携带额外的信息

六、相关问题与解答

问题1:Ping成功并不一定代表TCP/IP配置正确吗?

答:是的,Ping成功并不一定就代表TCP/IP配置正确,有可能还要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性,如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只保证当前主机与目的主机间存在一条连通的物理路径。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/129806.html

Like (0)
小编小编
Previous 2025年1月31日 13:27
Next 2025年1月31日 14:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注