电脑ping_网络工程师必懂-Ping,Tracert的工作原理和作用

a7f8f66ffdf1f9014031db6e88034af8.png

这章节我们要说的是一个三层(网络层)协议ICMP,那么什么是ICMP呢?

ICMP简介:

ICMP(Internet Control Message Protocol)ICMP是一个网络层协议,协议号(1),.是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议,Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。

那么ICMP有什么作用呢?

我们数据在网络中传输中,会封装成IP数据包,而IP协议的特点是面向无连接,且不可靠的,可靠性由上层来保证。IP协议所要做的就是尽最大努力把数据传输到目的地,如果当在路由器的转发中出错了而不能到达目的地时,IP协议对错误不进行任何报告和纠正,此时主机就不知道路由器那边有什么问题。而ICMP协议正好解决了这个问题。

ICMP主要有两种功能。

Ping:一般用于勘测到达目的网络的连通性

Tracert:用于确定ip数据包访问目标所采取的路径

一、Ping

我们知道有时候我们用电脑去ping一个ip地址,去测试一下对这个ip地址之间的连通性,那么ping是如何进行测试的呢?

Ping的工作过程

①首先ping命令会先发送一个 ICMP Echo Request(请求包)给对端
②对端接收到之后, 会返回一个ICMP Echo Reply(应答包)
③若没有返回,就是超时了,会认为指定的网络地址不存在。

举个例子

4cdfd52f77eadaace26bc2ed63d708d0.png

Pc1 ping PC2,我们在电脑上输入ping 192.168.1.2之后都发生了什么呢?

① Ping 命令会构建一个 固定格式的 ICMP 请求数据包(Echo Request)

② ICMP 协议将这个数据包,连同去往的地址,一起 交给IP 层协议

③ IP协议将本机作为源地址,去往的地址为目的,加上一些其他的控制信息,交给数据链路层协议

④数据链层封装源目MAC地址交给物理层

⑤物理层将其转换成二进制比特流发出

⑥目的主机将比特流转换为数据,收到Echo Request包开始拆包

⑦拆开最外层帧头,发现目的地址与自己相同,继续拆包

⑧继续拆开ip包头,发现协议号为(1),交给ICMP去处理

⑨ ICMP收到之后进行响应,回复Echo reply

我们在电脑上去ping一个地址的时候,不仅能够看到网络是否能够通讯,还能够看到为什么不能进行通讯,比如请求超时,目的不可达,请求被拒绝等等,那么我们的电脑是如何知道这些原因的呢?我们来看一下ping包长什么样子。

ICMP报文格式

4a9af99e2b3196cb579e53cf6c5874b7.png

1、ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和

2、ICMP所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。其它字段都ICMP报文类型不同而不同。

3、8位类型和8位代码字段一起决定了ICMP报文的类型

常用:

类型0,代码0:表示回显应答(ping应答)

类型8,代码0:表示回显请求(ping请求)。
类型11,代码0:超时

类型3,代码0:网络不可达

类型3,代码1:主机不可达

类型5,代码0:重定向

以上是ping如何去测试数据连通性,以及如何响应不通的原因,那么tracert是如何确定ip数据包访问目标所采取的路径呢?

二、Tracert

Tracert工作原理:

1.首先tracert送出3个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1,此时TTL等于0.

2. 所以该路由器会将此数据包丢掉,并送回一个ICMP time exceeded消息(TTL超时消息),里面包括发IP包的源地址,IP包的所有内容及路由器的IP地址

3. tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着tracert 再送出另一个TTL是2 的数据包,发现第2 个路由器.....以此类推

4. 当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息

5. 一旦到达目的地,由于tracert通过UDP数据包向不常见端口(30000以上)发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

Tracert每次发送三个数据包的原因是为了避免有时候网络不稳定而造成的丢包,所以发送三个,为了保证数据包能够正常到达。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值