对于网络层来说,它是传输层协议的具体实施,那么它具体是如何实施的呢?
IP能够实现将数据从A主机送到B主机,在网络中,每一个IP报文都包含了它的目标网络和目标主机。
而IP协议就是网络层使用的协议。
为了了解协议,我们需要了解它的报头。
其中,IP地址所记录的就是网络号和主机号。
在数据链路层有一个规定,就是发送的数据不可超过1500字节,但是传输层并不关心数据有没有超过1500字节,因此网络层对传输层发下来的数据要进行分片,将数据分开。
如何知道数据被分片了?
解决这个问题我们需要先了解报头中的这三个属性。
通过这三个属性,我们就知道报文是否被分片了。
若是3位标志的第三个为1表示是分片,若是为0&&13位片偏移大于0也说明是分片。
同一报文的分片则通过16位标示分辨。
而分片的数据则按照13位片偏移来按升序组装,而报头中的校验和则保证数据的正确性。
如何进行分片的?
当传输层发下来三千字节的数据时,网络层的IP协议会先添加报头。
然后发现数据已经超过1500字节了,因此它就会将数据给分片。
第一片包括原来的IP报头和1480字节的数据。
第二片则是纯1480字节的数据,然后添加报头。
第三片则是剩下的40字节的数据,然后添加报头。
为了提高传输效率,方便定位主机,互联网上的每一台主机都隶属于一个子网,每一台主机在网络上都有自己主机号,每一个子网都有自己的网络号。
我们可以将子网当成学院,主机则是学生,同一个学院的学生的学院号相同,但是它们的学号不同。
而网络通信的过程就像是学生寻找失主的过程。
假设王五捡到了张三的学生证,王五就去学生群里发消息说捡到了学号为 000 123 学号的学生证,让他认领,张三就在学生群中看到了消息,从而找回了自己的学生证。
然后我们更换下概念,学生是主机,学院是这个主机所在的子网,学生群则是公网。
就像图中,同一个网段中的主机标识不同,但是不同网段的主机标识可以相同,而且不同网段的网络号也不同,此外,连接两个子网的就是路由器。
这样就能够保证网络中的主机的IP地址都不相同。
其中路由器在网络中担任了重要角色,它带有DHCP功能,能够自动的给子网内新增节点分配IP地址。
在之前,曾提出过一种划分网络号和主机号的方案,将IP地址分为五类。
但是这种方案随着网络的发展出现了局限性,大部分组织都申请的是B类的IP地址,导致B类很快就分配完了,但是A类却浪费了大量地址。
因此又提出了新的划分方案:CIDR。
例如:
此外还有一种特殊的表述方法:140.252.20.68/24,就表示IP地址是 140.252.20.68,子网掩码高24位为1,也就是 255.255.255.0 。
由于特殊IP地址和网络高速发展,IPV4版本的IP协议已经不够用了。
即便有CIDR来缓解,但是依旧治标不治本。
因此各界大佬提供了三种方案。
一般组建局域网的都是私有IP,而私有IP是规定了的。
目前我们已经知道了网络通信实际上是主机发送数据包给路由器,路由器通过数据报上的目的IP来一层一层的找到对应主机,那么IP协议是如何做到的呢?
实际上IP协议这种一层一层找到对应主机的路的方式叫做路由,而路由就是靠路由器内部维护的路由表。
在网络中的每个节点都维护着自己的路由表。
在命令行中可以用 route 命令查看。
当我们发送数据报时,就是在路由表上通过与子网掩码运算,来和目的地址对比,若是运算后有对应的目的地址,就直接跳转,没有就采用默认目的地址,通过路由发送到其他子网上去。
通过这样的方式,我们经过一层一层的路由表的子网掩码计算得到的目的IP会越来越准确,最终定位到目标主机。
本篇博客了解了什么是IP,IP协议的报头格式,以及报头各个属性的作用,然后还了解了什么是分片。
而后了解到为了方便定位主机,提高传输效率,大佬们提出了网段划分,但是随之而来的是IP地址的不足,为了解决这个问题大佬提出了子网掩码的解决方法,还了解到一些特殊的IP地址以及IP地址的数量限制。
后面又了解到私有IP的划分,还了解到不同局域网之间的主机进行通信的大致过程,还了解了路由以及每个节点维护的路由表。
以上就是网络层协议的内容。