【JavaEE】_网络层

目录

1. 网络层的工作

2. IP数据报

3. 地址管理

3.1 IP地址不够的问题

3.1.1 方案一:动态分配

3.1.2 方案2:NAT机制(网络地址转换)

3.1.2.1 将IP地址划分为2类

3.1.2.2  NAT转换的实现

3.1.3 方案3:IPV6地址

3.2 网段划分

3.2.1 分类的IP地址

3.2.2 无分类编址CIDR

4. 路由选择

4.1 距离向量算法

4.2 最短路径算法


1. 网络层的工作

网络层要完成的工作主要是两方面:

1. 地址管理:制定一系列规则通过地址,描述网络上一个设备的位置;

2. 路由选择:筛选或规划处更合适的路径供结点之间进行数据传输;

2. IP数据报

【JavaEE】_网络层_第1张图片

1. 版本字段:4位,值为4时表示IPV4,值为6时为IPV6;

2. 首部长度:4位,单位为4字节,即首部最大长度为4*0xf = 60字节;

3. 服务类型:8位,分别为3位优先权字段(已弃用),4位TOS字段和1位保留字段(必须置0);

        4位TOS字段分别为:最小延时,最大吞吐量,最高可靠性,最小成本,四位彼此冲突,只有一位可置为1,用于表示IP协议不同的形态。

4. 总长度:16位,单位为字节,表示首部与数据部分之和的长度,数据报最大长度为2^{^{16}}-1=65535字节;

5. 标识:16位,同一数据报的各分片数据报具有相同标识

6. 标志:3位,目前只有2位有实际意义:

        (1)MF:1表示后面还有分片,0表示这已是若干数据报片中的最后一个

        (2)DF:1表示不允许分片,0表示允许分片

7. 片偏移:13位,单位为8字节,表示某片在原始IP数据报中的相对位置

8. 生存时间:8位,缩写为TTL,单位为跳数,指明数据报在互联网中至多可以经过多少路由器,最大值为255。TTL减为0时还未到达目标结点,就会被丢弃掉。从而避免了无法交付的数据包无限制地在互联网中兜圈子;

9. 协议:8位,表示此数据报的载荷部分使用何种协议(UDP或TCP)

10. 首部检验和:16位:只检验数据报首部,不包括数据部分

11. 源地址:32位,发送IP数据报的主机的IP地址;

12.目的地址:32位接收IP数据报的主机的IP地址;

注:1. IP协议虽然存在64KB的限制,但IP协议通过标识、标志、片偏移三个字段,支持拆包组包功能

2. 区别版本字段与协议字段:

版本字段:表示IP协议的版本;

协议字段:表示将IP数据报应交给传输层的哪个协议;

3. 源地址与目的地址均为32位,可见IP地址本质就是一个32位的整数,为了方便理解,常写作点分十进制形式,8位二进制(一个字节)表示为一个十进制,用3点隔开;

3. 地址管理

3.1 IP地址不够的问题

IP地址是一个32位的整数,能够表达大约2^{32},大致为42亿九千万,互联网发展至今,能上网的设备早已超过这个最大限制,如何解决IP地址不够用的问题,是一个需要思考的问题。

3.1.1 方案一:动态分配

将IP地址动态分配给需要上网的设备,把当前不上网的设备的IP地址分配给需要上网的设备;

此方法只提高了IP地址的利用率,但并未增加IP地址的数目。

3.1.2 方案2:NAT机制(网络地址转换)

本质上是让一个IP地址代表一批设备。

3.1.2.1 将IP地址划分为2类

(1)内网IP(局域网):10.0.0.0/8,172.16.0.0/12,192.168.0.0/16为内网地址块

同一个局域网内部,内网IP之间不能重复

不同的局域网中,内网IP可以之间可以重复

(2)外网IP(广域网):其余的IP地址块均为外网IP

外网IP始终不允许重复,必须保证唯一性;

3.1.2.2  NAT转换的实现

【JavaEE】_网络层_第2张图片

注:(1)如果当前局域网呢有多个主机访问一个网站服务器,即使两个数据报的源IP均为NAT路由器映射后的外网IP,但这个数据报的端口号一般都是不同的(临时分配),故而NAT路由器会结合端口号将服务器返回的响应返回给目标主机

(2)即使极小概率下,这多个设备的端口号如果也相同,在NAT路由器进行内网IP向外网IP进行映射并替换时,如果发现多个设备具有相同的目的IP与目的端口就会检查它们的端口号是否相同,如果相同,也会实现端口号的替换,以区分不同的内网设备。

(3)NAT机制最大的优势是一个纯软件的方案,无需硬件加持。

(4)NAT机制下,局域网内部的设备能够主动访问外网的设备,但外网的设备无法主动访问内网的设备

当前的网络环境就是结合NAT+动态分配的方式来解决IP地址不够用的问题;

3.1.3 方案3:IPV6地址

IPV6采用16字节(128位)来表示IP地址,表示范围为0~2^{128}-1,能表示的地址范围非常庞大;

IPV6的引入大大地扩展了地址空间,但这种地址扩充方案并未得到广泛应用,因为IPV6与IPV4不兼容,如需支持IPV6需要更换设备,导致向IPV6的过渡进程是比较缓慢的。

我国的IPV6普及程度是非常高的,国家也非常推荐使用IPV6。

一方面,在互联网公司的互联网产品中的一些app首屏加载页已经显示支持IPV6,比如手机淘宝;

另一方面,民用宽带也在积极升级,近几年新装的宽带都是直接赠送IPV6路由器的。

一般情况下IPV6虽然被支持,但并没有默认开启;

3.2 网段划分

一个IP地址分为网络号与主机号两部分,其中网络号标识了一个局域网,主机号标识了局域网中的一个设备

【JavaEE】_网络层_第3张图片

3.2.1 分类的IP地址

【JavaEE】_网络层_第4张图片

注意:1. 主机号全为0表示当前的局域网,不能分配给具体的主机;

2. 主机号全为1表示当前网络上的所有主机,表示广播地址,不能分配给具体的主机。

3. 以127开头的IP是环回IP,最常用的是127.0.0.1,表示设备本身,常用于测试代码

这种分类的IP地址由于网络号的位数是固定的,因此管理简单,使用方便,转发分组迅速。

3.2.2 无分类编址CIDR

1. CIDR的记法为:{<网络前缀>,<主机号>};

2. 斜线记法表示为:IPV4地址/网络前缀所占的比特数,如:

128.14.35.7/20 = 10000000 00001110 00100011 00000111;

3. 子网掩码:在斜线记法中,斜线后面的数字就是地址掩码中1的个数,把二进制的IP地址与地址掩码进行按位AND运算即可得出网络地址,如:

/20 地址块的地址掩码是:11111111 11111111 11110000 00000000;

4. 路由选择

路由选择用于描述IP协议(IP数据报)的转发过程。

每个路由器内部都有一个数据结构的路由表,根据数据报中的IP地址查路由表;

其中的动态路由算法有:

4.1 距离向量算法

【JavaEE】_网络层_第5张图片

【JavaEE】_网络层_第6张图片

4.2 最短路径算法

【JavaEE】_网络层_第7张图片

你可能感兴趣的:(JavaEE,java-ee,计算机网络,ip)