计算机网络知识持续构建(四)——网络层

网络层主要作用有两个,转发路由

  • 转发是指不同的网络设备的输入链路收到数据报后将其移动到适当的输出链路,可以理解为战术层面
  • 路由是指网络层必须规划数据报从源端到目标端的路径(主要借助IP,网际协议),可以理解为战略层面的规划

路由器和交换机是主要的网络设备,便是在网络层发挥作用,负责转发数据报和维护路由表计算路由

网络模型

网络层的服务模型主要有两个虚电路网络和数据报网络

虚电路

虚电路网络基本上模仿了现实中的网络,它的数据报中包含各个链路编号,在发送数据前,首先建立一个“真实”的连接,然后发送的数据报会根据已定好的链路编号依次将数据传送到目的地

路由器也维护相关的连接状态信息

数据报网络

这是我们最常见的网络模型,即无需预先建立任何连接,只需要依靠网络设备不断转发。所以每个数据报到达目的地经过的路径可能不一样

最大传输单元(MTU),一个链路层帧能承载的最大数据量,所以其严格限制了IP数据报的长度

IPv4编址

即我们平时最常接触到的IP地址,由32个比特位组成,可以表示2^32个地址(大约40亿)。为了记忆方便,一般会用4个十进制数表示,并用点号分开

子网

多个IP地址可以组成一个子网,一般会使用子网掩码来表示子网的IP前缀,用IP地址和子网掩码进行与运算则可以计算出子网号

用单个网络前缀来表示多个网络的能力称为地址聚合,也称路由聚合路由摘要,即几个子网可以用他们的公共前缀来表示,这样可以方便路由表的维护

分类编址(classful addressing)

即我们通常所说的A、B、C类网络,分别具有8、16、24比特的前缀,这样可以方便网络地址的分配,但由于分配口径过大,容易造成浪费

DHCP

接入网络要具有一个IP地址,但我们经常在各个时候、各个地点都需要接入网络,难道要不断的设置IP地址吗(包括子网掩码、网关、DNS服务器)?

不需要的,DHCP协议可以给我们自动分配临时IP地址,过程大概是这样

  1. DHCP服务器发现
  2. DHCP提供可用IP,以及租用期
  3. 发送DHCP请求
  4. DHCP服务器发送响应

NAT

考虑这个需求,你们公司拥有上百台机器,但是只有一个对外IP,同时因为预算和集群机器经常进进出出(包括手机等移动设备)那么如何解决这些设备的IP地址问题呢?

一种流行的技术方案是NAT(地址转换协议),主要原理是这些设备在公司的内网具有一个内网IP地址,然后在对外网关那里利用端口来映射内网机器和端口,这样内网的各个机器可以公用这个唯一IP的机器对外通信

这也会导致一个问题,即从内网可以与外部IP建立连接,但反过来,外部IP想访问内部机器却没有办法,这主要是因为从内网往外访问时NAT转换表中有记录如何转发数据报,而直接从外往内时却无法察觉内部机器

解决这个问题有个专用术语,NAT穿越。原理大致是利用一台额外的主机,内网机器先与此机器建立连接,然后该主机代理内网机器对外接受连接,然后转发给内网机器。国内的花生壳网就提供类似服务

RIP

RIP,Routing Information Protocol,路由信息协议,即网络系统如何构建并维护路由表的

大致说一下原理便是,相邻的路由器之间每个一段时间就会将自己所知道的网络信息与相邻的设备进行交换,经过一定时间的交换后,某个IP便在网络中“发布”了,然后当路由器收到数据报后,根据数据报的IP信息和自身路由表的信息决定如何转发数据报

一般一个数据报会在15跳内到达目的地,所以超过15跳会被设置为无效数据报

推荐阅读更多精彩内容