IPv4地址
IPv4地址分为网络部分和主机部分(自行定义)
IPv4地址可以分为:A、B、C三类。
A类地址是第一字节的第一位为0的IP地址,第一字节的数值范围为1~126。(数字“0”和“127”不作为A类地址,“127”保留给内部的还回地址)
B类地址是第一字节的第一位和第二位为10的一组地址,第一字节的数值范围为128~191。
C类地址是第一字节的第一、二、三位为110的一组地址。第一字节的数值范围为192~223。
主网、子网划分
A类网络中使用8位掩码;B类网络中使用16位掩码;C类网络中使用24位掩码。
掩码的组成形式是一串“1”后面接一串“0”。“1”对应的是网络位,“0”对应的是主机位。
A类网络(1~126);默认掩码:255.0.0.0
B类网络(128-191);默认掩码:255.255.0.0
C类网络(192~223);默认掩码:255.255.255.0
以上是主网络。子网划分是将整个主网络地址划分成若干个子网络地址。从外部来看整个网络只有一个网络号。
例如:192.168.0.0/24,可以划分出192.168.0.0/25,将其分解为二进制如下:
192.168.0.0/属于C类地址,网络位是“1111 1111 1111 1111 1111 1111 0000 0000”,其中“1”所占的位置共24个,叫做“Net-id”;子网划分后的网络位是“1111 1111 1111 1111 1111 1111 1000 0000”后八个中的第一个0由主机位改为的网络位,叫做“Subnet-id”;最后的7个“0”皆为主机位,叫做“Host-id”。
1111 1111 1111 1111 1111 1111 | 1 | 000 0000 |
Net-id | Subnet-id | Host-id |
如果将其划分为192.168.0.0/30的话,二进制则为“1111 1111 1111 1111 1111 1111 1111 1100”
1111 1111 1111 1111 1111 1111 | 1111 11 | 00 |
Net-id | Subnet-id | Host-id |
根据以上子网划分的方法,地址规划设计时可参考以下几种要求执行:
1、层次性;2、连续性;3、扩展性;4、高效性。
层次性:
网络的划分具有层次性,综合的考虑地域及业务等因素,采用自顶向下的方法划分,达到有效管理网络、简化路由表的目的。
对于大骨干网络和大城区网络相结合的网络,采用层次性划分。
对于行政区类型的网络,采用多级网络分配。
连续性:
连续的地址在网络结构中易于进行路由聚合(路由聚合可以理解为路由划分的逆向的子网划分),缩减路由表的数量,提高路由查找的效率。尽可能的为每个区域分配连续的网络位,为具有相同业务和功能的设备分配连续的IP地址。
扩展性:
分配地址时,为每一个MA网络都留有空闲的主机位;为骨干网留有空闲的网络位。便于以后的扩展等。
高效性:
划分子网时,要充分利用地质资源,使子网的划分满足主机个数的需求。
可以利用VLSM技术(Variable Length Subnet Mask;可变长子网掩码)分配IP地址,充分合理的利用地址资源。
与网络的路由机制设计相结合,合理使用已划分的地址空间,提高地址的利用率。
IPv4报文
IPv4报文的报文头长度至少为20Byte(字节),最多为60Byte。报文的格式如下:
Byte:字节。Byte是数据的基本单位。1个Byte=8bit。
bit:二进制位,叫比特。像米、千克等、属于单位。bit是一个二进制位,1bit代表着一个“1”或者一个“0”.
版本号(version):长度4bit,标识目前采用的IP协议版本号,二进制为“0100”,代表IPv4;若二进制为“0110”,则代表IPv6。
报文头长度(Header Length):长度4bit,这个字段是用来描述IP报文头的长度。该部分占用4位,取值为“5~15”(每个“1”代表15bit、每个“0”代表5bit)。本区域值=IP头长度(单位bit)。例如:此部分二进制码为“1111”,则IP头的长度即为“15*4=60Byte(字节)”。报文头最短“0000”即“5*4=20”;最长“1111”即“15*4=60”。服务类型(Type of Service):长度8bit,用于实施QOS。RFC 791中的TOS的IP Precedence将数据流分为8个优先级,取值越大、优先级越高。而RFC 2474中又对TOS进行了重新定义,把前6位定义成DSCP,可以标识64种等级,后两位保留。
报文总长度(Total Length):长度16bit,以Byte为单位计算的IP报文的长度(包括报文头和数据),所以IP报文最大长度为 65535 Byte(2^16-1)。
标识符(Identifier):长度16bit,该字段与Flags和Fragment Officest字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的数值,以便目的设备能够区分哪个包属于被拆开包的哪个部分。
标记/标志(Flags):长度32bit,该字段第1位不使用。第2位是DF(Don't Fragment)位。DF位设为1时,表明路由器不能对该上层数据包分段。如果上层数据包无法在不分段的情况下转发,则路由器会丢弃该上层数据包并返回一个ICMP错误信息。第3位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP报文头中将MF位设为1。
片偏移(Fragment Offset):长度13bit,表示该IP报文在该组分片中的位置,接收端靠此来组装还原IP报文。
生存时间(TTL):长度8bit,当IP报文进行传送时,会对该字段赋予某个特定的值,当IP报文经过每一个沿途的路由器的时候,每个沿途的路由器会将IP报文的TTL值减少1。如果TTL的值为0,则该IP报文会被丢弃,这个字段可以防止路由环路而导致IP报文在网络中不停被转发。
协议(protocol):长度8bit,标识了上层所使用的的协议。如ICMP(协议号为1)、IGMP(协议号为2)、OSPF(协议号为89)等等。
头部校验(Header Checksum):长度16bit,用来做IP头的正确性检测,但不包含数据部分。因为每个路由器要改变TTL的值,所以每个路由器会为每个通过的数据包重新计算这个值。
源和目的地址(Source and Destination Addresses):这两个部分每个都是32bit,共64bit。标识了这个IP报文发起设备的地址(源地址)和接收设备的地址(目的地址)。需要注意的是,NAT会更改报文头中这连个部分的字段(也就是更改源地址和目的地址)。目前除NAT外,整个传输过程中,这两个地址不会改变。
可选项(Options):这是一个可变的字段,没有固定长度。该字段属于可选项,主要用于测试,由源设备根据需求改写。可选项包含以下内容:
松散源路由(Loose Source Routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,但是运行的在相继的两个IP地址之间跳多个路由器。
严格源路由(Strict Source Routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,如果下一跳不在IP地址表当中,则表示发生错误。
路由记录(Record Route):当IP包离开每个路由器的时候记录路由器的出站接口的IP地址。
时间戳(Timestamps):当IP包离开每个路由器的时候记录时间。
填充(Padding):因为IP报文头长度(Header Length)部分的单位为32bit,所以IP报文头长度必须为32bit的整数倍。因此,在可选项后面,IP协议会填充若干个“0”,以达到32的整数倍。