它是如何工作的-ping命令背后的网络协议

教程大全 2026-03-02 08:47:18 浏览

酷番云安全实践 :酷番云平台默认安全组策略对云服务器入站ICMP采取“白名单+速率限制”策略,允许公网入站回显请求(Type 8),但默认限制为每秒5个包,有效缓解扫描和微小泛洪攻击,客户可按需调整,或结合云防火墙WAF的AI异常流量检测模块,自动识别并拦截基于ICMP的复杂攻击模式。


TCP,UDP,ICMP是什么意思啊?

ICMP英文原义:Internet Control Message Protocol中文释义:(RFC-792)Internet控制消息协议注解:该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。 当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。 我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。 应用:要使用该协议,我们可以进行相应的ICMP设置,比如在Windows XP中,首先打开“网络连接”,右键单击启用Internet连接防火墙的“网络连接”,选择“属性”打开属性窗口。 接着,选择“高级”选项卡,单击右下角“设置”按钮。 然后,在高级设置窗口中选择“ICMP”选项卡,在其中就可以进行相应的设置,包括允许传入的回显请求等。 ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。 它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。 这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。 比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。 还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 ICMP的重要性ICMP协议对于网络安全具有极其重要的意义。 ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机.比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。 “Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。 此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。 大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。 应对ICMP攻击虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。 只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。 对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。 设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。 Vista系统常用英文专业词语ICMP,互联网控制信息协议(Internet CONTROL Message Protocol),用于错误报告和调试。 ICMP回应请求,并回应流行的Ping命令所使用的回复信息。

它是如何工作的

ping这个命令怎么用,它的作用是什么呢?

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 指定的计算机列表路由数据包。 连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 -w timeout 指定超时间隔,单位为毫秒。 destination-list 指定要 ping 的远程计算机。 Ping的返回信息有Request Timed Out、Destination Net Unreachable和Bad IP address还有Source quench received。 Request Timed Out这个信息表示对方主机可以到达到TIME OUT,这种情况通常是为对方拒绝接收你发给它的数据包造成数据包丢失。 大多数的原因可能是对方装有防火墙或已下线。 Destination Net Unreachable这个信息表示对方主机不存在或者没有跟对方建立连接。 这里要说明一下destination host unreachable和time out的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现time out,如果路由表中连到达目标的路由都没有,那就会出现destination host unreachable。 Bad IP address 这个信息表示你可能没有连接到DNS服务器所以无法解析这个IP地址,也可能是IP地址不存在。 Source quench received信息比较特殊,它出现的机率很少。 它表示对方或中途的服务器繁忙无法回应。 怎样使用Ping这命令来测试网络连通呢? 连通问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备等造成的故障。 首先我们讲一下使用Ping命令的步骤。 使用Ping检查连通性有五个步骤: 1. 使用ipconfig /all观察本地网络设置是否正确; 2. Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好; 3. Ping本机IP地址,这样是为了检查本机的IP地址是否设置有误; 4. Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略) 5. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。 在检查网络连通的过程中可能出现一些错误,这些错误总的来说分为两种最常见。 1. Request Timed Out request time out这提示除了在《PING(一)》提到的对方可能装有防火墙或已关机以外,还有就是本机的IP不正确和网关设置错误。 ①、IP不正确: IP不正确主要是IP地址设置错误或IP地址冲突,这可以利用ipconfig /all这命令来检查。 在WIN2000下IP冲突的情况很少发生,因为系统会自动检测在网络中是否有相同的IP地址并提醒你是否设置正确。 在NT中不但会出现request time out这提示而且会出现Hardware error这提示信息比较特殊不要给它的提示所迷惑。 ②、网关设置错误:这个错误可能会在第四个步骤出现。 网关设置错误主要是网关地址设置不正确或网关没有帮你转发数据,还有就是可能远程网关失效。 这里主要是在你Ping外部网络地址时出错。 错误表现为无法Ping外部主机返回信息Request timeout。 2. Destination Host Unreachable 当你在开始PING网络计算机时如果网络设备出错它返回信息会提示destination host unreachable。 如果局域网中使用DHCP分配IP时,而碰巧DHCP失效,这时使用 PING命令就会产生此错误。 因为在DHCP失效时客户机无法分配到IP系统只有自设IP,它往往会设为不同子网的IP。 所以会出现Destination Host Unreachable。 另外子网掩码设置错误也会出现这错误。 还有一个比较特殊就是路由返回错误信息,它一般都会在Destination Host Unreachable前加上IP地址说明哪个路由不能到达目标主机。 这说明你的机器与外部网络连接没有问题,但与某台主机连接存在问题。 举个例子吧。 我管理的网络有19台机,由一台100M集线器连接服务器,使用DHCP动态分配IP地址。 有一次有位同事匆忙地告诉我我的OUTLOOK打不开了,我到他机器检查,首先我检查了本地网络设置,我用ipconfig /all看IP分配情况一切正常。 接着我就开始PING网络中的其中一台机器,第一次PING结果很正常,但OUTLOOK还是无法使用其它网络软件和Copy网络文件都可以使用但网络速度很慢,第二次PING我用了一个参数-t(-t可以不中断地PING对方,当时我想PING一次可能发现不了问题)发现有time=30ms和request time out,从服务器PING这台机就更有趣,request time out比正常数据还多,在局域中竟然有time=30ms和request time out太不正常了。 开始我认为是网卡的问题但换网卡后故障依旧,重做网线还是不能解决问题,这故障真有趣!最后我没办法了把它插在集线器端口上的另一端的网线换到另一个端口,哈!故障解决了。 原来是集线器端口坏了。 如何用Ping命令来判断一条链路的速度? Ping这个命令除了可以检查网络的连通和检测故障以外,还有一个比较有趣的用途,那就是可以利用它的一些返回数据,来估算你跟某台主机之间的速度是多少字节每秒 我们先来看看它有那些返回数据。 Pinging 202.105.136.105 with 32 bytes of data: Reply from 202.105.136.105: bytes=32 time=590ms TTL=114 Reply from 202.105.136.105: bytes=32 time=590ms TTL=114 Reply from 202.105.136.105: bytes=32 time=590ms TTL=114 Reply from 202.105.136.105: bytes=32 time=601ms TTL=114 Ping statistics for 202.105.136.105: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 590ms, Maximum = 601ms, Average = 593ms 在例子中bytes=32表示ICMP报文中有32个字节的测试数据(这是估算速度的关键数据),time=590ms是往返时间。 怎样估算链路的速度呢?举个例子吧。 我们把A和B之间设置为PPP链路。 从上面的PING例子可以注意到,默认情况下发送的ICMP报文有32个字节。 除了这32个字节外再加上20个字节的IP首部和8个字节的ICMP首部,整个IP数据报文的总长度就是60个字节(因为IP和ICMP是Ping命令的主要使用协议,所以整个数据报文要加上它们)。 另外在使用Ping命令时还使用了另一个协议进行传输,那就是PPP协议(点对点协议),所以在数据的开始和结尾再加上8个字节。 在传输过程中,由于每个字节含有8bit数据、1bit起始位和1bit结束位,因此传输速率是每个字节2.98ms。 由此我们可以估计需要405ms。 即68*2.98*2(乘2是因为我们还要计算它的往返时间)。 我们来测试一下 b/s的链路: Pinging 202.105.36.125 with 32 bytes of data: Reply from 202.105.36.125: bytes=32 time=415ms TTL=114 Reply from 202.105.36.125: bytes=32 time=415ms TTL=114 Reply from 202.105.36.125: bytes=32 time=415ms TTL=114 Reply from 202.105.36.125: bytes=32 time=421ms TTL=114 Ping statistics for 202.105.36.125: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 415ms, Maximum = 421ms, Average = 417ms 看是不是差不多啊。 ^_^ 这里大家可能要注意到,这估算值跟实际值是有误差的,为什么呢?因为我们现在估算的是一个理论值,还有一些东西我们没有考虑。 比如在网络中的其它干扰,这些干扰主要来之别的计算机。 因为在你测试时不可能全部计算机停止使用网络给你做测试,这是不实际的。 另外就是传输设备,因为有某些设备如MODEM它在传输时会把数据压缩后再发送,这大大减少了传输时间。 这些东西产生的误差我们是不能避免的,但其数值大约在5%以内我们都可以接受(利用MODEM传输例外),但是可以减少误差的产生。 比如把MODEM的压缩功能关闭和在网络没有那么繁忙时进行测试。 有时候误差是无须消除的。 因为我们需要这些误差跟所求得的理论值进行比较分析,从而找出网络的缺陷而进行优化。 这时测试网络的所有数据包括误差都会成为我们优化的依据。 还要注意,这种算法在局域网并不适用,因为在局域网中速度非常的快几乎少于1ms,而Ping的最小时间分辨率是1ms,所以根本无法用Ping命令来检测速度。 如果想测试速度那就要用专门仪器来检测。 总的来说,Ping命令是一个在故障检查方面很有用而且很便利的工具,你不应该忽视它的存在。

