第7章 网络层协议(2)_ICMP协议

2. ICMP协议

2.1 ICMP报文(Internet Control Message Protocol)的类型


报文类型


类型值


代码


描述


请求报文


8


0


请求回显报文


响应报文


0


0


回显应答报文


差错报告报文


3

(终点不可到达)


0


网络不可达


1


主机不可达


2


协议不可达


3


端口不可达


4


需要进行分片但设置了不分片


13


由于路由器过滤,通信被禁止


4


0


源端被关闭


5

(改变路由)


0


对网络重定向


1


对主机重定向


11


0


传输期间生存时间(TTL)为0


12

(参数问题)


0


坏的IP首部


1


缺少必要的选项

(1)ICMP报文用于在IP主机、路由器之间传递控制消息。如网络通不通、主机是否可到达、路由是否可用等网络本身的消息

(2)ICMP差错报文共5种

  ①终点不可到达:当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。

  ②源点抑制:当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应降低数据包的发送速率。

  ③时间超时:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据片时,就把己收到的数据报片都丢弃,并向源点发送时间超时报文。

  ④参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

  ⑤改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

2.2 ICMP报文格式

(1)ICMP报文格式

(2)ICMP差错报文

  ①ICMP差错报文中的数据字段具有同样的格式,即ICMP数据部分=收到的IP数据报的首部和数据字段的前8个字节)

  ②提取数据报中数据字段的前8个字节是为了得到传输层的端口号(对于TCP和UDP)以及传输层报文的发送序号(对于TCP)。这些信息对源点通知高层协议是有用的。

  ③整个ICMP差错报文=ICMP的前8个字节+ICMP数据部分,作为IP数据报的数据字段发送给源点。

2.3 ICMP差错报告报文:路由重定向

(1)PC1的网关设置为R1的f0/0接口地址(192.168.1.1)。当PC1给PC3发送数据包时,会发送给R1,再经R1转发给R3。这样效率不高。

  ①三层交换机端口默认为二层口,接口配置模式下使用不带参的switchport命令把一个接口设置为2层模式。如果需要启用三层功能就需要在此端口输入no switchport命令。

  ②在配置R3路由器的f1/0地址前,要执行no swichport命令,才可以进一步配置接口地址。

(2)当出现这种现象时,路由器R1会把第1个数据包转发给R3,然后给PC1发送一个ICMP重定向数据包,告诉PC1到达主机192.168.2.2,下一跳为192.168.1.254.这样PC1增加一条到192.168.2.2的路由,下一跳指向192.168.1.254(注意,是到一个主机,而不是到192.168.2.0/24整个网段的路由)。以后的数据包就直接发到R3的f0/0的接口。

(3)主机和路由器对于重定向报文的不同处理原则

  ①路由器一般会忽略ICMP重定向报文

  ②主机对于重定向报文的处理取决于操作系统。对于Windows操作系统,从网关返回的ICMP重定向报文,会在计算机的路由表中添加一条到主机的路由

  ③也可以人工添加到一个主机地址的路由:如c:\Windows\system32>route add 10.7.1.35 mask 255.255.255.255 10.7.10.254(注意,子网掩码是4个255)

2.4 ICMP差错报告报文:给程序返回错误消息

(1)实验环境

  ①VM使用虚拟机WinXP充当,连接到VMnet1网络。

  ②R1和R2默认路由互相指定对方。

  ③然后从WinXP的浏览器访问http://59.46.80.160,这个TCP数据包会在两个路由器之间往复转发,直到TTL耗尽。然后路由器返回给WinXP主机ICMP差错报文数据包,如下图。

(2)抓包分析

  ①当WinXP浏览http://59.46.80.160时,使用的是TCP协议,源端口和目标端口分别为1058和80。

  ②从上图可知R2产生ICMP差错报文给WinXP。该ICMP报文中包含了传输层首部的8个字节指明了出现差错的数据包的协议、源端口和目标端口

2.5 使用ICMP排除网络故障

(1)使用ping命令诊断网络故障

  ①当ping某个IP时,出现大多数请求超时,只是偶尔会有ICMP响应数据包时,说明网络很不畅通。

  ②这种请求超时的产生主要原因是网络拥塞,导致发送一个ICMP请求数据包在一段时间内没有得到ICMP响应数据包或针对该ICMP请求数据包的差错报告数据包。

  ③可以检查导致网络拥塞的原因,比如恶意软件大量发送广播包占用了网络带宽。

(2)使用tracert跟踪数据包路径

  ①ping和-i参数跟踪数据包

  ②tracert命令的工作原理就是使用上述方法,通过给目标地址发送TTL逐渐增加的ICMP请求,根据返回的ICMP差错报文来确定沿途经过了哪些路由器

