对于OSI网络七层模型,我想大家都有所了解吧,今天我也在学习中,整理下OSI七层模型种的网络层。废话不多说,我们直接开始!!
网络层
网络层基本概念
首先是网络层,作为OSI模型的第三层,其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。具体功能就是逻辑编址,分组传输和路由选择。该层控制着物理链路层和传输层之间的信息传递,并建立、维持和终止网络的连接。
具体地说,该层主要是将数据链路层的数据转化为数据包,然后通过路径选择,分段组合,排序等控制方式,将数据从一个网络设备安全准确地传递给另一个网络设备。一般来说,数据链路层主要解决的是同一网络内节点间的通信,而网络层主要解决的是不同子网间的通信。
网络层中比较重要的协议有五个,分别是IP协议,ARP协议,DHCP协议,ICMP协议,IGMP协议和组播路由选择协议。
这里我们先介绍下IP协议
IP协议的格式如下:
上图中包括了IP协议中部分字段的解释,接下来我们来看IP协议下IP地址的管理。
协议地址管理
ipv4版本下的IP地址是一个4字节的无符号整型数字,可以描述42亿9000万+的主机。这看着可能够用,但随着网络的发展,一个人的主机可能的不足,所以我们使用动态分配地址(DHCP)的方式,使用NAT技术组建私网,同时将ipv4升级为ipv6版本,由4字节无符号整型加长位16字节无符号整型。
IP地址的组成
IP地址主要有主机号+网络号组成。
网络号就是一个网络的标识,一个网络所能分配的IP地址中都会包含这个网络号,通过网络号路由器就能判断某个IP地址属于哪个网络。
主机号就是一台主机在网络中的标识,通过主机号,路由器就能判断某个IP地址是当前网络中的哪个主机。
网络号又被划分为A,B,C,D四类
A类网络号:高1位固定为0,有7位网络号,24位主机号,即0111 1111,网络号范围为0-127,IP地址范围:0.0.0.0-127.255.255.255,因此A类网络通常用于组件大型网络,如主干网。
B类网络号:高二位固定为0,有14位网络号,16位主机号,即1011 1111,网络号范围位128-191,IP地址范围:128.0.0.0-191.255.255.255,B类网络通常用于组件中型网络,如区域网。
C类网络号:高3位固定为0,有21位网络号,8位主机号,即1101 1111,网络范围位192-223,IP地址范围:192.0.0.0-223.225.225.225,C类网络通常用于组件小型网络,如校园网,小公司的私网等。
D/E类网络:特殊网络
由于该类划分方式过于粗糙,会导致大量IP地址浪费,因此在后期网络的开发中,在上述划分的基础上有设计出了CIDR方案:它消除了传统的A类、B类和C类地址以及划分子网的概念,通过子网掩码更加有效地分配IPv4的地址空间。它可以将好几个IP网络结合在一起,使用一种无类别的域际路由选择算法,使它们合并成一条路由从而较少路由表中的路由条目减轻路由器的负担。
子网掩码
子网掩码是一个4字节的无符号整型,数据必须由二进制连续的1组成
作用:1.子网掩码netmask与IP inet地址相与,可以得到IP地址的网络号
例如:netmask:192.168.65.131 ;inet:255.255.255.0 -> 网络号:192.168.65.0
2.子网掩码取反,可以得到子网中最大主机号
例如netmask:255.255.255.0 最大主机号为255
私网的组建
我们来通过下图说明私网是如何组建的:
首先,一个路由器一般有两块网卡:一块用来接收上层网络地址,另一块用来组建私网,作为私网网关。
我们可以看到,电脑1和电脑2都是路由器建立的私网,所以它们的子网掩码与路由器相同,其次就是网关都是路由器的IP地址,最后是IP地址,前面就是网关的地址,之后就是创建分配的地址。
接下来,我们想要让电脑1去访问服务器,应该是192.168.2.2:6000端口向服务器24.24.24.24:8000发送数据,这时我们为了节约IP地址,我们采用替换的方式,由路由器发送,即23.23.23.23:6000->24.24.24.24:8000,这样我们就解决了IP地址不够的现象。
但这时,我们又出现了一个问题,如果电脑1和电脑2都访问服务器,那么当资源返回时,该返回给那个主机呢??这时,我们就需要NAT技术,即网络地址转换技术。
NAT技术,就是当主机跨网络通信时,NAT技术可以将报文的目的IP地址转换为路由器的WAN口IP地址。也就是可以将私有IP和公有IP转化的过程。公网IP是唯一的,使用NAT技术后,可以使得不同局域网内的主机的IP地址可以一样。但是同一局域网内的主机IP地址不能一样。
此时,电脑1和电脑2通过路由器转换的地址,虽然网关IP相同,但是端口号却不一样,所以服务器可以通过网关将数据发送个路由器,而路由器有可以通过端口号将数据发送给连接它的电脑。
其实,网络在划分时,也专门为私网的组建分出了几个网络号:
1. 10.*.*.*
2. 172.16.*.*——172.32.*.*
3. 192.168.0.*——192.168.255.*
私网的网络号,我们只需要注意相邻的网络不适用相同的网络号即可。由于私网主机对外通信使用的都是公网IP,经过NAT替换后对外地址是不冲突的,因此不相邻的私网,是可以使用相同的网络号的。
特殊的IP地址
主要我们要注意两个特殊的IP地址
- 0.0.0.0:代表本地主机上的任意网卡IP地址,通常用于服务端程序的绑定监听地址
- 255.255.255.255:全网广播地址
这两个特殊的IP地址由于其特殊的功能,不能分配的主机。也就是说,在一个网络中,最少有两个IP地址不能分配给主机。
路由选择
路由选择就是路由器为数据选择合适的路径进行转发
在网络通信中,每个网络通信设备上都会有一张路由表,如下图所示
这其中,从左到右依次是目标网络号,网关地址,子网掩码,连接这个网络的网卡。一个路由器连接了多少网络,就得有多少块网卡,每一块网卡都能获取一个对应网络的IP地址。路由表中就有多少条路由信息。