TCP/IP协议族的网络层基础(5)——ICMP协议以及ping命令

ICMP协议(Internet Control Message Protocol,控制报文协议
ICMP的报文格式如下图

  • 8位类型字段用于区分报文类型。它将ICMP报文分为两大类:
    • 差错报文:主要用于回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5)
    • 查询报文:用于查询网络信息,比如ping命令就是使用ICMP报文查看目标是否可到达(类型值为8)的
  • 有的类型通过8位代码字段来进一步细分不同的条件:
    • 比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机重定向
  • ICMP报文使用16位校验和字段对整个报文(包括头部和内容部分)进行CRC校验(循环冗余校验),以校验报文是否损坏

ICMP协议的主要用途
  • 确认IP包是否到达目的地址
  • 通知发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作的,所以它并不是严格意义上的网络层协议(一般来说,上层协议使用下层协议服务),但是它并不是传输层的功能,因此被归为网络层协议
  • ICMP只能搭配IPv4工作,如果是IPv6,需要使用ICMPv6


下面我们来看一下ICMP协议的一个主要功能ICMP重定向
ICMP重定向报文在报文内容部分设置了两个字段
  • 引起重定向的IP数据报的源端IP地址
  • 应该使用的路由器的IP地址
接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓冲,而不是直接更改路由表)。一般来说,主机只能接收ICMP重定向报文,路由器只能发送ICMP重定向报文
    ICMP重定向同样能够更新路由表。


ping命令
ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。ping发送一个ICMP回声请求消息( ICMP Echo Request )给目的地并报告是否收到,所希望的 ICMP回声应答 ICMP Echo Reply )。它是用来检查网络是否通畅或者网络连接速度的命令

ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。

Windows进行ping命令

  • ping命令ping的是域名,不是url,域名可以被解析成IP地址,或者还可以直接ping IP地址
  • ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(生存时间,初始64,每经过一个节点就-1)
  • ping命令会先发送一个ICMP Echo Request给对端
  • 对端收到之后,会返回一个ICMP Echo Reply


ping命令的参数详解,在Windows的cmd命令行输入ping /?


注意Windows下的选项的意思和Linux下的选项的意思并不完全相同,一个很明显的区别就是Linux下的-s选项的意思是Windows下的-l选项的意思,即设置发送的包的大小,在Linux下怎么用具体看man手册


注意!!:ping命令不是一个端口,ping命令基于ICMP,是在网络层(ping命令是应用层的命令,ICMP在网络层),而端口号是传输层的内容,在ICMP根本不关心这样的东西




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值