您的位置:首页 > 理论基础 > 计算机网络

OSI参考模型——网络层:IPv4协议和IPv6协议详解

2016-12-30 15:10 197 查看

博文目录

一、网络层的基本概念

二、网络层IP协议的基本内容

三、IPv4分组的格式

四、IPv4分组的地址分类和表示

五、IPv4地址的子网划分

六、CIDR(无类别域间路由)

七、网络地址转换NAT

八、IPv6协议

九、IPv4和IPv6共存——隧道技术

一、网络层的基本概念

网络层上层为传输层,下层为数据链路层,它通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输提供服务。

二、网络层IP协议的基本内容

网络层中的网络协议是IP,IP协议的分类有IPv4和IPv6

IP协议的特点

IP协议是一种无连接,不可靠的分组传送服务协议,因此它提供的是一种尽力而为的服务

无连接:IP协议不维护IP分组发送后的任何状态信息

不可靠:IP协议不能保证每个IP分组都能正确地,不丢失和顺序地到达目的主机

IP协议是点-点的网络层通信协议

IP协议是针对源主机—路由器、路由器—路由器、路由器—目的主机之间的数据传输的点—点的网络层通信协议,它为两台通信主机寻找一条路径,通常由多个路由器,点点线路组成

IP协议屏蔽了互联的网络在数据链路层、物理层协议与实现技术上的差异



三、IPv4分组的格式

IPv4分组由两部分组成:分组头和数据。

1. 分组头长度可变,每行宽度为4B

2. 前五行为分组头必需有的域,所以 IP分组头基本长度为20字节

3. 第6行为选项域,最长为40字节。所以,IP分组头长度为20B~60B



分析各个字段的含义

1. 版本

长度为4位

表示IP的版本号,0100为IPv4,0110为IPv6

2. 协议

长度为8位

指使用IP的高层协议类型

1表示ICMP,2表示IGMP,6表示TCP,8表示EGP,17表示UDP,41表示IPv6,89表示OSPF

3.分组头长度

分组头长度为8位

由前面提到,分组头的基本长度为20字节,加上可选部分所以分组头长度在20-60字节

4. 总长度

总长度为16位

总长度 = 分组头长度 + 数据长度 最大值为2^16 -1 = 65535字节

5. 服务类型

服务类型为8位

服务类型用于指示路由器如何处理这些IP分组

服务类型由4位的服务类型字段,3位的优先级字段和1位保留位构成

(1)服务类型字段

服务类型字段用4个参数指示路由器如何处理IP分组,分别是:

延迟(D),可靠性(R),吞吐量(T),成本(C),每一位都有0或者1的取值

(2)优先级

当高负荷情况下,路由器发生阻塞,优先级越高的IP分组越优先被路由器处理

6.生存时间(TTL)

生存时间为8位

IP分组在网络中的漂流时间(寿命),TTL用路由器跳数来度量,经过一个路由器转发后,TTL值减1,当TTL为0时,丢弃分组并发送ICMP报文通知源主机

7. 头部校检和

头校验和字段为8位

设置头校验和是为了保证分组头部数据完整性,只对分组头校检,原因是:

1. 数据部分属于高层数据,高层已经对数据进行校检

2. 每经过1个路由器,分组头会变化,数据不会变化,因此只对分组头校检

头部校检采用“二进制反码求和”的算法

8. 地址

地址字段包括了源地址和目的地址

插入IP分组分片和组装的概念

与分组分片和组装相关的字段有:标识,标志,位偏移

为什么要分片?

由于IP分组的最大长度为65535,而实际的网络MTU(最大传输单元)都比IP的最大长度小,所以为了传输IP分组,只能把IP分组分片传输

如何分片?

首先确定每一片长度,每一片都加上分组头,一直分割到剩下的数据都小于数据链路层MTU



9. 标识

标识字段长度为16位

