一、概念
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。IP是整个TCP/IP协议族的核心,也是构成互联网的基础。
IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),它可以向传输层提供各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。
IP协议的版本有IPV4和IPV6,目前用的最广泛的还是IPV4,所以这篇主要介绍IPV4
二、IPV4报文格式
- 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
- 4位头部长度(headerlength):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
- 8位服务类型(Type OfService):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
- 16位总长度(total length):IP数据报整体占多少个字节。
- 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每 一个片里面的这个id都是相同的。
- 3位标志字段:第一位保留(现在不用),第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0,类似于一个结束标记。
- 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -=1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出 现路由循环。 8位协议:表示上层协议的类型。
- 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。 32位源地址和32位目标地址:表示发送端和接收端。
- 选项字段:不定长,最多40字节。
三、 IP地址
IP地址是32位的,给互联网上面的每一个主机分配一个地址,以十进制的形式表示,叫做点分十进制。
IP地址的形式:网络号+主机号
网络号:实现了互联网用户身份标识,用户识别主机所在的网络
主机号:用于识别同一网段内的不同主机
1. IP地址的分类
IP地址是一种分等级的地址结构,分为A、B、C、D、E五类。
- A类地址:第1个字节为网络地址,后3个字节为主机地址,并且第一个字节的第一位为0。可用网络数为2^7 - 2,减二的原因是:
网络地址全0,表示本网络
网络地址全1,表示环回测试地址。127.X.X.X
- B类地址:前两位总是10,第1、2个字节为网络地址,第3、4字节为主机地址。可用网络数为2^14-1,减一是因为128.0是不可指派的网络号。
- C类地址:前两位总是110,第1、2、3个字节为网络地址,第4个字节为主机地址。可用网络数为2^21-1,减一的原因是192.0是不可指派的网络号.
- D类地址:前两位总是1110,没有网络地址和主机地址之分
- E类地址:前两位总是11110
优点
路由器根据所连目的主机的网络号部分来进行分组转发,节省了路由表的空间。
缺点
地址空间无法最大限度的得到利用
2. 子网掩码
为了更大限度的使用地址,使用子网掩码。将一个网络划分为多个子网。此时,IP地址的形式变为:网络+子网号+主机号。
网络号和子网号唯一标识网络,使用子网掩码来确定哪些属于子网号和网络号,哪些属于主机号。子网掩码为1的表示网络号和子网号,为0的表示主机号。
子网地址: IP地址和子网掩码做AND运算
3. CIDR
3.1 概念
CIDR的全称是: Classless InterDomain Routing,无类域间路由,这可以更加精细的划分IP地址。
3.2 表示形式
IP地址={网络前缀,主机号}/网络前缀的长度
A.B.C.D/N
- A.B.C.D/N 就是点分十进制的形式
- N代表的就是前缀长度,表示网络号。
- 四部分组成的点分十进制地址,后跟一个斜扛,最后是范围在0到32之间的一个数字:A.B.C.D/N。
不需要告知路由器地址掩码,仅需要通过网络前缀所占的位数就可以得到地址掩码。
举个例子~~
192.25.14.7/20 = 11000000 00011001 0000 1110 00000111
可以得知:
-
子网掩码:
255.255.240 = 11111111 11111111 1111 0000 00000000 -
最小地址(主机为全0)
192.25.0.0 = 11000000 00011001 0000 0000 00000000 -
最大地址(主机位全1)
192.25.15.555 = 11000000 00011001 0000 1111 11111111
3.3 CIDR聚合
也称路由聚合,就是将多个子网聚合到一起形成超网,方法是将前缀缩短。将多个子网的IP地址写成二进制的形式,所有IP地址网络地址相同的部分变为新的前缀。有效地减少了要对外显示的网络数,防止了’路由表爆炸’,也遏制了互联网进一步扩大。