【计算机网络】网络层协议 -- ICMP协议

文章目录

  • [1. ICMP协议简介](#1. ICMP协议简介)
  • [2. ICMP协议格式](#2. ICMP协议格式)
  • [3. ping命令](#3. ping命令)
  • [4. ping命令与端口号没有关系!!!](#4. ping命令与端口号没有关系!!!)
  • [5. traceroute命令](#5. traceroute命令)

1. ICMP协议简介

ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机、路由器直接传递控制消息,是一个TCP/IP协议。

ICMP协议的定位

网络层的最典型的协议是IP协议,但是除了IP协议之外,还有ICMP协议和IGMP协议。

ICMP、IGMP和IP协议虽然都属于网络层的协议,但是ICMP协议和IGMP协议属于IP的上层协议。

  • 也就是说,IP的上层协议不一定就是传输层协议,IP的上层协议可能也属于网络层的协议。
  • 与之类似的,数据链路层当中的ARP协议和RARP协议,这两个协议虽然都属于数据链路层的协议,但它们却是MAC帧的上层协议。

ICMP的主要功能

  1. 确认IP包是否成功到达目标地址。
  2. 通知在发送过程中IP包丢弃的原因。
  3. ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6。

举个例子,比如当主机A在向主机B发送数据的过程中,主机B因为某些原因离线了,然后当发送的数据包到达主机B所在局域网的入口路由器时,入口路由器为了获得主机B的MAC地址,于是会向主机B发送ARP请求包。但是此时因为主机B已经离线了,因此路由器再多次发送ARP请求包得不到响应后,就会返回一个ICMP的包给主机A,此时主机A就知道自己发送的数据无法到达主机B。

2. ICMP协议格式

ICMP分为两类报文:

  1. 一类是通知出错原因的
  2. 一类是用于诊断查询的

3. ping命令

ping命令是基于ICMP实现的,通常用于测试本地主机与另一台主机之间的通信信道是否正常。

例如,使用ping www.baidu.com命令,测试本地主机与百度服务器之间的通信信道是否正常。

  • 此时ping的是百度的域名,该域名会由DNS解析为IP地址。
  • ping命令不仅能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存时间)。
  • ping命令会先发送一个ICMP Echo Request给对端。
  • 对端接收到之后,会返回一个ICMP Echo Reply给客户端。

4. ping命令与端口号没有关系!!!

telnet对应的端口号是23,ssh对应的端口号是22,ping命令对应的端口号是多少?

这个问题就是一个圈套!ping命令是基于网络层的ICMP协议,而端口号是属于传输层的内容,因此ICMP协议根本就不关心端口号这样的信息。

5. traceroute命令

traceroute命令也是基于ICMP协议实现的,traceroute命令可以遍历数据包传送到目标主机锁经过的所有路由器。

例如,使用traceroute www.baidu.com命令,遍历数据包到百度服务器所经过的所有路由器。

原理:

  • traceroute命令底层实际是通过增加其存活实际(TTL)值来实现的。
  • 因为每当数据包经过一个路由器,其TTL值就会减一,当TTL值减为0时对应路由设备就会将数据包丢弃,并传送一个ICMP TTL数据包给发送主机。
  • 因此traceroute命令底层可以发出多个数据包,并给这些数据包设置不同的TTL值,最后该主机就能够得到一连串的数据包路径。
相关推荐
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
Hacker_Fuchen1 小时前
天融信网络架构安全实践
网络·安全·架构
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
ProtonBase1 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
fantasy_arch11 小时前
CPU性能优化-磁盘空间和解析时间
网络·性能优化
njnu@liyong12 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
GISer_Jing12 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
ZachOn1y12 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
是Dream呀13 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络
kaixin_learn_qt_ing13 小时前
了解RPC
网络·网络协议·rpc