数据平面
网络层要解决的问题是什么?要解决的是数据交付的问题,并且交付的过程是尽力交付,而不是可靠交付。对于数据平面,处理的是数据包是怎么从当前路由转发到下一个路由器。很直接的想法就是路由器维护一张信息装发表,路由器根据数据包的信息,转发到下一个路由器。因为数据包的转发对时间是敏感的,所以考虑到性能问题,信息转发表的实现由硬件时间。
NAT
既然是交付,那么首先要有一个交付的目的地,也就是所谓的ip地址。ip地址的分类,子网掩码,dhcp是怎么工作的,也没什么好说的。有意思的是的NAT。当IPv4地址不够用了,IPv6又还不普及,怎么解决公网地址不够用的问题?答案是在路由器上做了手脚,增加了一个网络地址转换表。多台机器共用一个路由器,也就是共用一个外网地址,请求的中间根据网络地址转换表转换,就可以解决了机器数量远远超过IPv4可用地址的数量的问题。没有什么问题是增加一个中间层无法解决的。
数据转发
数据包从当前路由转发到下一个路由,实现方式还是用的异步加定时任务的方式。队列可能按照优先级,维护了多个。