目录
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报文
工作过程
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » ICMP协议(介绍,类型),ping命令原理+注意点,traceroute原理(原始套接字)
发表评论 取消回复