标识字段是片识别的标记,由于每一个分片都有分组头,属于同一个分组的分片要有统一的标识,到达目的主机后才能跳出相同标识的分片组装成分组

10.标志

标志字段为3位



第一位为0,

第二位DF表示是否能够分片,DF为1表示不能分片,DF为0表示可以分片,如果DF为1,且IP分组长度大于MTU,则路由器只能放弃该分组,并发送ICMP差错报文向源主机报告

第三位MF表示该分片是不是最后一个分片,MF=1表示不是最后一个分片,MF=0表示是最后一个分片,作用就是告知接收主机要不要继续挑选分片

11.片偏移

片偏移长度为13位

作用:当接受主机挑选出相同标识的分片,组装分片时必然要涉及到哪个分片在前,哪个分组在后的位置问题,片偏移就是用来表示分片在原IP分组的位置

片偏移以8个字节为单位来计算偏移值,例如偏移值为100,则说明该分片离分组头有800字节的距离



12.IP分组头选项

分组头选项由选项码、长度和选项数据三部分组成:

选项码用于确定该选项的具体功能,例如源路由,记录路由,时间戳等

四、IPv4分组的地址

1. IP地址和MAC地址的区别

MAC地址是每块网卡的硬件地址,用于数据链路层的帧传递地址;IP地址是网络层地址(也称逻辑地址),用于路由器寻址

IP地址标识的是一台主机或路由器 与 网络的接口,而MAC地址唯一地标识一台主机

网桥,Ethernet交换机属于数据链路层设备,使用MAC地址,不属于网络层设备,所以不分配IP

2. IP地址的分配概念

IP地址的分配可以分下面3种情况:

1. 为每一个网络接口分配一个IP地址

一台计算机连入网络,需分配一个IP地址,与MAC地址一一对应,且在Internet中唯一的

2. 为多归属主机的每一个网络接口分配响应的IP地址

路由器通过多个网卡连接到多个网络时,需为每个网卡分配一个IP地址

3. 可以为一个网络接口分配多个IP地址

总结来说:

1、连接到Internet的每一个主机(计算机或路由器)至少有一个IP地址

2、IP地址是分配给网络接口的

3、多归属主机可以有多个IP地址,一个网络接口也可以分配多个IP地址

3. IP的点分十进制表示方法

IPv4的地址长度为32位,点分十进制表示通常采用 x. x. x. x的格式,每个x为8位。(点分十进制从字面上理解,用点分隔,每个字段用十进制表示)

IP地址的分类有5中分类:A类,B类,C类,D类和E类地址



网络号:用于识别主机所在的网络

主机号:用于识别该网络中的主机

A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同

(tip:网络号加粗表示)

A类地址

(1)A类地址网络号第一位固定为0,其它7位可以分配,主机号长度为24位

(2)网络号分配的数量为2^7 = 128,地址范围为:1.0.0.0—127.255.255.255

(3)10.0.0.0-10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址,路由器接收到私有地址,不会向Internet转发该分组,私有地址与NAT相关)

(4)127.0.0.0-127.255.255.255是保留地址,用做循环测试用的

(5)0.0.0.0—0.255.255.255也保留用作特殊用途

