当前位置: 首页 > article >正文

【Linux】ICMP

一、ICMP协议

       ICMP协议是一个网络层协议,基于IP协议;一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否通畅;但是IP协议并不提供可靠传输。如果进行丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。

二、ICMP功能

ICMP的主要功能包括:

  • 确认IP报是否成功到达了目标地址
  • 通知在发送过程汇总IP报被丢失的原因
  • ICMP也是基于IP协议工作的,但是他并不是传输层的功能,因此人们仍然把它归结为网络层协议
  • ICMP只能搭配IPv4来使用,如果是IPv6的情况下,需要使用ICMPv6 

三、ICMP的报文格式

关于报文格式,了解一下即可:

ICMP大概分为两类报文:

  • 一类是通知出错原因
  • 一类是用于诊断查询
类型(十进制数)内容
0回送应答
3目标不可达
4原点抑制
5重定向或者改变路由
8回送请求
9路由器公告
10路由器请求
11超时
17地址子网请求
18地址子网应答

四、两个命令

4.1 ping命令

  • 在这里,ping的是域名。而不是url!!!一个域名可以通过DNS解析成IP地址。
  • ping命令不光可以验证网络的联通性,同时也会统计响应时间和TTL(IP报中的Time To Live,生存周期)。
  • ping命令会先发送一个ICMP Echo Request给对端
  • 对端接收到之后,会返回一个ICMP Echo Reply

4.2 traceroute命令

       这个命令也是基于ICMP协议实现的,能够打印出可执行程序主机,一直到目标主机之前经历多少路由器。

4.3 一个小坑

       有些面试官可能会问:telnet是23号端口,ssh是22号端口,那么ping是什么端口??千万注意:这是面试官的圈套。

       ping命令和traceroute命令都是基于ICMP协议的,是在网络层上的,但是端口号是传输层的内容,在ICMP中根本就不关注端口号这样的信息。


http://www.kler.cn/a/307858.html

相关文章:

  • C++ —— 哈希详解 - 开散列与闭散列
  • 实验5:网络设备发现、管理和维护
  • 基于java的航空机票预定管理系统
  • 浪潮信息“源”Embedding模型登顶MTEB榜单第一名
  • 多进程/线程并发服务器
  • 关于GCC内联汇编(也可以叫内嵌汇编)的简单学习
  • 【开端】docker基线漏洞修复
  • React-Hooks-Form 集成 Zod 校验库
  • go get -u @latest没有更新依赖模块
  • 如何通过深度学习实践来理解深度学习的核心概念
  • Ubuntu 24.04中安装virtualenv
  • QT + WebAssembly + Vue环境搭建
  • JS面试真题 part4
  • 【Spring框架精讲】进阶指南:企业级Java应用的核心框架(Spring5)
  • NX二次开发—批量导出点工具
  • html限制仅有一个音/视频可播放
  • 阿里云社区领积分自动打卡Selenium IDE脚本
  • How to see if openAI (node js) createModeration response “flagged“ is true
  • 代码随想录算法训练营第五十八天 | 拓扑排序精讲-软件构建
  • Arduino IDE离线配置第三方库文件-ESP32开发板
  • 8.JMeter+Ant(基于工具的实现接口自动化,命令行方式)
  • 常见的限流算法
  • 【C/C++】程序的构建(编译)过程概述
  • 【C++】函数重载
  • Python使用pymysql返回字典类型的数据
  • yum本地源配置