首页 > 其他分享 >icmp介绍

icmp介绍

时间:2024-08-14 23:52:56浏览次数:5  
标签:ip 报文 ping 介绍 差错 主机 icmp

2.icmp介绍

icmp经常被人为是ip层的一个组成部分。它传递差错报文以及其他需要注意的信息。icmp报文通常被ip层或更高层协议(tcp或udp)使用。一些icmp报文把差错报文返回给用户进程。

icmp报文是在ip数据报内部被传输的。

icmp报文的格式如图6-2所示。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同,下面我们逐个介绍各种报文格式。

类型字段可以有15个不同的值,以描述特定类型的icmp报文,某些icmp报文还适用代码字段的值来进一步描述不同的条件。

检验和字段覆盖整个icmp报文,适用的算法与我们在3.2节中介绍的ip首部检验和算法相同。icmp的检验和是必需的。

icmp封装在ip数据报内部

icmp报文的类型

1.主机不可达

2.端口不可达

3.需要分片但设置了不分片比特

4.源站选路失败

5.由于过滤,通讯被强制禁止

6.重定向

icmp报文的类型(续)

不同类型由报文中的类型字段和代码字段来共同决定。

图中的最后两列表明icmp报文是一份查询报文还是一份差错报文。

当发送一份icmp差错报文时,报文始终包含ip的首部的产生icmp差错报文的ip数据报的前8个字节。这样,接受icmp差错报文的模块就会把它与某个特定的协议(根据ip数据报首部中的协议字段来判断)和用户进程(根据包含在ip数据报前8个字节中的tcp或udp报文首部中的tcp或udp端口号来判断)联系起来。

icmp差错报文

下面各种情况都不会导致产生icmp差错报文

