我们知道网络层处于数据链路层和传输层之间,它在数据报文包的传递中起到了重要作用。
我们来看上面这张图。左边的主机想和右边的主机通话,那么这个数据包一定会经过网络。中间灰色的圆圈是路由器,他们组成了一个网络,数据链路层只是把这个信息传递了“一跳”,也就是从介质的一端传递到另一端,在图里面比如说从路由器1传递到2.但是网络层做的事情是,规划好所有跳的路线,比如说数据包要依次经过1,2,3,6才能从左边主机到达右边主机,这就是网络层一个非常重要的作用,也就是提供“路由routing”。
别看这个功能看似简单,实际上非常复杂,因为网络是动态可变的,每个链路成本可能都在变化,网络层需要时刻都对于每一个数据包给定最佳的路线,这就涉及到路由器的各种确定最佳路线的算法,比如距离矢量算法和链路状态算法等等,可以看文中末尾的拓展部分。