网络层重要协议
参考模型和协议栈
IP协议
IP协议定义了网络层数据传送的基本单元,也制定了一系列关于网络层的规则。
IPv4数据报
网络层的协议数据单元PDU 叫做分组 ;网络层的传输单位 叫做数据报。
协议数据单元PDU是对等实体之间传输的单元,传输层是某一层能够通过的数据包大小。
用一个例子:由于安排,需要把一整个班级的人发送到安全通道2-A,路径只能1-A
->1-B
->2-B
->2-A
,那么1-A的协议数据单元就是"整个班级"。1-A
层每次只能传送2个人,那么"2个人"就是1-A
的传输单元。
IP协议定义网络层传输的基本单元,IP协议有IPv4和IPv6,IPv4依然是现在比较常用的IP协议。
IP数据报格式
IP数据报格式如下
IP数据报格式很重要,我的记忆口号:"六块肌肉,四块腊肉"。描述了IP数据报的大致格式,只要有大致格式我们就可以比较熟练的记忆。"六块肌肉"上面一部分就像六块肌肉一样,而下面4个横格子我把它记作"腊肉",因为腊肉在我这个地方是类似于长方形的(实际上是长长的刀把形)。
(1)4位版本:指出IP协议使用的版本,如果用的是IPv4,那么版本号就是4
(2)4位首部长度:指出这个数据报的首部有多大,如果没有选项,首部长度为20字节
(3)16位总长度:指出这个数据报整体有多大,首部+数据的大小,不能超过数据链路层规定的最大传输单元MTU。以太网帧的MTU是1500B
(4)16位标识:是一个计数器,每产生一个数据报就+1,但它不是序号,用来标识主机发送的报文。如果在数据链路层被分片了,每一个片里的这个标识都一样,方便重装。
(5)3位标志:第一位保留(现在不用);第二位是DF,DF=0表示允许分片;第三位是MF,MF=1表示后面还有分片;
(6)16位片偏移:相对于原IP数据报的偏移量,以8字节位为偏移单位,除了最后一个分片,每个分片的长度必须是8B的整数倍,否则报文就不连续了。
(7)8位生存时间:这个数据报最多可以经过几个路由器,用来确保它不会永远在网络中循环。分组转发前,生存时间-1。生存时间为0,丢弃。
(8)8位协议。指出交给网络层的数据使用的是什么协议,方便拆包时清楚知道用什么协议。
(9)16位首部校验和:使用循环冗余码CRC进行差错校验。
IPv4地址
连接到因特网的每一台主机或路由器都会分配一个32位的唯一标识符,叫做IP地址。IP地址由机构ICANN进行分配。早期的IP地址被分成5类。
- A类 0.0.0.0到127.255.255.255
- B类 128.0.0.0到191.255.255.255
- C类 192.0.0.0到223.255.255.255
- D类 224.0.0.0到239.255.255.255
- E类 240.0.0.0到247.255.255.255
不论是哪一类IP地址,都由网络号和主机号组成,{网络号.主机号}
。
网络号标识主机或路由器连接的网络,所以网络号必须唯一。
主机号标识主机或路由器,IP地址中,同一个网络号的主机号需要不同。
注意
(1)一个网络的网络号是唯一的,如果一个主机同时连接到两个网络,那么这个主机必须要有2个IP地址。路由器是常见的连接多个网络的设备,所以路由器至少拥有2个IP地址。
(2)使用转发器或网桥连接的若干LAN仍然处于同一个网络,它们使用相同的网络号。
(3)分配到网络号的网络都是平等的
特殊IP地址
- 主机号全为0,IP地址是一个是网络号,表示这个网络本身。如202.98.174.0
- 主机号全为1,IP地址是这个网络的广播地址。如202.98.174.255
- 127.X.X.X,叫做环回自检地址。这个IP地址表示任意主机本身,目的IP地址为环回自检地址的数据报不会出现在网络上。通常是127.0.0.1
- 32位全为0,表示本网络上的本主机
- 32位全为1,即255.255.255.255是TCP/IP网络的广播地址。路由器会隔离广播域,所以我们在使用这个IP地址的时候,它等效于本网络的广播地址。
私有IP地址和公有IP地址
有一些组织会自己组建一个局域网,并不需要连接上因特网。但是它们内部的每台主机也都需要IP地址,鉴于这种情况,将IP地址划分成了私有IP地址和公有IP地址。私有IP地址用于局域网LAN,公有IP地址用于广域网WAN。如果这个网络现在需要连接因特网,就需要通过网络地址转化NAT将私有IP地址转换成因特网中合法的全球IP地址。私有IP地址可以被局域网LAN重复使用,所以私有IP地址又叫可重用地址。这种机制有效解决了IP地址不足的问题。
私有IP地址网段:
A类:2^0^个A类网段。10.0.0.0~10.255.255.255
B类:2^4^个B类网段。172.16.0.0~172.31.255.255
C类:2^8^个C类网段。192.168.0.0~192.168.255.255
采用私有IP地址的互联网络,叫做专用互联网或本地互联网 。专用互联网如果要和因特网连接,它们之间的路由器必须安装网络地址转换NAT软件,这个路由器至少需要有一个有效的外部全球IP地址。
NAT路由器里有一张表,表里保存着{本地IP地址:端口}-->{全球IP地址:端口}的映射关系。
子网划分
使用{网络号.主机号}2级IP地址的网络中,空间利用率比较低,并且不够灵活。1985年起,提出了三级IP地址的概念。三级IP地址就是在二级IP地址的基础上,把主机号靠近网络号那部分归为子网号字段 。这种做法叫做子网划分。
- 子网划分属于一个组织内部的事情,对外没有子网的概念。
- 其他网络发给这个组织的数据报,先根据网络号,把IP数据报发到这个组织网络上的路由器。然后再根据网络号和子网号找到目的子网,最后把数据报发送到目的主机上。
- 根据IP数据报的首部,没有办法判断对应的网络是否进行了网络划分
- 路由器所选用的路由选择软件,有一些不支持全1或全0的子网号
- 子网中主机号全为0的地址 是 子网的网络号;主机号全为1的地址 是 子网的广播地址
由于根据IP数据报没有办法判断对应的网络是否进行了子网划分,所以引入了子网掩码的概念。子网掩码是一个32位的二进制串,和IP地址对应。1对应网络号和子网号,0对应主机号。将IP地址和子网掩码按位与 就得到了子网的网络号 。
路由器不仅要包含目的网络地址 和 达到目的网络 路径上 的下一个路由器的IP地址 ,还要包含目的网络 的子网掩码。
事实上,随着Internet的飞速发展,像这种分类划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址。针对这种情况提出了新的划分方案, 称为无分类编址CIDR(Classless Interdomain Routing)。