IP地址
基概
在网络中用于标志一个结点(或者网络设备的接口),也用于IP报文在网络中的寻址。分为IPv4和IPv6,我们生活当中一般采用IPv4地址,而一个IPv4地址由32bit(4byte),通常使用“点分十进制”表示。
构成
网络部分:用来标识一个网络,说白了就是看两个IP是否在同一个网段,这直接说明两者同信是同网段还是跨网段。
主机部分:用来区分一个网络内的不同主机,能唯一识别网段上的某台设备,比如我们192.168.10.0这个网段,可以有192.168.10.1和192.168.1.2这两个同网段的IP
网络掩码:区分一个IP地址中的网络部分和主机部分
IP地址分类(有类编址)
为了方便IP地址的管理及组网,IP地址分为5类:A、B、C、D、E
这五类的字段分别是二进制数0,10,110,1110,1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法。
A,B,C三类地址是单播IP地址(除一些特殊地址外),只有这三类地址才能分配给主机接口使用。
D类地址属于组播IP地址,E类地址专门用于特殊的实验目的。(也就是不给我们普通人使用)
A,B,C类地址比较
使用A类地址的网络成为A类网络,以此类推B,C;
A类网络的网络号为8bit,个数少,但允许的主机接口个数很多,首位恒为零,地址空间为0.0.0.0~127.255.255.255
B类网络的网络号为16bit,前两位恒为10,地址空间为:128.0.0.0~192.255.255.255
C类网络的网络号为24bit,个数很多,但所允许的主机接口的个数就很少;首三位恒定为110.地址空间为192.0.0.0~223.255.255.255
**注:**主机通常指路由器和计算机;组播能实现一对多传递消息。
IP地址类型
按照惯例,我们将一个网络号所在的网络范围称为一个网段。
网络地址:用于标识一个网络广播地址:用于向该网络中的所有主机发送数据的特殊地址,不能分配给具体的主机接口使用
可用地址:可分配给网络中的节点或网络设备接口的地址,又称为主机地址,
一个网段可用地址数量计算:一个网段的主机位为n位,则IP地址数为:2n,可用IP地址数为:2n-2(因为要扣掉网络地址和广播地址)
IP地址计算
网络地址:将IP地址的主机位全设为0,所得结果是该IP地址所在网络的网络地址。
广播地址:将IP地址的主机位全设成1,所得结果是该IP地址所在网络的广播地址。
IP地址数:2^,n为主机位位数
可用IP地址数:2^n-2,n为主机位位数
ICMP包的功能
1、重定向
ICMP重定向报文是ICMP控制报文的一种
internet控制消息协议是IP协议的辅助协议,用来在网络设备间传递各种差错和控制信息。
为了更有效地转发IP数据报文和提高数据报文交互成功的机会,在网络层使用ICMP协议,ICMP允许主机或设备报告差错情况和提供有关异常情况的报告。
ICMP消息:ICMP消息封装在IP报文中,IP报头Protocol值为1时表示ICMP协议。
字段解释:
ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数。
校验和字段用于检查消息是否完整。
消息中包含32bit的可变参数,这个字段一般不使用,通常设置为0.
在ICMP重定向消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到指定网关。
在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进行关联尤其是当源端向目的端发送了多个Echo请求消息时,需要根据标识符和序号将Echo请求和回复消息进行一一回应。
2、差错检测
ICMP Echo消息常用于检测源和目的之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。简而言之:我发送一个包,如果接收方能在规定时间内返回给我一个包,则判断无误
3、错误报告
ICMP定义了各种错误消息,用于诊断网络间接性问题,根据这些错误信息,源设备可以判断出数据传输失败的原因。比如:在网络中发生了环路,导致报文在网络中循环,且最终TTL超时,这种情况下网络设备会发送TTL超时信息给发送端设备。
或者如果目的地无法到达,那么中间的网络设备会发送目的不可达信息给发送端设备。但是目的地不可达又分很多种情况,如果是网络设备无法找到目的网络,则发送目的网络不可达消息;如果网络设备中无法找到目的网络中的目的主机,则发送目的主机不可达消息。
错误报告的实现全靠Tracert功能:Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径,也就是想看一下我们的包经过了哪些设备(包括IP地址)。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1,该报文到达第一个设备后,会减去一跳,并返回一个不可达的包,里面携带自己的IP、端口等;然后设备会继续向后面的设备发送这个包,直到跳数达到255。