(2)网络层IP协议
网络层IP协议
网络层上层为传输层,下层为数据链路层,它通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输提供服务。
网络层的特点:
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
通过 IP(网际协议,Internet Protocol),消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。
IP协议的分类有IPv4和IPv6。
IP地址
每个计算机必须有一个 IP 地址才能够连入因特网。
每个 IP 包必须有一个地址才能够发送到另一台计算机。
IP地址的分配可以分下面3种情况:
- 为每一个网络接口分配一个IP地址 一台计算机连入网络,需分配一个IP地址,与MAC地址一一对应,且在Internet中唯一的;
- 为多归属主机的每一个网络接口分配响应的IP地址 路由器通过多个网卡连接到多个网络时,需为每个网卡分配一个IP地址;
- 可以为一个网络接口分配多个IP地址。
IP地址、Mac地址、端口号的区别:
- 工作层次不同:Mac地址工作在数据链路层和物理层,IP地址工作在网络层和以上各层,端口号工作在运输层。
- 作用不同:Mac地址是硬件识别的地址,IP地址是协议软件识别地址(标识通信的方向),端口号是软件识别的地址(标识应用进程)。
- 长度不同:Mac地址-48位,IPv4地址-32位,IPv6地址-128位,端口号-16位。
IPv4协议
IPv4数据报的格式
一个 IP 数据报由首部和数据两部分组成。
IPv4的首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
- 版本:包含IP数据报的版本号,ipv4为4。
- 首部长度:可表示的最大数值,是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。正常值为固定长度20/4=5。
区分服务:指示路由器如何处理这些IP分组。
优先级(3位)和数据链路层的QoS机制有关,定义了8个服务级别。当Qos选择了某种服务模型后,优先级越高,字段越优先传输。
D、T、R分别表示延时、吞吐量、可靠性。当这些值都为1时,分别表示低延时、高吞吐量、高可靠性。
- 总长度:首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
- 标识(identification):一个计数器,用来产生数据报的标识。
标志(flag):
DF(Don’t Fragment) 表示是否能够分片,DF为1表示不能分片,DF为0表示可以分片,如果DF为1,且IP分组长度大于MTU,则路由器只能放弃该分组,并发送ICMP差错报文向源主机报告。
MF (More Fragment)表示该分片是不是最后一个分片。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。
为什么要分片?
由于IP分组的最大长度为65535,而实际的网络MTU(最大传输单元)都比IP的最大长度小,所以为了传输IP分组,只能把IP分组分片传输。
如何分片?
首先确定每一片长度,每一片都加上分组头,一直分割到剩下的数据都小于数据链路层MTU。
片偏移:指出较长的分组在分片后,某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。例如偏移值为100,则说明该分片离分组头有800字节的距离。
- 生存时间TTL (Time To Live):数据报在网络中可通过的路由器数的最大值。发送方在初始发送时设定某个值(建议为64,、128或255),每台路由器在转发时都将其减一,当字段达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。
- 协议:指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。1表示ICMP,2表示IGMP,6表示TCP,8表示EGP,17表示UDP,41表示IPv6,89表示OSPF。
IPv4分组地址
分类IP地址
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
IPv4的地址长度为32位,采用点分十进制记法来将32位的二进制IP地址转换成十进制的4组数字:
IPv4网络中的地址类型:
- 网络地址:指代网络的地址。在网络的 IPv4 地址范围内,最小地址保留为网络地址。此地址的主机部分的每个主机位均为0。
- 广播地址:用于向网络中的所有主机发送数据的特殊地址。广播地址使用该网络范围内的最大地址。即主机部分的各比特位全部为1的地址。
- 主机地址:分配给网络中终端设备的地址。
私有地址:
- 10.0.0.0 to 10.255.255.255 (10.0.0.0 /8)
- 172.16.0.0 to 172.31.255.255 (172.16.0.0 /12)
- 192.168.0.0 to 192.168.255.255 (192.168.0.0 /16)
特殊IPv4地址:
- 默认路由:0.0.0.0
- 环回地址:127.0.0.0/8
子网划分
子网划分的思想:借用主机号的一部分作为子网的子网号,划分出更多的子网IP地址。
子网地址结构
- 标准的ABC类IP地址是两级结构:网络号—主机号,而划分子网后,IP地址的结构为三级结构:网络号—子网号—主机号
- 同一个子网的主机,网络号和子网号必须相同
- 子网之间的距离必须很近,例如一个公司或者校园内
子网掩码
子网掩码的作用:从一个IP地址中提取出子网号。
子网掩码的表示:网络号和子网号全改为1,主机号全改为0。
主机地址和子网掩码之间的 AND 运算得到的结果就是网络地址。
子网划分——将网络划分为适当大小的多个子网
- 确定主机总数,包括终端用户设备、服务器、中间设备和路由器接口。
确定网络的数量和大小,根据主机的常规分组考虑网络的数量和每个网络所需的大小。
子网数量 = 2n (n = 借用的位数)
主机数量 = 2n - 2 (n = 剩余的主机位数)
- 分配地址
CIDR(无类别域间路由)
CIDR(无类别域间路由)用<网络前缀>/<主机号>
代替网络号—主机号的二层结构,形成新的无分类二层地址结构。
<网络前缀>/<主机号>
这种格式为:”斜线记法“。如:200.16.23.0/20表前20位为网络前缀,后12位为主机号。
IPv6协议
IPv6特性和优点:
- 128 位分层编址,用以提高编址能力
- 报头格式简化,用以改进数据包处理过程
- 提高对扩展和选项的支持,用以增强可扩展性和延长生命周期并改进数据包处理过程
- 流标签功能,作为 QoS 机制
- 身份验证和隐私权功能,用于集成安全性
IPv6数据报格式
IPv6地址
IPv6地址的表示
IPv6地址采用”冒号十六进制表示法“,将128位地址按每16位划分为一个位段,每个位段转换为一个4位的十六进制数,共有8个位段。
二进制:
0010000111011010000000000000000000000000000000000000000000000000 0000001010101010000000000000111111111110000010001001110001011010
冒号十六进制表示法:
21DA : 0000 : 0000 : 0000 : 02AA : 000F : FE08 : 9C5A
如果某段存在几位都是0的情况,可以使用零压缩法压缩(一个块中前导的0不必书写):
21DA : 0 : 0 : 0 : 2AA : F : FE08 : 9C5A
如果存在几个连续位段都是0,可以用”双冒号表示法“
21DA : :2AA : F : FE08 : 9C5A
用”双冒号表示法“表示的一个问题:如何确定冒号省略的段数?
8 - 现有段数 = 冒号省略的段数
IPv6可以兼容IPv4地址,即可以用IPv6格式表示IPv4地址。表示方式为:IPv6块值为ffff,其后面紧跟“点分四组”的格式。如::
可以代表IPv4:10.0.0.1
10.0.0.1
IPv6的前缀
在IPv4中,子网掩码用来表示网络和子网地址长度。用前缀长度来区分子网号和主机号。而 IPv6不支持子网掩码,只支持前缀长度表示法,用“地址/前缀长度”表示
64位前缀是一个子网前缀,少于64位的前缀是一个路由前缀,或是一个地址范围。
21DA:D3::/48
是一个路由前缀
21DA:D3:0:2:2F3B::/64
是一个子网前缀
IPv4和IPv6共存——隧道技术
隧道技术指的是IPv6分组进入IPv4网络时,将IPv6分组封装成IPv4分组,整个IPv6分组变成IPv4的数据部分。当IPv4分组离开IPv4网络时,再将其数据部分交给主机IPv6协议,这就像在IPv4网络中打通了一个隧道来传输IPv6。
参考资料:
- IP协议详解
- OSI参考模型——网络层:IPv4协议和IPv6协议详解
还没有评论,来说两句吧...