TCP/IP协议之ICMP协议
一、定义
ICMP协议(Internet Control Message Protocol)是Internet控制消息协议,用于在IP主机、路由器之间传递控制消息。这些控制消息虽然不是用户数据,但是,对于保证用户数据的正确传输有着重要的作用。
二、特点
1、ICMP出现的背景
IP协议完成了数据在各主机间的递交,但是,IP协议是一种无连接的不可靠的数据交付,IP协议不提供任务错误校验和恢复机制。因此,设计了ICMP协议弥补上诉缺陷。
2、ICMP报文封装
ICMP封装在IP报进行传输。ICMP报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。在IP数据报报头中的协议(Protocol)字段设置成1,表示该数据是ICMP报文。
三、ICMP报文格式
(2)代码(Code)字段,长度是1字节,表示发送这个特定报文类型的原因。
(3)校验和(Checksum)字段,长度是2字节,用于数据报传输过程中的差错控制。与IP报头校验和的计算方法类似,不同的是其是对整个ICMP报文进行校验。
(4)报头的其余部分,其内容因不同的报文而不同。
(5)数据字段,其内容因不同的报文而不同。对于差错报告报文类型,数据字段包括ICMP差错信息和触发ICMP的整个原始数据报,其长度不超过576字节。
具体如下图:
IP包首部要被传回的原因,因为IP首部中包含了协议字段,使得ICMP可以知道如何解释后面的8个字节。而IP首部后面的8字节(UDP的首部或者TCP首部,UDP和TCP首部的8个字节分别包含了16位的目的端口号和源端口号),根据源端口号就可以把差错报文与某个特定的用户进程关联。
1)目的站不可达报文
当路由器不能给数据报找到合适的路由路径,或者主机不能将数据报递交给上层协议时,相应的IP数据报就会被丢弃,然后产生一个目的站不可达差错控制报文给源主机。
2)数据报超时报文
在数据报的传输过程中,首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输。当TTL值为0时,路由器会丢弃当前的数据报,并产生一个 ICMP数据报超时报告。另外在信宿进行分片重组时会启动重组定时器,一旦重组 定时器超时,信宿就会丢弃当前正在重组的数据报,然后产生一个ICMP数据报超 时报告,并向信源发送该超时报告。
数据报超时报告的类型和代码的含义如表所示。类型值11表示是数据报超时报文,代码“0”表示TTL超时,代码“1”表示分片重组超时。
(2)常见的查询报文详解
只讲述回送请求或会送应答报文。
该报文用于确定两个网络设备之间是否能够正常通讯。主机或路由器向某个目的主机发送ICMP回送请求报文,任何收到回送请求的目的主机都会生成一个回送应答报文,并发返回给源主机。
3、不会导致产生ICMP差错报文的情况
1、ping原理
ping的本质是ICMP回送请求报文和回送应答报文。
2、tracert原理
tracert程序的设计是利用ICMP及IP header的TTL(Time To Live)字段。
首先,Tracert送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),Tracert收到这个消息后,便知道这个路由器存在于这个路径上,接着Tracert再送出另一个TTL是2 的datagram,发现第2 个路由器...... Tracert每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了。
TCP/IP协议之ICMP协议相关推荐
- wireshark的使用教程--用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的
wireshark的使用教程 --用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的 wireshark是一款抓包软件,比较易用,在平常可以利用它抓包,分析协议或者监控网络,是一个比较好的 ...
- TCP/IP详解--五层协议的作用以及对应的设备
网络协议分层: l链路层:有时也称作链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.他们一起处理与电缆的物理接口细节. 网络层:有时也称为互联网层,处理分组在网络中的活 ...
- 网络:TCP/IP各层的协议
教程书上虽然介绍了这些协议,但是就单个协议分别介绍的,很容易忘了这个协议属于那一层,以及属于底层哪个协议. 上图TCP/IP各层的协议很多,一张图就可以记住了. 应用层协议 0. 运行 在TCP\U ...
- OSI 七层模型和TCP/IP模型及对应协议
OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...
- 08_使用TCP/IP Monitor监视SOAP协议
[SOAP定义] SOAP 简单对象访问协议,基于http传输xml数据,soap协议体是xml格式. SOAP 是一种网络通信协议 SOAP 即Simple Object Access ...
- java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计
[JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...
- OSI 七层模型和TCP/IP模型及对应协议(详解)
OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...
- 物联网平台 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 数据实时采集和远程控制
物联网平台源码 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 系统包括,后台服务,传感器解析服务.web展示,文档齐全. 目前web系统支持功能,: 数据实时采集和远程控制: 报警信息管 ...
- 计算机网络之网络层:5、DHCP协议、ICMP协议、网络地址转换NAT
网络层:5.DHCP协议.ICMP协议.网络地址转换NAT TCP/IP协议栈: IP获取方式: NAT网络地址转换: DHCP工作流程: ICMP协议: ICMP报文格式: ICMP报文类型: IC ...
- Linux·DNS协议、ICMP协议、NAT技术
目录 DNS协议 DNS背景 编辑域名简介 域名解析过程 使用dig工具分析DNS过程 ICMP协议 ICMP功能 ICMP协议格式 编辑ping命令 一个值得注意的坑 traceroute命令 ...
最新文章
- 二分查找的循环实现和递归实现
- 怎样在Python中执行cmd
- JAVA Builder模式构建MAP/LIST的示例
- Windows server 2008,Windows server 2008 R2,Windows 2008 SP2 区别
- js如何获取文本节点的值?
- id、构造方法、Category 分类、类的本质、description方法、SEL
- Linux学习笔记(三)|Vim编辑器
- 牛客题霸 [拼接所有的字符串产生字典序最小的字符串] C++题解/答案
- 作者:房毓菲(1990-),女,就职于国家信息中心信息化研究部,中国智慧城市发展研究中心政策研究组副组长。...
- spark学习-75-源代码:Endpoint模型介绍(6)-Endpoint的消息的接收(2)
- 长春理工大学计算机学院转专业,长春理工大学优秀本科学生转专业面试考核方案.PDF...
- [转载红鱼儿]kbmmw 开发点滴:kbmMW在事务中批量执行SQL
- emacs org-mode 常用命令
- 从零开始学习使用FPGA控制ADF4351芯片
- 程序员今年最值得关注的 23 种新移动技术
- 翻译: 巴菲特公式:睡觉比醒来更聪明
- 各学科门类研究生专业深度分析
- Mr.Xiong使用jQuery实现时钟表盘的效果
- Windows 内网渗透之攻击域控
- java毕业设计中国民航酒店分销系统Mybatis+系统+数据库+调试部署