网络(2)-网络层:IP分类,子网划分,超网。ARP协议,ICMP协议

一、IP地址分类

详细内容可参考该文:IP地址使用,分类等详解

[IP地址分为五类(A、B、C、D、E类)][IP _A_B_C_D_E]。

IP32位的地址通常表示为四个10进制的数,每个证书对应一个字节,成为点分十进制法(Dotted decimal notation)。

 

上图首字节整数:A类--0开始,B类--27=128 开始,C类--27+ 26=192 开始,D类--27+ 26+ 25 =224开始,E类--27+ 26+ 25 + 24 =240开始,示例如下:

 

二、子网划分

详细查看:子网划分及子网掩码计算方法

子网掩码一般用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。

1)缺省子网掩码:(未划分子网)

子网掩码32位与IP地址32位对应,如果某位是网络地址,则子网掩码为1,否则为0。例如A类IP地址,第一节为网络地址,其余三节为主机地址,故掩码为“11111111.00000000.00000000.00000000”

1、 A类网络缺省子网掩码:255.0.0.0;
2、 B类网络缺省子网掩码:255.255.0.0;
3、 C类网络缺省子网掩码:255.255.255.0;

2)自定义子网掩码:(用于划分子网)

将一个网络划分为若干子网,希望每个子网拥有不同的网络地址或子网地址。因为IP是有限的,实际上我们是将主机地址分为两个部分:子网网络地址、子网主机地址。形式如下:

1、 未做子网划分的ip地址:网络地址+主机地址;
2、 做子网划分后的ip地址:网络地址+(子网网络地址+子网主机地址);

三、超网

超网(supernetting)是与子网类似的概念--[IP地址][IP 1]根据子网掩码被分为独立的网络地址主机地址。超网(supernetting),也称无类别域间路由选择(CIDR),它是集合多个同类互联网地址的一种方法。

超网创建用来解决路由列表超出现有软件和管理人力的问题以及提供B类网络地址空间耗尽的解决办法。超网允许一个路由列表入口表示一个网络集合,就如一个区域代码表示一个区域的电话号码的集合一样。

优点和不足

超网的优点是可以充分利用C类网络空间资源 [2] 。在多数情况下,使用超网地址分配乐意使分配的网络空间与实际所需的结点数量相匹配,因而提高了地址空间的利用率。例如,一个4000个结点的物理网络,分配一个B类地址显然是浪费,但C类地址又太小,那么我们可以为该物理网络分配一个由16个连续C类网络构成的地址空间块。

超网方式也带来了新的问题:路由表规模的增长。路由表规模与网络数量成正比。一个物理网络对应多个C类网络地址,使得该网络在路由表中对应于多个C类的前缀表项,使路由表过于庞大。路由协议为交换路由信息而带来的开销也急剧增加。这个问题可采用无类型域间路由就(CIDR,Class Inter-Domain-Routing)技术来解决。尽管一个物理网络在路由表中对应多个表项,但所有表项必然指向同一个下一跳地址,因此有可能对表项进行聚合。CIDR技术可以把路由表中连续的C类网络地址块聚合的C类网络地址必须是连续的,且地址块的数量为2的幂。聚合以后的CIDR地址块的网络前缀的长度。显然,子网掩码的长度将小于24(C类网络的掩码长度)。与子网选路中采用的表示形式一样,CIDR定义得地址快也统一表示成“网络前缀/子网掩码位数”的形式。

四、ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据[IP地址][IP 2]获取物理地址的一个TCP/IP协议主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP代理ARPNDP用于在IPv6中代替地址解析协议。

地址解析协议是通过报文工作的。报文包括如下字段:

1、 硬件类型:指明了发送方想知道的硬件[接口][Link17]类型,以太网的值为1;
2、 协议类型:指明了发送方提供的高层[协议][Link18]类型,IP为0800(16进制);
3、 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
4、 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
5、 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
6、 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
7、 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
8、 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
9、 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
10、 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
11、 目标IP地址(0-3字节):目的主机的IP地址;

五、ICMP协议

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 [3] 它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。ping 和 tracert是两个常用网络管理命令,ping 用来测试网络可达性,tracert 用来显示到达目的主机的路径。ping和 tracert 都利用 ICMP 协议来实现网络功能,它们是把网络协议应用到日常网络管理的典型实例。

从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。

其功能主要有:侦测远端主机是否存在,建立及维护路由资料,重导资料传送路径(ICMP重定向),资料流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。

ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。

我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。

ICMP报文格式具体由RFC 777 ,RFC 792 规范。

ICMP类型

已经定义的ICMP消息类型大约有10多种,每种ICMP数据类型都被封装在一个IP数据包中。主要的ICMP消息类型包括以下几种。

响应请求

我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

目标不可到达、源抑制和超时报文

这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

时间戳

时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。


我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!

 

参考资料:

1、 https://blog.csdn.net/qq_26442553/article/details/82761114
2、 https://blog.csdn.net/qq_14997637/article/details/80632848
3、 https://baike.baidu.com/item/%E8%B6%85%E7%BD%91/10504849?fr=aladdin
4、 https://blog.csdn.net/masong333/article/details/90139042
5、 https://baike.baidu.com/item/ARP/609343?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212&fr=aladdin
6、 https://baike.baidu.com/item/ICMP/572452?fromtitle=ICMP%E5%8D%8F%E8%AE%AE&fromid=421332&fr=aladdin

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: