网络层概述
虚拟互联网络
之前在数据链路层概述里遗留了一个问题,就是如果主机发送的信息要跨设备传输,该如何实现呢?
实际上,在IP协议和网络层中提出了一个概念,即虚拟互联网络,让计算机都使用IP协议连接,这样的话就不需要关注信息传递的时候的细节,只需要把信息发送到一个虚拟的互联网络中,这个网络就可以实现信息的传递
简单点说,就是只需要关注逻辑层上信息的传递(A发送给B),不需要关注物理层上信息是如何传递的(A如何发送到B)
可以看出,在这个过程中,IP协议发挥着重要的作用,包括:
1.使得复杂的实际网络变为一个虚拟互联的网络
2.使得网络层可以屏蔽底层细节,专注网络层的数据转发(这一点类似于1,也就是把物理上的问题转换成逻辑上的)
3.解决了虚拟网络中的数据报传输路径
IP协议
IP地址
类似于数据链路层中的MAC地址,网络层中也有地址,即IP地址,为网络中每一个网络设备的唯一身份而且不可改变,可以用来识别不同的网络设备
但MAC地址是永久不变的,而如果计算机所处的网络环境发生变化(例如从家到图书馆),则IP地址会发生变化
IP地址一般用点分十进制表示,每一部分范围为0-255(如192.168.1.101),最多可以表示2的32次方(4294961296)个不同的IP地址
IP数据表
之前提及,数据链路层获得的“帧”数据来自于网络层的IP数据报
这里的IP数据报包括IP首部以及IP数据报的数据,而IP首部有一个固定的格式(如下,图片来自慕课网)
版本
IP协议的版本,占4位,通信双方必须用一样的版本,目前主流为IPV4
首部位长度
即IP首部长度,单位为“32位字”(4个字节),一共占4位,最大长度为15
也就是首部最大长度为4*15=60字节
总长度
IP数据报总长度(IP首部+IP数据),占16位,最大数值为65535
由于这个数值比最大存储单元(MTU)大,所以实际传输中,数据链路层会把IP数据报分片
标志
主要的功能是标注IP数据报是否可以分片
片偏移
用来记录当前数据帧是第几个偏移的IP数据,跟分片有关
TTL
表示报文在网络中的寿命,8位,每经过一个设备减一,为0时必须丢弃该报文
解决了报文在网络中找不到终点时无限传输消耗带宽的问题
协议
表示IP数据携带的具体数据是什么协议的(TCP、UDP等),8位
不同的协议对应不同的值
首部校验和
校验IP首部是否有出错,16位
源IP地址/目的IP地址
发送IP数据报/IP数据报到达的机器的地址
IP协议转发流程
路由表
信息在网络层中传输的时候,是用“逐跳”的方式进行的,也就是从一个网络/设备“跳入”另一个网络/设备
路由表中就存储着目的IP地址和下一跳IP地址的对应关系表,例如目的为IP1,则下一跳到IP4这样
计算机和路由器中都有路由表
转发流程
在网络层中,转发流程如下:
1.发送信息的计算机会在其路由表中查询目的IP地址的下一跳IP地址,然后把数据发给下一跳IP地址的路由器/计算机
2.收到信息的计算机/路由器继续在其路由表中查找目的IP地址的下一跳IP地址,如果目的IP是和其直接相连的,则发送给目的计算机,否则继续“跳”
而如果是网络层和数据链路层以及物理层结合,则转发流程如下:
(发送)
1.源计算机发出IP数据报,通过路由表查找下一跳地址
2.IP数据报被交给数据链路层,并被告知目的地址
3.数据链路层通过MAC表填充源MAC地址和目的MAC地址
4.数据链路层通过物理层发送数据
(接收&下一次发送)
5.目的MAC地址接收数据帧,并把该数据交给网络层
6.目的计算机/设备查询路由表,找到下一跳地址
7.数据报被交给数据链路层,并通过物理层再次发送
每一跳中,IP数据报的IP地址不变,而MAC地址一直在变化
ARP协议
ARP缓存表
IP协议的转发中存在这样一个问题,IP数据报从网络层发送到数据链路层,但是传输时候是如何让数据链路层知道要传输的MAC地址呢?这里用到的就是ARP协议
ARP协议(Address Resolution Protocol),即地址解析协议,用来把网络层的32位IP地址解析为数据链路层的48位MAC地址
这一解析过程有一个重要的表,即ARP缓存表,把IP地址和MAC地址对应起来,是ARP协议和RARP协议的关键
1.如果缓存表中有IP地址和MAC地址信息,则直接解析,并把数据帧发送
2.如果没有,则ARP协议广播一个IP的信息,所有设备收到广播后会看自己的IP是不是这个目标IP,是的话,该广播的物理设备进入该IP地址以及对应的MAC地址
但是由于IP地址可随着设备所处的网络环境发生变化,因此ARP协议存在有效期
可以在命令提示符中输入arp -a查看ARP缓存表
ARP协议数据帧包括了2字节的类型、28字节的内容以及18字节的填充信息
RARP协议
RARP(Reverse Address Resolution Protocol),即逆地址解析协议
和ARP协议相反,该协议用来把数据链路层的48位MAC地址解析为网络层的32位IP地址
RARP协议数据帧包括了2字节的类型、28字节的内容以及18字节的填充信息
在TCP/IP协议栈里,ARP协议和RARP协议是最基础的,并且整个操作过程对程序员是透明的
IP地址的子网划分
前面我们看到,IP地址有32位,可表示上亿的不同IP地址,而为了对这上亿的IP地址进行区别和管理,我们对IP地址进行了子网划分
子网划分
我们把IP地址划分为网络号和主机号,并根据网络号和主机号长度,把IP地址分为:
A类:网络号8位(0-127,2的7次方个),主机号24位(2的24次方个),判断时取前8位,头位为0(表示没达到128)
B类:网络号16位(128.0-191.255,2的14次方个),主机号16位(2的16次方个),判断时取前8位,首两位为10(表示不到192)
C类:网络号24位(192.0.0-223.255.255,2的21次方个),主机号8位(2的8次方个),判断时取前8位,首两位为11(表示超过192)
特殊的主机号
全0:当前网络段,不可分配特定的主机(如1.0.0.0)
全1:广播地址,向当前网络段所有主机发消息(如1.255.255.255)
特殊的网络号
A类:全0为特殊网络,后7位全1为回环地址
其中127.0.0.1为本地回环地址,不属于任何一个有类别的地址类,代表本地虚拟接口,可以理解成一个永远不会掉的接口
这个接口一般用来检查本地网络协议、基本数据接口是否正常
B类:如10000000.00000000(即128.0)也不可用
C类:192.0.0不可用
(未完待续)