网络层概述

虚拟互联网络

  以前在数据链路层概述里遗留了一个问题,就是若是主机发送的信息要跨设备传输,该如何实现呢?程序员

  实际上,在IP协议和网络层中提出了一个概念,即虚拟互联网络,让计算机都使用IP协议链接,这样的话就不须要关注信息传递的时候的细节,只须要把信息发送到一个虚拟的互联网络中,这个网络就能够实现信息的传递缓存

  简单点说,就是只须要关注逻辑层上信息的传递(A发送给B),不须要关注物理层上信息是如何传递的(A如何发送到B)网络

  能够看出,在这个过程当中,IP协议发挥着重要的做用,包括:blog

  1.使得复杂的实际网络变为一个虚拟互联的网络接口

  2.使得网络层能够屏蔽底层细节,专一网络层的数据转发(这一点相似于1,也就是把物理上的问题转换成逻辑上的)图片

  3.解决了虚拟网络中的数据报传输路径路由

 

IP协议

IP地址

  相似于数据链路层中的MAC地址,网络层中也有地址,即IP地址,为网络中每个网络设备惟一身份并且不可改变,能够用来识别不一样的网络设备io

  但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不可用

(未完待续)