前言:本节内容为网络层。 主要讲解IP协议报文字段以及分离有效载荷。 另外, 本节也会带领友友认识一下IP地址的划分。 那么现在废话不多说, 开始我们的学习吧!!
ps:本节正式进入网络层。
目录
认识IP协议
TCP协议的工作是对数据传输进行可靠性控制。而真正进行传输数据的, 其实是IP协议。IP协议的本职工作:将数据跨网络从A主机送到B主机。
所以, TCP + IP的作用就是:将数据可靠的跨网络从A主机送到B主机。
看下面一张图,利用学生学习的例子来理解一下IP的工作:
IP协议的报头
报头和有效载荷如何分离
IP协议报头和有效载荷分离的方法就是:固定长度+自描述字段
这个固定长度就是四位首部长度。 假设四位首部长度的大小是x,那么x*4 = 真实报头。所以如果标准报头是20个字节,那么这个四位首部长度最少就是5。最多是二进制全1,即15。上面的自描述字段其实就是十六位总长度字段(后面讲解)。
到时候就是IP协议的报头(除去选项)的长度固定20字节。 只拿四位首部长度的部分和十六位总长度的部分。就能将报头和有效载荷进行分离。
四位版本
对于IPv4来说,就是4位版本。
随着入网设备的增多,IPv4已经不足了。所以解决方案就有:NAT技术、IPv6。但是从根本上解决问题还是lpv6。只不过IPv6和IPv4是完全不兼容的。所以上面这是IPv4的报文。IPv6是128个比特位。
八位服务类型
3位优先级,四位TOS字段。和1位保留字段。四位TOS字段就表示:最小延时、最大吞吐量、最高可靠性、最小成本。
十六位总长度
报文的总长度。这个十六位总长度 + 4位首部长度就叫做自描述字段。UDP和TCP最终都要把数据交给IP层。无论是字节流还是数据报,所有的报文在IP层其实都是一个一个的数据报。所以,所谓的面向字节流的概念,只是TCP层以上的概念,不是IP层的概念。
32位源IP和32位目的IP
我们以前连接服务器,我们要使用IP地址和port。 本质上其实就是socket套接字要用到port和IP地址。为什么?
为什么需要这两个数字,因为这两个数字就能定位我们的目标主机。其中TCP报头里面填充的是port,IP报头里面填充的是IP地址。——这就是为什么要将点分十进制ip转化为四字节。因为IP报头的源IP和目的IP是四个字节。所以当一个IP报文扔到网络里面的时候,真正要支持路由的其实是根据我们的32位目的IP地址来进行路径选择的。
在我们真正的通信过程之中,中间的路由器是没有TCP层的,只有双方主机是有TCP层的。(可以有,但是不需要,因为路由器只工作在网络层。)
认识IP地址
网络号主机号
其实IP地址分为两部分,网络号和主机号。
网络号:保证相互连接的两个网段具有不同的标识;
主机号:同一个子网内,主机之间具有相同的网络号,但是必须有不同的主机号 。
目标网络号是由子网掩码进行划分的。 通过子网掩码划分成一个个的子网, 每一个子网都有一个对应的网络地址, 或者叫做网络号作为标记。
子网内部有着一台台主机, 这些主机的序号, 就是主机号。
网络号 + 主机号一起构成了IP地址。
就类似于下面这种情况:
这个IP地址就类似于学号。我们的学号是不是被精心涉及过的,是不是有类似于:学员编号 + 专业编号 + 班级编号 + 学生序号?这个学号我们可以简化一下:学号 = 学院 + 序号
如下图是学院编号:
然后每个学院都有自己的编号,比如001, 002等。 所以组合起来,就比如计算机学院的001号学生。所以学号就是111001。
假如我是计算机的,假如我今天找到了一个钱包, 这个钱包不知道是谁的,只有一个学号,比如说115008。那么我们就去食堂一个一个的问,看看是谁的。这个问的过程,就是查找。 而查找的本质是排除。这个一个一个问本质是线性遍历,效率太低。
所以我就想到了学生会主席,学生会主席就是管理这个的,所以,我今天就将这个钱包拍了照片,让学生会主席去办事。所以,学生会主席就将钱包拿到一看,是115开头。说明是电气的,所以学生会主席就将钱包拿到了电器那边。让电气的学生会主席将钱包给他们学院的学生。
这个故事里面,钱包就是数据。 我就是主机A,那个丢钱包的就是主机B。 然后学生会主席就是路由器。主机A将钱包发给计算机的路由器,计算机的路由器将钱包发给电气的路由器。 电气的路由器再把钱包发给主机B。
为什么这个过程找到目标主机变快了呢。一这是因为主机A把数据给计算机路由器,是把计算机学院里面的所有主机全部淘汰了,一下子就淘汰了一群人。然后计算机路由器是把所有的路由器中的其他路由器淘汰了。直接找到电气路由器。电气路由器又是把电气学院的所有主机都淘汰了一下子找到了主机B。查找的本质是排除,所以这个方法,是淘汰的速度变快了。
所以,IP = 目标网络 +目标主机。 本质上是为了让定位更加快速。
CIDR(无类域间路由)
IPv4是32位,其实就是2^32 = 42亿+。 ——》所以IP地址就是一种有限的资源。
在IPv4的早期, IP地址就被分为了网络地址和主机地址。 有一种分类方法是五类划分法。就是有ABCDE类。
但是这种划分方式的缺点很快就显现出来了。大部分组织都申请B类网络地址,导致B类地址很快就分配完了。 并且其中这16位主机号根本就用不完,所以就造成了大量的浪费。
针对这种浪费的情况,就提出了一种新的方案:无类域间路由。叫做CIDR。
CIDR摒弃了这种分类方法,通过子网掩码来划分网络号, 更加灵活。同时CIDR的表示方法为: IP地址/前缀长度。 其中前缀长度就是网络号, 后面的就是主机号。 比如:192.168.0.10/24。这里面前24个比特位就是网络号, 后8位是主机号。
网络号由子网掩码划分, 子网掩码也是一个32位正整数,通常用一串“0"来结尾。左侧以"1"开始。将IP地址和子网掩码进行“按位与“操作,得到的结果就是网络号。
怎么用呢,就比如一个在子网掩码为:子网掩码是255.255.255.0的子网内的主机IP地址是140.252.20.68。
那么得到的网络号就是两个进行按位与。 得到140.252.20.0,所以子网的范围就能知道了是140.252.20.0~140.252.20.255。如果140.252.20.68用CIDR表示法为: 140.252.20.68/24。
其中有两个IP地址不用,.0和.255。意思就是开区间。 140.252.20.0我们叫做网络号,140.252.20.255我们称为广播。
如果子网掩码是255.255.255240,那么得到的网络号就是140.252.20.64。这个就是网络号,即:140.252.20(十进制).0100 0000(二进制)。那么IP地址的范围就是:140.252.20.11110000~140.25220.0100 1111。所以,子网掩码,可以对IP32位,进行任意的划分。
理解IP地址
下面的每一个圈, 就代表了一个子网。方框框表示路由器。 菱形表示主机。
然后每一个子网内部都有多个主机, 不同子网之间通过路由器进行连接。
路由器上面有一个或者多个LAN口, LAN口配置上两个不同子网内的IP地址, 就能连接两个不同的子网。这里路由器在配置的时候, 配置的IP地址通常为子网内的第一个IP地址。 就比如192.168.1.0/24这个子网。里面的可用IP地址范围为 192.168.1.1 ~ 192.168.1.254。 所以,路由器就通常配置192.168.1.1为LAN口IP。
然后对于每一台主机,分配规则有动态分配和静态分配。 静态分配也就是服务器这种不动的入网设备, 一般由人工配置。 动态分配就是手机这种, 由路由器进行分配, 只有当手机进行入网时, 路由器才会自动的为它分配一个没有使用过的IP地址。
然后以后发送数据, 就是主机A将数据发送给路由器, 由路由器去找到目标主机所在的子网,然后把数据交给目标子网的网关路由器, 这个路由器再把数据交给目标主机。
这里要注意, 我们说的子网和局域网不是相同的概念。 子网是确定的,精确的, 由子网掩码来定义。 而局域网则比较模糊, 是物理上的逻辑概念。
特殊的IP地址
主机号全零是子网;全1是广播。 127.0.0.1为本地环回。
分析IP地址不足问题
CIDR一定程度上缓解了IP地址的不足。 但是并没有增加IP地址的上限。上面谈到的策略是分类+子网掩码。
所以就有了两种解决IP地址不足的方法:
- 动态IP地址分配:就是我们的电脑不想上网的时候,电脑是没有IP地址的。 当想要入网的时候,就要先连接家里的路由器,然后路由器就动态分配了一个IP地址(这个是NAT技术, 后面讲解)。
- IPv6:真正的提高了上限。但是与IPv4严重不兼容。其实IPv6现在已经做的很好了,但是现在世界上为什么还是很少使用IPV6呢?因为TCP、IP协议栈是在操作系统内部的,意味着如果要将IPV4改编成IPV6,那么就要把世界上所有的终端设备全部切换成IPv6。给全世界上所有的操作系统换成IPV6,这个是不现实的。但是,如果使用IPV6的用户多于使用IPv4的用户时,那么就能改变lpv6的使用格局。我国是IPV6使用的最好的,当年零八年奥运会长内网就是使用的IPV6,要知道,我国的物联网也是非常发达的,一个地区的网络发达程度取决于什么?取决于用户,用户,说到底就是入网设备。以后智能设备一旦发展起来,那么入网设备将会大幅度增加。谁掌握的入网设备范围广,多,谁在网络领域就有话语权。所以,我国一旦将物联网的设备发展起来,什么只能电气,智能家居啥啥,那么哪个国家的入网备能比过中国?没有,而且我们平时是不是看到时那些大型的互联网公司,有些网站下面是不是都写着一个某某某支持IPV6技术,其实就是我国规定的,要让我们国家的所有入网设备全部支持IPV6技术,到时候物联网起来,就能快速更换成IPV6。就迅速拥有了天数的网民。
私有IP和公有IP
如果一个组织内部组件局域网,只用于局域网内的通信,而不是直接连接到Internet上面,使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址。
- 前八位是10的,全部都只能用来组建私网。172.16 到172.31,全部都只能用来组建私网。192.168开头,全部都只能用来组建私网。
- 其余的用来构建公网。
ifconfig查看IP地址
——————以上就是本节全部内容哦, 如果对友友们有帮助的话可以关注博主, 方便学习更多知识哦!!!