(一)网络编程之ping

2018-10-23  本文已影响0人  蓝Renly

Packet Internet Grouper/Gopher

关于网络编程这块,在聊之前,做个小实验;

Windows+R 打开CMD窗口,

输入ipconfig,你可以看到下面内容,也就是你的ip地址了;


那么,下一步,输入ping 空格 上面显示的任意一个ipv4地址,可以看到下面结果:

ping.PNG

再看一下ping简书网站的成功和失败是什么样子的:

pingJianShuFail.PNG
pingJianShuSucess.PNG

注意:我多次试验ping了简书的网址,IP地址多次也都不同.这说明了生命?说明简书应该是采用分布式应用系统.@@*
然后我就对立面的一些内容感到好奇了.比如TTL=128是什么意思?数据包已发送/已接收/丢失等内容是什么意思?于是我就上网各种一顿查,再加上自己反复试验,尝试着用最简单易懂的说一下:

TTL:(Time To Live),我网上查了很多,基本都是给一些硬性的定义,我认为通过实验再逐步的去分析理解比较好!

那么我们来分析一下,对比上面图片,你会发现我访问本地的TTL数值是128,而访问简书的TTL是56,这其实是因为我用的是windows系统,系统默认的TTL缺省值是128,而linux系统TTL默认是64.通常这些网站的服务器也基本都是使用的linux系统.那么访问简书网站就出现了64-56=8这么一个数值了.

这个8是什么呢?其实就是我访问简书网站所经过的路由器数:8.那么也就是说,我在访问某个网站时,每经过一个路由,我的TTL值就会减1(基本都是1),当TTL=0时呢?就会给用户返回一个类似错误信息的报文.

那么为什么要这么做呢?很显然,这样就不会无限循环的去转发了.利用TTL值解决了这个问题.

TTL网络查的普遍的定义:代表数据在网络中长时间没有响应被丢弃时经过的最大的路由器数量 ;

把这个定义结合上面我们实验和分析的结果,我们可以知道TTL的作用是:避免了请求数据包在网络中无限请求循环的情况出现,从而保证额网络上并不会因为这种无限次的请求而拥堵.

那么网络上说的TTL指定数据包被路由器丢弃之前允许通过的最大网段数量,是IP数据包在网络中可以转发的最大跳数(跃点数) ;我想大家应该就可以理解了.

并且TTL数值可以在本机上进行设置,当然,从上面分析,我们可以知道TTL数值并不是越大越好,也不是越小越好,根据具体场景具体的使用来设定是较为准备的.

TTL实际中可以做什么呢?比如,你想要有个自己的独立网站,然后将自己的程序部署到了你的服务器上,这个时候,你ping一下你的网站地址,然后得到一个TTL值,再用64-TTL=m,等等,为什么要用64来减?因为,一般服务器都是使用linux系统;这个m如果特别的小,那么就代表经过的路由很多,你的这个网站就不太好!!!

那么图片中显示的数据包:

​ 数据包:已发送=4,已接收=4,丢失=0,

往返行程的估计时间(ms):

​ 最短 = 128ms, 最长 = 166 ms,平均= 143ms;

这个是什么呢???也就是ICMP数据包,报文.

网上看,说数据包里面是包含了请求,响应,重定向,时间戳等信息,至于数量4是默认.我大概是了解了,但如果操作起来,可能就需要抓包工具将数据抓取出来了,最近时间不太充足,后面就机会再抓把.

关于ping:
ping是一种计算机网上工具,用来测试数据包能否透过IP协议到达特定主机。ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接收echo回应数据包。程序会按时间和成功响应的次数估算丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)。

在1983年12月,Mike Muuss编写了首个这样的程序,用于在IP网上出现问题时方便探查其根源。因为这个程序的运作原理与潜水艇的主动声纳相似,他便用声纳的声音来为程序取名。David L. Mills曾提出另一个取名:Packet Internet Grouper/Gopher(后者指地鼠
------------来自Wiki

感兴趣的话,还可以去了解一下死亡之ping,ping洪泛攻击.

如果描述的有什么问题,还望指正!

上一篇下一篇

猜你喜欢

热点阅读