第四章 网络层协议与IP编址
4.1 IP报文格式
版本(version):表示该IP协议的版本号,取值0100即4,为IPV4
头部长度:表示IP协议头部长度(不固定长度:20B固定,0-40B不固定)
服务类型:ToS字段,区分服务字段。该字段主要用于Qos(服务质量)
总长度:IP头部与数据部分之和
标识(Identifier):用于数据包分和重组,分片后的多个IP报文如果标识相同,则表明这些报文原来于同一个分片前的报文。
标志位:
- DF比特位:不分片位,置1表示该报文不可以进行分片
- MF比特位:
*- 置位0,该分片报文是最后一个分片报文。
- 置位1,则表示该分片报文后还有其他的分片报文。
片偏移字段:用于重组报文,重组时分片报文中的该字段值表示分片报文携带的数据部分起点距离原始报文起点的距离。
TTL值:用于防环,取值范围0-255。三层设备收到报文后,如果IP地址不是自己的,转发该报文,转发时,将TTL值减1,每一个三层设备都如此进行,最终TTL将为0,设备收到TTL值为0的报文,直接丢弃不进行转发。
协议字段:用于标识上层协议的,以下为上层协议与该字段取值关系:
- TCP:取值6
- UDP:取值17
- IGMP(因特网组管理协议):取值为2
- ICMP(英特网控制消息协议):取值为1
头部校验和:用于头部校验
源IP地址:报文的来源
目的IP地址:报文要去的目的
Option字段:可变长字段(0-40B),携带可选的功能字段。
Padding字段:如果携带Option字段,则通过Padding字段将IP头部填充到4B整数倍。
总结:IP头部由固定部分和不固定部分组成,固定部分长度20B,不固定部分是Option部分,长度是0-40B,即IP报文头部最短是20B,最长是60B。
4.2 IP地址
4.2.1 IP地址表示方式
IP地址有32bit,采用点分10进制表示,每8bit位一个小组,使用"."号分开,每个小组的二进制换算成10进制,例如192.168.10.1
比如:1100 0000 10101000 0000 1010 0000 0001
1100 0000-1010 1000-0000 1010-0000 0001=192.168.10.1
172.16.20.1=(128+32+8+4).16.(16+4).1=10101100000100000001010000000001
范围:0.0.0.0-255.255.255.255
4.2.2 IP地址的构成
IP地址:32bit中分为两个部分:一个部分为网络位,一个部分为主机位
- 网络位:用来标识一个网络,两个IP地址的网络位不相同,则认为两个地址不在同一个网段。
- 主机位:主机位一个网络内的不同主机。
掩码:32bit,由连续的1和连续的0组成。用于区分IP地址的主机位和网络位。
表示方式:
- 点分十进制:255.255.255.0
- 前缀长度表示方式:掩码中1的个数(网络位的长度)10进制值。
IP地址:192.168.10.1/24 //IP地址为192.168.10.1,掩码为24(255.255.255.0)
4.2.3 IP地址的分类
分为5个类型:
A类地址范围:0.0.0.0-127.255.255.255 掩码8(255.0.0.0)
B类地址范围:128.0.0.0-191.255.255.255 掩码16(255.255.0.0)
C类地址范围:192.0.0.0-223.255.255.255 掩码24 (255.255.255.0)
D类地址范围:224.0.0.0-239.255.255.255 用于组播
E类地址范围:240.0.0.0-255.255.255.255 用于IPV4研究
特殊地址:
0.0.0.0地址:可以表示所有的网络,也可以表示设备接口未配置地址,不能作为设备的有效地址是:
127.0.0.0-127.255.255.255地址:表示环回地址,网卡本身,如果发送报文的目的地址是该地址范围,则报文不会发送出网卡,会从网卡的出口环回到设备上。用于测试使用。
169.254.0.0-169.254.255.255地址:动态获取地址失败后,为自己的网卡配置的用于临时通信的地址。
255.255.255.255地址:有限广播地址
私网地址:企业或者园区网内部使用的IP地址,所有不同的企业都可以使用,不可以用于连接互联网,只能通过公网地址访问互联网。A,B,C三类中各取一端作为私网地址。公网地址:A,B,C类地址中除私网地址和特殊地址以外的地址,必须有唯一性。
A类中私网地址:10.0.0.0-10.255.255.255
B类中私网地址:172.16.0.0-172.31.255.255
C类中私网地址:192.168.0.0- 192.168.255.255
4.2.4地址的类型
1、网络地址:通过网络地址来表示一个网段(网络),主机位全为0的IP地址为网络地址,表示该网络本身。比如:192.168.10.0/24用于标识该192.168.10.0网络本身。
2、可用主机地址:网段中可以配置到接口上的单播地址(不包含该网段的网络地址和广播地址的地址),例如192.168.10.1/24-192.168.10.254/24为可用地址。可用地址数2^n-2,n为主机位数。
3、广播地址:主机位全为1的IP地址为广播地址,用于代表该网段中所有的主机。例如 192.168.10.255/24 代表该192.168.10.0/24网络中的所有主机地址。一旦网段内的主机收到目的地址为该地址的报文,则认为报文是给自己的,必须处理。
192.168.10.10/24该IP地址所属的网段:
1100 0000 10101000 0000 1010 0000 1010= 192.168.10.10 IP地址
1100 0000 10101000 0000 1010 0000 0000=192.168.10.0该网络地址:主机位全0,网络位与该IP地址相同,才是该IP地址所属网段
1100 0000 10101000 0000 1010 0110 0100=192.168.10.100
1100 0000 10101000 0000 1010 1111 1111广播地址:192.168.10.255
1100 0000 10101000 0000 1010 0000 0000 网络地址,该网段最小的地址
1100 0000 10101000 0000 1010 1111 1111 广播地址,该网段中最大的地址
192.168.10.1-192.168.10.254 可用地址
4.3 子网划分
- 所有广播域内的主机的IP地址必须在同一个网段
- 如果不在同一个网段,需要将报文发送给网关设备,要配置网关地址
通过对一个大的网段的网络位向主机位借位,达成将大的网络分割成多个小的网络,被借的位置,为子网位。
例如:192.168.10.0/24 借一位,形成两个子网(修改下笔记)
1100 0000 1010 1000 0000 1010 00000000 192.168.10.0/24 原来的网络地址
1111 11111 1111 1111 1111 1111 00000000 255.255.255.0
1100 0000 1010 1000 0000 1010 11111111 192.168.10.255 原有广播地址
1100 0000 1010 1000 0000 1010 0 0000000 借位后,可用主机数2^n-2=126
1111 11111 1111 1111 1111 1111 1 0000000 新掩码 255.255.255.128
第一个网段:25
1100 0000 1010 1000 0000 1010 0 0000000 网络地址:192.168.10.0 /25
1100 0000 1010 1000 0000 1010 0 1111111 广播地址:192.168.10.127 /25
第二个网段:25
1100 0000 1010 1000 0000 1010 1 0000000 网络地址:192.168.10.128/25
1100 0000 1010 1000 0000 1010 1 1111111 广播地址:192.168.10.255/25
如果借两位,形成四个子网
1100 0000 1010 1000 0000 1010 00 000000 192.168.10.0/24 256个地址
1100 0000 1010 1000 0000 1010 00 000000 192.168.10.0/26 网络1
1100 0000 1010 1000 0000 1010 00 111111 192.168.10.63/26
1100 0000 1010 1000 0000 1010 01 000000 192.168.10.64/26 网络2
1100 0000 1010 1000 0000 1010 01 111111 192.168.10.127/26
1100 0000 1010 1000 0000 1010 10 000000 192.168.10.128/26 网络3
1100 0000 1010 1000 0000 1010 11 000000 192.168.10.192/26网络4
1100 0000 1010 1000 0000 1010 11 000001 192.168.10.193/26 IP地址
1100 0000 1010 1000 0000 1010 11 111111 192.168.10.255 广播地址
子网划分,通过网络位向主机位借位m位实现,子网的数量等于2^m个,m为借的位数;每个子网中包含的地址数量2^n个(地址块),n为主机位数 掩码32-n
4.4 ICMP协议
封装在IP头部后,Protocol协议字段取值为1,表示上层协议是ICMP协议,两个应用:
Ping:通过发送ICMP Echo request报文到目的地,目的地收到后回复ICMP Echo replay报文,确定目的地是否可达。
Tracert:可以探测报文发送的沿途节点路径。
本地发送TTL从1开始递增的UDP报文到目的地,沿途设备收到之后TTL若超时,则回复ICMP Type为11的,Code为0的TTL超时报错报文。本地收到后显示回复设备的IP地址。当TTL值增加到一定的程度,沿途设备都没有超时,报文发送给了目的端,则目的端会因为UDP报文中的端口没有开启,而回复一个端口不可达的报文。从而本端知道报文已到达目的地。从而本端设备上显示出完整的报文转发路径。
ICMP报文的Type和Code字段:
重定向:同一个广播域中,当网关设备收到报文之后查找路由表发现需要重新将报文从收包接口转发出去,会出发发送ICMP重定向报文,通知主机直接将报文发送给真正的下一个设备。