计算机网络 您所在的位置:网站首页 icmp网络不可达和主机不可达 计算机网络

计算机网络

2024-07-10 14:02| 来源: 网络整理| 查看: 265

IP 概述 IP提供不可靠、无连接的数据报传送服务不可靠:IP仅提供最好的传输服务。如果发生某种错误时,IP会丢弃改数据,然后发送ICMP消息报给信源端无连接:IP并不维护任何关于后续数据报的状态信息常用命令: ifconfig netstat IP首部

在这里插入图片描述

4位首部长度:如最大1111,即15,即15*4字节 = 60字节13位偏移量:分片,每片偏移量8位生存时间:经过一次-1传播过程中,源、目的IP地址不变,源、目的mac地址逐跳改变选项最多40个字节 校验和算法 把校验和字段置为0;对IP头部中的每16bit进行二进制求和;如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值; – 如和为322C4,则继续计算 0003 + 22C4将该16bit的值取反,存入校验和字段。 ICMP ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程ICMP报文实在IP数据报内部被传输的检验和 字段覆盖整个ICMP报文ICMP报文有查询和差错两种 ICMP报文 IP数据报:IP首部(20)+ICMP报文ICMP报文:8位类型+8位代码+16位校验和(前4个字节为统一格式) 在这里插入图片描述不同类型和代码对应不同的内容:如 08 00代表ping, 03 xx代表各种不可达 05 xx代表个中重定向 11 xx 代表超时 ICMP差错报文

ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。 这样接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来 不会导致ICMP差错报文:

ICMP差错报文(查询报文可能会)目的地只是广播地址或多播地址作为链路层广播的数据包不是 IP分片的第一片原地址不是单个主机的数据包(不是零地址,环回地址,广播地址或多播地址)这些规则是为了防止广播风暴 ICMP5种差错报文 终点不可达:终点不可达分为:网络不可达,主机不可达,协议不可达,端口不可达,需要分片但DF比特已置为1,以及源路由失败等六种情况,其代码字段分别置为0至5。当出现以上六种情况时就向源站发送终点不可达报文。源站抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源站发送源站抑制报文,使源站知道应当将数据报的发送速率放慢。时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据报片时,就将已收到的数据报片都丢弃,并向源站发送时间超过报文。参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文。改变路由(重定向):路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。 ICMP差错报文结构

在这里插入图片描述 在这里插入图片描述

时间戳ICMP报文

发送方发送报文的时刻在这里插入图片描述

原始时间戳:发送方发送报文的时刻接收时间戳:接收方收到报文的时刻发送时间戳:回显这最后发送报文的时刻 Ping

在这里插入图片描述

标识符:进程ID序号: 每ping一次+1(具体根据不同的操作系统)选项路径中的路径记录:ping的路径记录在选项中记录,因为选项前3个字节用来备注,所以最多只能记录9个IP地址(只记录出的路径) Traceroute

https://www.bilibili.com/video/BV1Mx411v7rJ?p=6 70:39

Linux下使用UDP协议的包第一次TTL设置为1,第一跳会返回"超时",同理第二份TTL为2,直到"端口不可达"关键在于包含这份ICMP信息的IP报文的源地址是该路由器(本次最后到达的路由器)的IP地址源端口号随机,目的端口号使用一个UDP端口号(大于30000),使目的主机任何一个应用程序都不可能使用改端口。这样当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达错误”的ICMP报文,这样Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束 Tracet Windows下原理同上全部使用ICMP IP选路 工作流程

在这里插入图片描述

原理

IP搜索路由表的几个步骤

搜索匹配的主机地址搜索匹配的网络地址搜索默认表项(默认表象一般在路由表中被指定为一个网络表项,其网络号为0) 简单路由表

在这里插入图片描述

第1行说明,如果目的地是140.252.13.65,那么网关(路由器)将把分组转 发给140.252.13.35。U 该路由可以使用。G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该 标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网 络号与子网号的组合。D 该路由是由重定向报文创建的。M 该路由已被重定向报文修改。

H&&G 标志G非常重要, 它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)。其区别在于,发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址。当分组被发往一个间接路由时,IP地址指明的是最终的目的地,但是 链路层地址指明的是网关(即下一站路由器)。在上图这个路由 表例子中,有一个间接路由(设置了标志 G),因此采用这一项路由的分组其 I P地址是最终的目的地(1 4 0 . 2 5 2 . 1 3 . 6 5),但是其链路层地址必须对应于路由器 1 4 0 . 2 5 2 . 1 3 . 3 5。最后一行则表示是直连路由,属于同一局域网。

H标志则表明,目的地址是一个完整的主机地址。没有设置 H标志说明目的地址是一个网络地址(子网掩码决定,主机号部分为 0)

网关定义可看:https://blog.csdn.net/qiuzhongweiwei/article/details/80172529

达不到目的地的路由

如果路由表没有匹配项,也没有默认项:

如果该数据报是本地产生的,则给发送该数据报的应用程序返回一个差错,或者是“主机不可达”或者是“网络不可达”如果是被转发的数据报,则给原始发送端发送一份ICMP主机不可达的差错报文当路由器收到一份IP数据报但又不能转发是,就要发送一份ICMP“主机不可达”差错报文 重定向 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为 R1是该主机的默认路由。R1收到数据报并且检查它的路由表,发现 R2是发送该数据报的下一站。当它把数据报 发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器 所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。 IP分路可参考

https://blog.csdn.net/gaopinqiang/article/details/81266450 https://blog.csdn.net/wh1511995112/article/details/51474692



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有