网络层提供的服务是将数据从源主机到目的主机进行数据报传输,网络中的每一个主机和路由器都有一个网络层,提供主机到主机(路由器)之间的服务。
在发送端,网络层将传输层的数据段(segment)进行封装,封装到网络层的数据报(datagram)中进行传输。
在接收端,网络层需要把数据段(datagram)提取出数据段(segment)给传输层进行处理。
一、网络层核心功能
1.1 转发,路由选择
转发(forwarding)是指把数据分组从路由器的输入端口转移到合适的输出端口,由硬件完成。 路由器是如何知道当前输入的分组应该从那个输出端口转发出去呢?答案就是转发表。
每一个路由器需要维护一个转发表,路由器基于转发表来决定输入的分组应该被转发到那个输出接口。当请求到来时,路由器直接读取转发表即可。
转发表示意图:
地址 | 输出链路 |
---|---|
0001 | 1 |
0002 | 3 |
0003 | 2 |
所以路由器需要事先维护一个转发表,这便是网络层的另外一个核心功能:路由选择。
路由选择(routing)是指确定分组从源到目的地的路径的网络处理过程,由软件实现。
路由器基于一定的路由算法来计算路径,最终计算出来的路径信息保存到了转发表里面,供路由器转发时使用。
![](https://img2020.cnblogs.com/blog/737467/202102/737467-20210218223953035-1487342481.png)
1.2 连接建立
针对某些网络比如ATM网络,在分组传输前需要先建立连接。
网络层连接和传输层连接的区别:
- 网络层连接:主机到主机之间(或者路由器)
- 传输层连接:属于端到端的进程之间的连接
ATM网络慢慢在退出舞台。
二、网络层服务模型
2.1 无连接服务
-
不事先为分组确定传输路径
-
每个分组的独立确定传输路径
-
不同分组的路径可能不同:转发表可能会变(会出现先出发后到达的case)
核心用是数据报网络,现在急于tcp/ip的internet就是数据报网络
2.2 连接服务
- 传输前为整个分组建立连接,确定传输路径
- 后续所有分组都急于预先确定的路径(连接)进行传输
- 所有分组的传输路径相同
- 传输结束后需要拆除连接
核心使用时虚电路网络,ATM网络,出于淘汰状态。所为虚电路就是模拟电路交换,传输前先建立连接,资源进行独占。