(6)因此网络号可分配的只有125个,每个网络段的主机号可以分配的只有 2^24-2=16777214个(主机号全0和主机号全1保留

B类地址

(1)B类地址网络号第1,2位固定为10,其它14位可以分配,主机号长度为16位

(2)地址范围为:128.0.0.0—191.255.255.255

(3)172.16.0.0—172.31.255.255是私有地址

(4)169.254.0.0—169.254.255.255是保留地址(如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP)

(5)每个网络段可分配的主机号为2^16 - 2 = 65534(主机号全0和主机号全1保留

C类地址

(1)C类地址网络号前3位固定为110,其它21位可以分配,主机号长度为8位

(2)C类地址范围:192.0.0.0—223.255.255.255

(3)192.168.0.0—192.168.255.255是私有地址

(4)网络号可分配的块数为2^21 = 2097152,没块网络号可分配的主机号数为2^8-2 = 254(主机号全0和主机号全1保留)

D类地址

D类IP地址不标志网络,前4位固定为1110,地址范围为:224.0.0.0—239.255.255.255,用作特殊用途,如多播地址

E类地址

E类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1111。E类地址范围:240.0.0.0—255.255.255.255,用于某些实验和将来使用

总结上述的规律

ABC三类地址的主机号全0和全1都保留,主机号全1为子网广播地址,主机号全0为子网网络地址(一个网段中第一个IP地址为网络地址)

A类地址的第1块网络号和第2块网络号要保留

ABC三类地址中的特殊IP地址

(1)直接广播地址

如果主机号全1,例如191.1.255.255,那么这个地址为直接广播地址

路由器将这个分组以广播的形式发送到网络号位191.1.x.x的全部主机

(2)受限广播地址

网络号与主机号的32位全为1(255.255.255.255)为受限广播地址

用来将一个分组以广播方式发送给本网的所有主机

(3)“这个网络上的特定主机”地址

网络号是全0 (如0.0.0.25) 的地址是这个网络号的特定主机地址

路由器接到这样的分组,不向外转发,而是直接交付给本网络中主机号为25的主机

(4)回送地址

A类地址中127.0.0.0是回送地址,它是一个保留地址

五、IPv4地址的子网划分

子网划分的思想:借用主机号的一部分作为子网的子网号,划分出更多的子网IP地址,对于外网来说这些子网仍然像一个网络一样,这对于路由器的寻址没有影响

1. 子网地址结构

标准的ABC类IP地址是两级结构:网络号—主机号,而划分子网后,IP地址的结构为三级结构:网络号—子网号—主机号

同一个子网的主机,网络号和子网号必须相同

子网之间的距离必须很近,例如一个公司或者校园内

2. 子网掩码

引入子网后,如何从IP地址中提取出子网号?子网掩码就是用来解决这个问题的

子网掩码的作用:从一个IP地址中提取出子网号

子网掩码的表示:网络号和子网号全改为1,主机号全改为0



实例:一个B类IP地址的子网划分

该B类IP地址190.1.2.26,划分出64个子网

1. 借用原16为主机号的6位作为子网号,剩余10位为主机号

2. 根据子网掩码的格式,得出子网掩码为:255.255.252.0,或表示成190.1.2.26/22(”/22“表示第22位开始为主机号



3. 子网的规划和地址划分的方法

例:一个校园网要对一个B类地址(156.26.0.0)进行子网划分。该校园网有近210个局域网组成。

由于210个局域网最接近2^8=256,所以可行的方案是从主机号借8位来作为子网号,这样的子网的掩码为:255.255.255.0 或 156.26.0.0/22(”/22“表示第22位开始为主机号

以上子网划分结果为:

子网1:156.26.1.1~156.26.1.254

子网2:156.26.2.1~156.26.2.254

……

子网254:156.26.254.1~156.26.254.254

至于子网0:156.26.0.1~156.26.0.254和子网254:156.26.255.1~156.26.255.254,即子网号是否能够为全0或者全1,值得商榷!

由于主机号不能全为1或者全为0,每个子网的主机号有254个

子网长度的确定,应考虑两个因素:子网数与每个子网中主机与路由器数。子网数要考虑留有一定余量为原则

4. 可变长度的子网掩码划分方法

用一个例子来说明:

某公司申请一个C类202.60.31.0的IP地址,该公司有100名员工在销售部,50名在财务部,50名在设计部。要求为销售部门、财务部门、设计部门分别组建子网

分析:

三个部门是三个子网,我们很容易想到,只需要借出2位来作为子网号就行。但是借了2位后,主机号只剩下6位,则每一个子网的最大主机号为2^6 = 64个,小于销售部门的100个主机,所以行不通!

这时,可以采用可变长度的子网掩码划分方法:

(1)销售部100台主机,所以主机号至少为7位,则子网号为1位,此时子网掩码:255.255.255.128(11111111.11111111.11111111.1000000)或202.60.31.0/25(第25位开始为主机号)

子网位为0:202.60.31.1(0 000 0001)~ 202.60.31.126(0 111 1110) (作为销售部子网)

子网位为1: 202.60.31.129(1 000 0001)~ 202.60.31.254(1 111 1110)

(2)对子网位为1的情况,再划分出两个子网给财务部门和设计部门,剩下的两个部门只需要6个主机号,所以可以用2位作为子网号,子网掩码为255.255.255.192(11111111.11111111.11111111.1100000)或202.60.31.0/26(第26位开始为主机号)

子网位为10:202.60.31.129(10 00 0001)~ 202.60.31.190 (10 11 1110)(作为财务部子网)

子网位为11:202.60.31.193(11 00 0001)~ 202.60.31.254(11 11 1110)(作为设计部子网)

tips:子网号加粗,主机号全0和全1不能使用

一个问题:

第3点子网的规划和地址划分的方法说到了子网号和主机号不能为全0或者全1,但是第4点可变长度的子网掩码划分方法中,却存在子网号为0或者11的情况,那么子网号到底能不能为全0或者全1呢?

子网号全0或者全1要看网络设备所使用的路由器协议支持不支持,以前的老版的协议都是不支持,新版本可以支持,老的书籍或者资料都不用全0和全1子网,新的允许用

六、CIDR(无类别域间路由)

1. CIDR的概念和格式

其实在上述博文中,已经不经意间提到了CIDR,例如156.26.0.0/16

CIDR其实讲得是IP地址的格式问题,标准的IP地址的点分十进制是网络号—主机号的二层结构,而CIDR用区别于传统标准分类的IP地址与划分子网的概念的“网络前缀(network -prefix)”,用”<网络前缀>/<主机号>“代替网络号—主机号的二层结构,形成新的无分类二层地址结构

<网络前缀>/<主机号>

<网络前缀>/<主机号>这种格式为:”斜线记法“。如:200.16.23.0/20表前20位为网络前缀,后12位为主机号

同标准的分类IP地址一样,主机号全0的网络地址和全1的广播地址不分配给主机

2. CIDR的应用

例如:一个校园网获得200.24.16.0/20的地址块,希望将它划分为8个等长的较小的地址块



七、网络地址转换NAT

NAT的作用有两个:

1. 解决网络地址短缺,支持IP地址复用

2. 网络安全

例如在企业内部,NAT和代理服务器、防火墙结合使用,采用一个内部专用IP和一个全局IP一对一的静态映射,达到隐藏内部网络地址的目的

IP地址复用原理

NAT技术解决IP地址短缺,主要用于ISP,ADSL,有线电视和无线移动接入的动态IP地址分配

原理:

例如ISP有1000个全局IP地址,但是它有5000个使用专网内部专用IP的用户。

ISP在具有NAT功能的路由器中保持一个IP地址池,管理着多个全局IP地址。凡是需要访问外部Internet的用户,首先想NAT路由器申请,由NAT临时分配一个全局IP地址给用户;用户访问结束后,NAT路由器收回IP地址,供其他用户使用。

之前提到过一个私有地址,所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址,路由器接收到私有地址,不会向Internet转发该分组,那么主机该如何通过私有地址和Internet进行通信?

NAT就是私有地址和全局地址转换的功能!

解决全局IP地址不够用:连端口号一起转换!

NAT的有动态NAT和静态NAT两种

“静态NAT”:一对一,配置一个内部专用IP地址对应一个公用IP地址。

“动态NAT”:多对多,多个专业IP地址对应一个或几个全局IP地址。可实现IP地址的重用节约IP地址。如:ISP有1000个全局地址,但它有5000个使用专用内部专网IP地址的用户。

NAT的工作原理



私有地址为10.0.1.1的主机如何访问地址为135.2.1.1的web服务器?

(1)产生一个源地址为10.0.1.1,端口为3342,目的地址为135.2.1.1,端口号为80的ip分组,转发到NAT功能的路由器

(2)NAT路由器将私有地址转换成全局IP地址202.0.1.1,产生一个源地址为202.0.1.1,端口为5001,目的地址为135.2.1.1,端口号为80的ip分组

(3)地址为135.2.1.1,端口号为80的web服务器接收到该IP分组后,,返回源地址为135.2.1.1,端口号为80,目的地址为202.0.1.1,端口为5001为80的ip分组

(4)NAT路由器将全局IP地址转换成私有地址,产生源地址为135.2.1.1,端口号为80,目的地址为10.0.1.1,端口为3342的ip分组,主机10.0.1.1接受

NAT的潜在问题

由于NAT(NAPT)都依赖于自己的转换表,所以会有一下问题:

无法从NAT外部向内部服务器建立连接

转换表的生成和转换操作都会产生一定的开销

通信过程中一旦NAT发生异常需要重新启动时,所有的TCP连接都会被重置

即便备置两台NAT做容灾备份,TCP连接还是会被断开

八、IPv6协议

1. IPv6地址的表示

IPv6地址采用”冒号十六进制表示法“,将128位地址按每16位划分为一个位段,每个位段转换为一个4位的十六进制数

例如:

二进制:

0010000111011010000000000000000000000000000000000000000000000000

0000001010101010000000000000111111111110000010001001110001011010

冒号十六进制表示法:

21DA : 0000 : 0000 : 0000 : 02AA : 000F : FE08 : 9C5A

如果某段存在几位都是0的情况,可以使用零压缩法压缩:

零压缩法:00D3(D3),02AA(2AA),000A(A),0000(0),但是AB08不能压缩为AB8

21DA : 0 : 0 : 0 : 2AA : F : FE08 : 9C5A

如果存在几个连续位段都是0,可以用”双冒号表示法“

21DA : :2AA : F : FE08 : 9C5A

用”双冒号表示法“表示的一个问题:如何确定冒号省略的段数?

8 - 现有段数 = 冒号省略的段数

2. IPv6的前缀

在IPv4中,子网掩码用来表示网络和子网地址长度。用前缀长度来区分子网号和主机号。而 IPv6不支持子网掩码,只支持前缀长度表示法,用“地址/前缀长度”表示

64位前缀是一个子网前缀,少于64位的前缀是一个路由前缀,或是一个地址范围。

例如:

21DA:D3::/48 是一个路由前缀

21DA:D3:0:2:2F3B::/64是一个子网前缀

3. IPv6的结构



版本

意义和IPv4相同,值为6表示使用Ipv6协议

流量类型

表示IPv6分组的类型或优先级,类似IPv4的服务类型字段

流标记

表示分组属于源节点和目标节点之间的一个特定分组序列

载荷长度

载荷长度表示有效载荷的长度,包括扩展报头和高层PDU

下一个报头

表示若存在扩展报头,“下一个报头”值表示下一个扩展报头的类型

跳步限制

与IPv4的TTL相似

源地址和目的地址

发送主机的地址和要发送的目标主机地址

九、IPv4和IPv6共存——隧道技术

隧道技术指的是IPv6分组进入IPv4网络时,将IPv6分组封装成IPv4分组,整个IPv6分组变成IPv4的数据部分。当IPv4分组离开IPv4网络时,再将其数据部分交给主机IPv6协议,这就像在IPv4网络中打通了一个隧道来传输IPv6。



隧道配置

隧道配置分为路由器-路由器,路由器-主机或主机-路由器,主机-主机三种情况,以及手动配置的隧道与自动配置的隧道两种类型

(1)路由器-路由器隧道



(2)路由器-主机或主机-路由器



(3)主机-主机

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: