计算机网络系统学习精华总结(二):网络层——1

       介绍网络层之前,先了解一个概念——虚拟互联网络,然后再介绍网络层最重要的部分:IP协议。

       (1)虚拟互联网络:

       a. 实际的计算机网络错综复杂;b. 物理设备通过IP协议,屏蔽了物理网络之间的差异;c. 当网络中的主机使用IP协议连接时,则无需关注网络细节。可以想象一下主机A与主机B通信,不管之间需要经过多少路由器、网关、主干ISP、地区ISP,我们统统不关心,将AB中间的部分视为虚拟互联网络即可。

        IP协议使得复杂的实际网络变为一个虚拟互联的网络,并且使网络层可以屏蔽底层细节而专注于网络层的数据转发;IP协议解决了虚拟互联网络中数据报传输路径的问题。

        (2) IP协议:

         对于每个硬件设备来说,都有独一无二的MAC地址,MAC地址不会改变,也不会被修改。类似的对于网络层,每个设备都有唯一的IP地址,但是与MAC地址不同的是,IP随着网络环境的不同会发生改变(比如从家庭网络环境走到公司网络环境)。MAC地址是12个16进制数表示,共计48bits,MAC地址是硬件生产厂商生产时写入硬件内部的,不随环境改变而变化,计算机中一个网卡(有线或者无线都算)对应一个MAC地址。

         IP地址采用点分十进制的方式表示,4组,每组8位,共计32bits。IP地址是唯一标记互联网中计算机的标识。

         IP数据数据报分为IP首部和IP数据报数据。IP首部信息如下(图片来源于网络):

计算机网络系统学习精华总结(二):网络层——1

         版本(4位):IP协议版本,通信双方必须一致(IPv4和IPv6);
         首部长度(4位):最大为15(1111),表示IP地址首部长度,单位是“32位字”(4字节),最长60字节; 

         服务类型TOS(8位):这里暂不介绍,有需要了解的自行了解;

         总长度(16位):最大数值65535,表示IP数据报总长度(IP首部+IP数据报数据);

         标识(16位):唯一地表示主机发送的数据报,初始值随机,每发送一个数据报就+1.同一个数据报的不同分片的标识是相同的。

         标记(3位):标志IP报文是否可被分片。位1保留,位2禁止分片,位3标识更多分片,除了数据报最后一个分片,其他分片都要把它设置为1;

         片偏移(13位):IP报文分片时,片偏移记录当前数据帧保存的第几个偏移数据。

         TTL(生存时间,8位):表明IP数据报文在网络中的寿命,每经过一个设备,TTl减1,TTL为0时,网络设备必须抛弃该报文,避免数据报在网络中无限次传输;

         协议(8位):表明IP数据所携带的具体数据是什么类型的(TCP-6、UDP-17、ICMP-1、IGMP-2、IP-4........);

         首部校验和(16位):校验IP首部是否出错;

         32位源IP地址(发送端的IP地址)和32位目的IP地址。选项:可变长的可选信息,最多包含40字节。这部分信息很少被使用。

         网络层的数据传输是通过逐跳(hop-by-hop)的方式进行的,此外还需要路由表完成数据传输。路由表(计算机和路由器都拥有)存放着目的IP地址与下一跳的IP地址的对应关系。例如主机A与主机C通信,图中需要经过E、F两个路由器,其过程如下:A发出目的地为C的报文,A查询路由表发现下一跳为E,A将数据发送给E,E查询路由表发现下一跳为F,再发给F,F发现与目的地C之直接连接,将数据报发送给C。

         之前介绍过数据链路层的MAC地址表,现结合网络层和数据链路层,介绍下数据传输的过程:还是上文中的A到C传输,这里加上数据链路层:A发送目的地为C的数据报,查询路由表发现下一跳为E,A将数据报交给数据链路层,并告知E的MAC地址(怎么知道E的MAC地址是后面ARP协议做的事),数据链路层接收IP数据并封装成帧,填充源MAC地址(A)和目的MAC地址(E)(以太网协议,目的地址和源地址分别为6字节,48位),然后数据链路层通过物理层将数据发送给E。E的数据链路层接收到数据帧,将帧数据交给网络层,此时E查询路由表发现下一跳为F,E将IP数据报传给数据链路层,并告知目的MAC地址为F,E的数据链路层封装数据,并填充源MAC地址(E)和目的MAC地址(F),通过物理层传输给F。之后F传给C的过程与上面类似。

         该过程总结:网络层中设备查询路由表,找下一跳,然后将IP数据报传给数据链路层,告知下一跳目的地的MAC地址(数据链路层中的以太网协议中源地址和目的地址(6字节,48bits)实际上是MAC地址,48位),封装成帧并发送(查询MAC地址表找到网络接口)。数据帧的每一跳的MAC地址都在变化(源、目的),IP数据报的每一跳的IP地址始终不变。

         上述过程中,我们注意到,数据链路层封装时,网络层怎么知道下一跳的目的地的MAC地址?这就要介绍一个新协议:ARP协议。ARP(Address Resolution Protocol)协议:地址解析协议。ARP协议将网络层的32位IP地址解析成数据链路层的48位MAC地址。通过ARP缓存表实现,ARP缓存表存放着IP地址与MAC地址的对应关系。ARP工作原理:A通过路由表查询到下一跳为E(此时E的IP地址知道了),则A会先查询自己的ARP缓存表是否存在E的IP地址与E的MAC地址对应关系,如果存在则直接告知数据链路层E的MAC地址;如果不存在映射关系,A会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(FF-FF-FF-FF-FF-FF),交换机介绍到后发现是广播帧,便将其从所有端口发出(源端口除外),主机B收到后会将A的IP地址与MAC地址存进自己的ARP缓存表,同时返回ARP应答(其中包括自己的MAC地址),A收到应答就记录B的IP地址和MAC地址的对应关系放进A的ARP缓存表。此时AB都存放着对方的ARP缓存表。ARP缓存表的内容并不是永久有效的,存在一定的期限。

          RARP(Rerevse Address Reslotution Protocol)协议:逆地址解析协议,将48位MAC地址转换成32位IP地址。本期关于网络层、IP协议的介绍到此为止,下期继续介绍IP地址的子网划分、子网掩码、无分类编址CIDP、NAT技术以及ICMP协议的相关内容。