网络层提供了端到端的通信,所以两台计算机想要进行通信就必须具有网络层地址(逻辑地址)
不同网络之间的计算机互相通信过程中涉及到的组要角色有:
(1)源计算机
(2)路由器
(3)目的计算机
要实现通信的目的,每个角色的网络层都需要提供相应的服务
一 : 源计算机网络层提供的服务
源计算机上的网络层提供四种服务:
1 分组化处理,
2 查找下一跳的逻辑地址,
3 查找下一跳的物理地址,
4 对数据进行必要的分片处理.
网络层接收来自上层的几个信息: 数据,数据长度,逻辑目的地址,协议ID(网络层使用协议的标识号),以及服务类型.网络层对这些信息进行处理后生成了一组数据包片,以及下一跳的MAC地址,并将他们一起交付给数据链路层.
1 分组化处理
网络层将来自上层的数据封装到一个数据报中(即为数据添加一个首部). 其中包含了该分组的逻辑源地址和源目的地址,分片相关的一些信息,请求了此服务的协议的ID,数据长度,在加上一些可能的选项.还包括一个只计算该数据包首部的检验和. (注意: 上层协议仅提供了逻辑目的地址,而逻辑源地址来自网络层本身)
2 查找下一跳的逻辑地址
准备还的数据包包含了该分组的源地址和目的地址.这个数据包可能需要途径多个网络才能到达终点.如果源计算机和目的计算机不在同一个网络上,那么数据包就应当交给下一个路由器.数据报中没有关于下一跳的任何线索.源计算机需要查询自己的路由表并找出下一跳的逻辑地址.
3 查找下一跳的MAC地址
网络层并不是真的将数据交付给下一跳,而是应该由数据链路层来负责真正的交付.数据链路层需要下一跳的MAC地址才能向其交付.地址解析协议(ARP)可以根据给出的逻辑地址找到相应的MAC地址.所以查找下一跳的MAC地址是通过ARP来完成的.
4 分片
大多数局域网和广域网后会对一个帧所携带的数据的最大长度(MTU)加以限制,而网络层的数据很可能会超过MTU的限制.在被床底到数据链路层之前,数据需要被分割成为更小的单元.分片操作需要保留数据报首部中的信息.虽然数据被份片,但首部却需要重复多次.此外,在这个首部还需要增加一些额外的信息,以指明该数据在整个数据报中的位置.
二 路由器提供的服务
转发一个数据报要涉及到路由器上的两个接口: 入接口和出接口.因此路由器上的网络层需要与两个数据链路层打交道: 如接口的数据链路层和出接口的数据链路层.网络层负责接收来自入接口数据链路层的数据报(如有必要还会再对其进行分片处理), 然后将这个分片交给出接口的数据链路层.通常路由器不涉及上层.
三 目的计算机提供的服务
目的计算机需要向自己的上层交付数据,在交付这些数据之前需要重组数据片.在检查数据片的有效性后,要从中将数据提取出来并保存.当所有的数据片都到齐后,将数据重组,并交付上层.与此同时,目的计算机还要设置一个定时器.如果这个定时器超时,所有的数据片都会被销毁,并发送一个差错报文,此时所有的数据片都需要被重发.分片处理对于上层来说是完全透明的,因为在所有的数据片都到达并重组之前,网络层不会向上层提交任何不完整的数据.一个数据报可能在源计算机上已经分过片了,但还可能在任一台路由器上在次被分片,所以重组的过程比较复杂.
来源:https://www.cnblogs.com/riasky/p/3483661.html