目录

ICMP协议

引入

介绍

类型

ping命令

介绍

​编辑

原理

注意点 

traceroute

介绍

原理

原始套接字

工作过程


ICMP协议

引入

一个新搭建好的网络 , 往往需要先进行一个简单的测试 , 来验证网络是否畅通
  • 但是IP协议并不提供可靠传输,如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因
  • 所以需要在两层之间再加一个协议

也许你会觉得有tcp不就够了吗,为什么非要再加一层

  • 实际上,他俩负责的功能完全不一样,可以互补
  • tcp负责端到端数据传输的可靠性,并控制传输 ; 而这里的icmp协议只负责网络错误类型等报告,它本身不具有可靠性

其实,在网络协议栈中,除了物理层之外,都有自己的错误检测和报告功能

介绍

属于网络层协议,tcp/udp之下,ip之上

主要功能有:

如果没有icmp协议,遇到下面这种情况就只能等触发tcp的超时重传机制,甚至可能触发多次后依然未果,它也无法知道到底是咋的了

  • 有了icmp协议后,至少如果是在网络层出的问题,上层是可以知晓的

类型

分为两类报文:

  • 一类是通知出错原因
  • 一类是用于诊断查询

报文具体类型:

ping命令

介绍

网络诊断工具,用于测试网络连接性和测量往返时间

  • ping命令底层使用的就是ICMP协议
  • ping的是域名, 而不是url
  • ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)

原理

  • ping命令会先发送一个 ICMP Echo Request给对端 , 对端接收到之后, 会返回一个ICMP Echo Reply
  • 往返时间是接收到应答的时间 - 发送请求的时间

注意点 

因为ping命令基于ICMP协议(网络层),所以这个服务没有端口号(传输层)的概念,和ssh,telnet不一样

traceroute

介绍

用于跟踪数据包从源主机到目标主机的路径

原理

一直发送ICMP报文,一旦对方接收,就会返回一个应答,从而可以知道会经过哪些路由器(ip地址+使用时间),而这个报文是结合原始套接字创建并发送的

原始套接字

是网络编程中一种特殊的套接字类型

  • 允许程序员直接访问和操作网络层协议(如IP)和传输层协议(如ICMP、TCP、UDP)的数据包
  • 这种套接字提供了比标准套接字(如TCP和UDP套接字)更多的控制权限,适用于需要低级别网络操作的应用程序,比如网络监控、诊断工具以及安全分析工具

traceroute通过原始套接字绕过传输层,直接构建ICMP报文

工作过程

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部