网络传输有几种方式和协议

传输主要是使用tcp 和 udp协议~~从专业的角度说,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。 而UDP就没有了,所以不可靠。 不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,HTTP是用TCP协议传输的,不用我说什么,自己体验一下就能发现区别了。 再有就是UDP和TCP的目的端口不一样(这句话好象是多余的),而且两个协议不在同一层,TCP在三层,UDP不是在四层就是七层。 TCP/IP协议介绍TCP/IP的通讯协议这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。 TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。 确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。 传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。 该模型的目的是使各种硬件在相同的层次上相互通信。 这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。 而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如EThernet、Serial Line等)来传送数据。 TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:1. IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。 IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。 IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。 也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。 IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。 对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。 这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。 那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 2. TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。 TCP将包排序并进行错误检查,同时实现虚电路间的连接。 TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。 应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。 DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。 与TCP位于同一层,但对于数据包的顺序错误或重发。 因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。 相对于FTP或Telnet,这些服务需要交换的信息量较小。 使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。 与IP位于同一层,它被用来传送IP的的控制信息。 它主要是用来提供有关通向目的地址的路径信息。 ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。 另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。 PING是最常用的基于ICMP的服务。 5. TCP和UDP的端口结构TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。 用户使用Telnet客户程序与服务进程建立一个连接。 客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。 因而,这个连接是双工的,可以用来进行读写。 两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:源IP地址 发送包的IP地址。 目的IP地址 接收包的IP地址。 源端口 源系统上的连接的端口。 目的端口 目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。 一个端口对应一个16比特的数。 服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。 这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