OSI七层模型---网络层(IP协议、网段划分、IP地址分类、子网划分、子网掩码、路由转发)

网络层中一个重要的协议:IP协议

IP协议

作用:有能力将数据从A主机送往B主机。
这里写图片描述
理解三个基本概念:
主机:配有IP地址,但是不进行路由控制设备。
路由器:配有IP地址,又能进行路由控制。
节点:主机和路由器的统称。

IP协议格式

这里写图片描述

字段 解释
4位版本号 指定IP协议的版本,若是IPV4,该字段为4.
4位首部长度 单位为4字节,TCP首部长度不包括选项,是20个字节(20/4=5),即0101。选项最大字节长度为40,(60/4=15),即1111。
8位服务类型 3位优先权字段,4位TOS字段,1位保留字段(置为0)。4位TOS(最小延时、最大吞吐量、最高可靠性、最小成本),只能选其一。ssh/telnet选最小延时,ftp选最大吞吐量。
16位总长度 IP数据报整体占多少个字节。
16位标识 区分是否分片,若IP报文在数据链路层被分片了,那么每一个片里面的标识是相同的。
3位标识 第一位保留,第二位表示是否分片(1表示禁止分片,如果报文长度大于MTU,IP模块就会丢弃报文)。第三位表示分片结束标记(最后一个分片置1,其他为0)。
13片偏移 是分片相对于原始IP报文开始处的偏移,为了分片后的拼接。
8位生存时间(TTL) 数据到达目的地的最大报文跳数,一般为64.每经过一个路由器,TTL减一,直到为0还未到达,就丢弃。主要为了防止路由循环。
8位协议 表示上层协议的类型
16位首部校验和 使用CRC校验,鉴别头部是否损坏。
32位源地址和32位目标地址 表示发送端和接收端
选项字段 不定长。

网段划分

网络中两台主机进行通信,有IP地址应该可以找到对应的主机,那么,为什么会有网段划分呢?

我们举个例子,在学校找一位同学,如果直接找,会很不容易,但是如果先找到这个同学所在的学院,然后在找这位同学就相对来说比较方便了。
同理,网络号确认一个区域,在两个区域中找到目的主机,使得在网络中查找更加高效。

IP地址分为两个部分,网络号和主机号。

* 网络号:保证相互连接的两个网段具有不同的标识。
* 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。


* 不同的子网就是把网络号相同的主机放在一起。
* 如果在子网中增加一台主机,这台主机的网络号和这个子网的网络号一致,但是主机号和该子网中的其他主机重复。
* 主机号为1的一般都为路由器接口。

所以,合理设置网络号的主机号,就可以保证在相互连接的网络中,每台主机的IP地址都不相同。但是,程序员手动管理子网的IP,是一个相当麻烦的事情。出现一种DHCP技术,能够自动给子网内新增主机节点分配IP地址,避免了手动管理IP的不方便。

IP地址分类

IP地址可分为以下五类。
这里写图片描述

类别 地址范围
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地址是否同属于同一子网,只有在同一子网才能“直接”互通。

子网掩码

* 用来区分网络号和主机号
* 是一个32位的正整数,通常用一串"0"结尾
* 将IP地址和子网掩码进行按位与操作,得到的就是网络号
* 网络号和主机号的划分与地址类型无关。

那么如何确定子网掩码呢?

将一个网络划分为多个子网,网络号将要占用原来的主机位。例:C类地址,21位标识网络号,8位标识主机号,要将其划分为8个子网,则需占用3位原来的主机标识位。此时,网络号由之前的21位变为24位,子网掩码为:255.255.255.224/27
这里写图片描述

特殊的IP地址

* IP地址全0,成为了网络号,代表这个局域网。
* IP地址全1,成为了广播地址,用于给同一链路中相互连接的所有主机发送数据包。
* 127.*用于本地还回测试,通常是127.0.0.1

IP地址其实是有数量限制的,我们只有那几位地址,最多只有2^32个IP地址,大概是43亿左右。那么网络中可以接入43亿台主机吗?

实际上,由于一些特殊的IP地址的存在,比如说路由器,也占用IP,数量就不足43亿。另外,IP地址并非是按照主机台数配置的,而是每个网卡都需要配置一个或多个IP地址。

子网划分在一定程度上缓解了IP地址不够用的问题,提高了利用率,减少了浪费,但IP地址对的绝对上限并没有增加,仍然不是够用,会有三种方式来解决IP地址不够用的问题?

* 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备每次接入网络中得到的IP地址不一定是相同的。
* NAT技术
* IPV6:IPV6用16字节128位来表示一个IP地址。

私有IP地址和公网IP地址

(1)私有IP地址

子网中的IP为私有IP。

* 10.*,前8位是网络号,共2^24=16,777,216个地址。

* 172.16.到172.31.,前12位是网络号,共2^20=1,048,576个地址。
* 192.168.*,前16位是网络号,共2^16=65535个地址

(2)公网IP地址

除了私有IP地址,其余的都为公网IP。
这里写图片描述
通过上图,我们知道:

* 一个路由器可以配置两个IP地址,一个WAN口IP,一个LAN口IP(子网IP)。
* 不同的路由器,子网IP是相同的(通常为192.168.1.1)。
* 子网内的主机IP地址不能重复,因为一个子网中的主机可以相互访问。但是,子网之间的IP地址可以重复,所以,不同子网中的两个主机不可以进行访问。但是一个公网,一个子网可以进行访问。
* 子网中的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换,替换成WAN口IP,逐级替换,最终数据包中的IP地址成为一个公网IP,这种技术被称为NAT。

路由

路由其实字面意思,就是一跳一跳的“问路”的过程。

IP数据包的传输过程:

当IP数据包,到达路由器时,路由器先会查看目的IP,路由器决定这个数据包能直接发送给目标主机,还是需要发送给下一个路由器,依次反复,一直到达目标IP。

我们提到节点需要决定将数据包发送的下一个位置,那么是怎么知道的下一个位置是哪里?
因为每个节点都有一张路由表,如果IP命中了路由表,就直接转发。

Linux下查看路由表的命令:route
这里写图片描述

字段名称 代表含义
Destination 目的网络地址
Gateway 下一跳地址
Gemask 子网掩码
Flags 标志,U表示此条目有效,有G表示此条目的下一跳地址是某个路由器的地址,没有G表示不需路由转发。

说明:路由表的最后一行,主要下一跳地址和发送接口两部分组成,当目的地址与路由表其他行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

路由转发过程:拿到 一个主机的IP地址,先和第一行的子网掩码进行与运算,与第一行的目的网络地址不符,再和下一行的子网掩码做与运算,直到最后一行的前一行,要是还未找到目的网络,就将该IP地址发给路由器,然后进行转发。

猜你喜欢

转载自blog.csdn.net/zwe7616175/article/details/80466134