(3)使用pathping跟踪数据包路径

  ①pathping是一个基于TCP/IP的命令行工具,该命令不但可以跟踪数据包从源主机到目标主机所经过的路径,还可以统计计算机网络延时以及丢包率。其跟踪数据包路径的原理和tracert命令一样。

  ②图中的“跃点”指的是路由器,D处表示路由器转发数据包的丢包率。E处的表示从跃点9到跃点10链路上的丢包率。

时间: 2024-10-04 23:43:51

第7章 网络层协议(2)_ICMP协议的相关文章

第7章 网络层协议(1)_网络层首部

1. 网络层首部 1.1 网络层协议 (1)TCP/IP协议栈网络层的4个协议:IP协议.ICMP协议.IGMP协议和ARP协议. (2)IP协议:动态路上协议的统称,包括RIP和OSPF协议. (3)TCP/IP协议分成四层:应用层定义了客户端和服务器通信规范,传输层实现可靠传输,网络层负责为数据包选择转发路径,数据链路层负责将数据包封装成帧发送到数字链路上. 1.2 查看网络层首部 1.3 网络层首部格式 (1)版本:占4位,指IP协议的版本.目前有两个版本IPv4和IPv6. (2)首部长

【读书笔记】计算机网络1章:课程介绍、协议、分层

这是我在Coursera上的学习笔记.课程名称为<Computer Networks>,出自University of Washington. 由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了.这门课程在2013年左右录制,知识相对还是比较新的.覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细.学完这门课程之后对计算机网络会有比较深刻的了解. 本章讲述了这门课程的大致情况,讲述了协议.协议层等基本概念. 目标和动机 课程的主要目标就是介绍计算

《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 1.引言 具有本地磁盘的系统引导

第四章 网络层

序言 没保存,电脑没动放着去吃饭,结果win7就休眠了,启动虽然网页度还在,可以我的博文没保存啊,心痛,只能在重头来了,只能说博文应该改进改进,如果直接关了,应该帮用户自动保存草稿的.重新写的.反正今天下午的任务在这里摆着.加油 ----WH 一.回顾 TCP/IP协议栈:物理层.链路层.网络层.传输层.应用层(会话层+表示层+应用层) 物理层:通过比特流在线路中传输来完成我们传输数据的目的,传输的方式很多种,传输的介质也很多中,光纤等 链路层:数据帧,在数据包(报)上加mac地址形成数据帧,其

第4章网络层

第4章网络层 4.1 网络层提供的两种服务 虚电路Virtual Circuit, 电话公司,分组 网络层向上只提供简单灵活的.无连接的.尽最大努力交付的数据报服务. 网络层不提供服务质量承诺. 虚电路服务 数据报服务 4.2 网际协议IP 与IP配套的四个协议 地址解析协议 ARP(Address Resolution Protocol) 逆地址解析协议RARP 网际控制报文协议 ICMP(Internet Control Message Protocol) 网际组管理协议 IGMP(Inte

java学习--基础知识进阶第十二天--网络编程概述、UDP协议、TCP协议

今日内容介绍 u  网络编程概述 u  UDP u  TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换. 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Contro

Object-C非正式协议与正式协议的区别

一.非正式协议 显然这个名词是相对于正式协议而言的.在解释非正式协议之前,先引用两段话: 1.在<Cocoa设计模式>第六章类别的6.3.2把类别用于非正式协议一节中,这样写到: 非正式协议通常定义为NSObject的类别.类别接口中指定的方法可能会或者可能不会被框架类实际地实现.非正式协议位于一种设计灰区中.正式协议由编译器检查并且代表一种关于对象能力的保证,但是非正式协议不会做出保证----而只会给出提示. 2.苹果官方文档Cocoa Core Competencies一文中是这样介绍非正

TCP协议与UDP协议的区别

TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇.里面包括很多协议的.UDP只是其中的一个.之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了.   常用的网络协议 -UDP:概念来自于"电报"     -只管发送,不确认对方是否收到     -以数据包的形式发送,每个数据包不能

【网络协议】TCP协议简介

本文只是对TCP协议做个简要的介绍. TCP协议,即传输控制协议,与UDP协议同处于传输层,同样使用相同的网络层,但TCP提供了一种可靠的.面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输. TCP通过以下方式提供可靠性: 1.应用程序被分割成TCP认为最合适发送的数据块.这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会进行IP分片. 2.当TCP发出一个报文段后,它会启动一个定时器,等待目的端发确认收到这个报