1.icmp差错报文(但是,icmp查询报文可能会产生icmp差错报文。

2.目的地址是广播地址(见图3-9)或多播地址(d类地址,见图1-5)的ip数据报

3.作为链路层广播的数据报。

4.不是ip分片的第一片(将在11.5节介绍分片)

5.源地址不是单个主机的数据报,这就是说,源地址不能为零地址、换回地址、广播地址或多播地址。

这些规则是为了防止过去允许icmp差错报文对广播分组相应所带来的广播风暴。

icmp差错报文结构

当icmp报文返回时,为什么tftp客户程序还要继续重发请求呢,这是由于网络编程中的一个因素,即bsd系统不把从插口(socket)接收到的icmp报文中的udp数据通知用户进程,除非该进程已经发送了一个connect命令给该接口,标准的bsd tftp客户程序并不发送connect命令,因此永远不会受到icmp差错报文通知。

icmp端口不可达差错

最后两小结我们来讨论icmp查询报文--地址掩码和时间戳查询及应答,现在来分析一种icmp差错报文,即端口不可达报文,它是icmp目的不可到达报文中的一种,以此来看一看icmp差错报文中所附加的信息。

可以用tftp来强制生成一个端口不可达报文

3.ping介绍

ping这个名字源于声纳定位操作。ping程序由mike muuss编写,目的是为了测试另一台主机是否可达,该程序发送一份icmp回显请求报文给主机,并等待返回icmp回显应答。

可以用ping程序来确定问题出在哪里,ping程序还能测出到这台主机的往返时间,以表明该主机离我们有多远。

一台主机的可达性可能不只取决于ip层是否可达,还取决于使用何种协议以及端口号,ping程序的运行结果可能显示某台主机可不达,但我们可以用telnet远程登录到该主机的25号端口。

ping程序

我们称发送回显请求的ping程序为客户,而称被ping的主机位服务器,大多数的tcp/ip实现都在内核中直接支持ping服务器--这种服务器不是一个用户进程(在第6章中描述的两种icmp查询服务,地址掩码和时间戳请求,也都是直接在内核中进行处理的)

对于其他类型的icmp查询报文,服务器必须相应标示符和序列号字段,另外,客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。

unix系统在实现ping程序时是把icmp报文中的标示符字段置为成发送进程的id号,这样即使在同一台主机上同时运行了多个ping程序实例,ping程序也可以识别出返回信息。

在windows下,不管开多少个窗口ping的identifier都是相同的,而且每增加一个出去的ping包序列号增加256.(他能分清楚回来的包吗???)

标签:ip,报文,ping,介绍,差错,主机,icmp
From: https://www.cnblogs.com/smoke520/p/18359988

相关文章

  • tcp介绍.3
    1.tcp的成块数据流我们看到tftp使用了停止等待协议,数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认,本章我们介绍tcp所使用的被称为滑动窗口协议的另一种形式的流量控制方法,该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发一个分组就......
  • tcp介绍.2
    2msl等待状态time_wait状态也称为2msl等待状态,每个具体tcp实现必须选择一个报文段最大生存的时间msl(maximumsegmentlifetime).它是任何报文段被丢弃前在网络内的最长时间。msl为2分钟,然而,实现中的常用值是30秒,1分钟,或2分钟。对一个具体实现所给定的msl值,处理的原则是:当tcp执......
  • tcp介绍.1
    1.tcp介绍tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用tcp的应用(通常一个客户和一个服务器)在彼此交换数据之前必须先建立一个tcp链接。在一个tcp链接中,仅有两方进行彼此通信。tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接......
  • tcp介绍.4
    快速重传和快速恢复算法快速重传算法:如果一连串收到3个或3个以上的重复ack,就非常可能是一个报文段丢失了,于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。快速恢复算法:快速重传后执行的不是慢启动算法而是拥塞避免算法icmp的差错tcp能够遇到的最常见的icmp差错就是......
  • 推荐系统三十六式学习笔记:工程篇.效果保证31|推荐系统的测试方法及常用指标介绍
    目录为什么要关注指标推荐系统的测试方法1.业务规则扫描2.离线模拟测试3.在线对比测试4.用户访谈常用指标1.系统有多好?假设你已经有了自己的推荐系统,这个系统已经上线。为什么要关注指标面对推荐系统这样一个有诸多复杂因素联动起作用的系统,要时时刻刻知道它好不......
  • 一篇文章带你弄懂Python基础之列表介绍和循环遍历
    大家好,我是Go进阶者,今天给大家分享一些Python基础(列表基础和循环遍历介绍),一起来看看吧~一、列表介绍想一想:字符串可以用来存储一串信息,那么想一想,怎样存储所有同学的名字呢?定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?答:列表。1.列表的格式namesList=[......
  • 7.接口文档,JWT介绍
    【一】接口文档1)公司使用使用world编写MD共享文档第三方平台:如:https://www.showdoc.com.cn/公司自研2)主要内容如下说明变更记录全局错误相关接口简要描述请求URL请求方式参数返回示例返回参数说明备注3)字段生成(coreapi使用)安装pipinstal......
  • OpenGL 之EGL API 介绍
    EGL介绍EGL是OpenGLES和底层Native平台视窗系统之间的接口。OpenGLES本质上是一个图形渲染管线的状态机,而EGL则是用于监控这些状态以及维护Framebuffer和其他渲染Surface的外部层。EGL提供如下机制:与设备的原生窗口系统通信查询绘图表面的可用类型和配置创......
  • python之numpy(1 安装及基本介绍)
    numpy介绍numpy是Python中的一个非常流行的库,它提供了大量的数学函数工具,特别是针对数组和矩阵的操作。numpy的全称是NumericalPython,它极大地简化了数组和矩阵的运算,使得Python成为进行科学计算的一个强大工具。安装numpy要安装numpy,需在终端(win+r---->cmd)提示符下执......
  • LoadRunner常用函数介绍
    内置函数和Jmeter差不多,Jmeter更火,更好百度,毕竟开源,用的人多,所以有些函数如果不太懂用法,可以百度Jmeter作为参考来使用LR。 大家使用中应用函数不会的话留言就行,我开始用的时候反正不懂,不明白怎么使用,怎么应用,有和我一样的童鞋可交流脚本中常用函数事务组lr_start_transac......