ping命令和tracert命令的作用_ping命令有哪些

ping命令和tracert命令的作用_ping命令有哪些本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明。这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解。这些也是很基础的东西,没什么高深的。Ping这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通。Ping程序实际就是发送一个ICMP回显请求报文(就是请求别人收到这个报文之后回显)给目的主机,并等待回显的ICM…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明。这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解。这些也是很基础的东西,没什么高深的。
Ping
这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通。Ping程序实际就是发送一个ICMP回显请求报文(就是请求别人收到这个报文之后回显)给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。Ping不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。 C:\Documents and Settings\snoopy> ping 202.103.176.22 /t Pinging 202.103.176.22 with 32 bytes of data: Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 Reply from 202.103.176.22: bytes=32 time=6ms TTL=58
PING得到的结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。在返回的报文显示的TTL值表示从目标主机到源主机剩下的跳数。 Tracert
首先,要知道一个路由器的原理:当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机,这个信息会带上自己的接口地址。(当路由器接收到TTL=1的数据包时,它会将
TTL值减1,这时TTL值减为0,路由器将会丢弃该报文并向源点发送错误信息。这个方法可以防止报文在互联网上无休止的传输,所以网络中根本就不会有TTL=0的报文)
一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由。 Tracert利用ICMP数据报和IP数据报头部中的TTL值来实现。TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。 当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,目标主机的UDP模块(别的主机的不会做出反应)就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。
有说法是利用ping得到的TTL值来判断主机类型,这种办法可以大概地用来判断,有人问为什么一般得到的都不是标准的TTL值。这个就是因为ICMP数据包走的路由器线路的原因,所以,用ping 和 tracert 一起来用更容易判断主机类型(不过并不一定两次走的路线都一样,所以,还是个大概值,不过更接近点,而且主机的默认TTL值是可以改变的)。
tracert命令查看某个地址,得到的时间有3个如下 比如: 26ms 10ms 10ms.
表示发送的三个探测包的回应时间;一般在网络情况平均的情况下,三个时间差不多;如果相差比较大,说明网络情况变化比较大.
也就是说,tracert每次返回的时间都是从出发点到目的路由器的所花费的时间,因为中间是包的转发,所以花费的时间很少,而且有些路由器负荷比较大,响应时间比较长,也就有可能出现前面的路由器返回的时间比后面一跳路由器返回的时间还要长的情况。

ping和tracert的原理:

1、PING命令主要作用是测试2台设备网络层之间是否。
其工作原理:假设A路由器PING B路由器,A路由器会先发一个ICMP ECHO报文(TYPE=8,CODE=0),如果2台设备 之间路由是可达的,B收到后会回一个ICMP REPLY的报文(TYPE=0,CODE=0)。ping命令也可以显示经过的跳数,
这样也可以通过PING命令查看我经过了哪几跳,每一跳的IP地址,命令参数是-R。但不是所有的路由器均支持该
命令,并且IP首部中留给选项的空间有限,不能存放太多的路径,一般最多就只能存放9个IP地址。

2、TRACERT命令主要作用和PING -R的作用一样,是测试2台设备之间经过的跳数和每一跳的IP地址。其工作原 理分2种情况说明:

1)假设A是一台PC机,由A来TRACERT B,A首先会发送一个ICMP ECHO的报文(TYPE=8,CODE=0), 并且该报 文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP超时的报文(TYPE=11,CODE=0),然后
A会在发送一个ICMP ECHO的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。当报文到达B后,B会
回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)。

2)假设A是一台路由器,由A来TRACERT B,A首先会发送一个UDP报文,并且UDP的端口号大于30000以保证这个
端口号在B上未被占用,该报文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP超时的报文

(TYPE=11,CODE=0),然后A会在发送一个UDP的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。
当报文到达B后,B会回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)


作者:很吵请安静
来源:CSDN
原文:https://blog.csdn.net/qq_30448629/article/details/51357497
版权声明:本文为博主原创文章,转载请附上博文链接!

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189967.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 从零开始学android<Notification通知.四十四.>

    从零开始学android<Notification通知.四十四.>在android中有时会在主界面上收到某些应用的推送,有的可以包含图片,声音或者震动效果,当点击这些提示时,有时还可以进入到发送提示的的应用。这些提示的推送就是通知,当然通知早根本上也是你一种服务。首先想要使用通知就必须使用到Notification.Builder和NotificationManager这两个类使用Notification.Builder来取

    2022年6月16日
    25
  • 11111111

    1111111111111111

    2022年4月20日
    43
  • windows10adb环境配置(adb shell命令)

    win10最新版adb环境变量配置

    2022年4月10日
    325
  • 数据库备份与恢复方案「建议收藏」

    数据库备份与恢复方案「建议收藏」数据安全性随着计算机的普及和信息技术的进步,特别是计算机网络的飞速发展,信息安全的重要性日趋明显。数据备份是保证信息安全的一个重要方法。只要发生数据传输、数据存储和数据交换,就有可能产生数据故障。这时

    2022年8月4日
    5
  • sql聚合函数的使用「建议收藏」

    sql聚合函数的使用「建议收藏」1.selectcount(*)fromtable;这个是统计查询出来的数据数量2.selectmin(id)fromtable;取出数据中id最小的值3.selectmax(id)fromtable;取出数据中id最大的值4.selectMOD(125,10);取余数5.selectfloor(columns)fromtablewherecondition;从取出的数据中向下取整,比如你取到的数据是45.8,那么通过floor函数处理之后,打印出来的就是4

    2022年6月21日
    23
  • Mysql存储过程基本语法

    Mysql存储过程基本语法Mysql存储过程基本语法转载自这篇文章delimiter//一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。一.创建存储过程1.基本语法:createproceduresp_name()begin………end2.参数传递二.调用存储过程1.基本语法:ca…

    2022年7月17日
    15

发表回复

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

关注全栈程序员社区公众号