分享

一文玩转网络层解析(一) :网络层的设计问题

 新用户0935snDB 2022-08-12 发布于河南

网络层的功能

我们的上一个话题是数据链路层,大家都知道了,数据链路层处理的是一条线路上的问题,有些是点到点问题,有些是广播形式的竞争问题,它具有指定级别的可靠性,以太网和802.11就是链路层协议的例子。
那么网络层是干啥的呢?网络层主要处理如何把多条链路结合到网络中,以及如何把网络与网络联结成互联网络,以便我们在两个相隔很远的计算机之间发送数据包。网络层的任务包括找到传递数据包所走的路径,可能沿途要经过许多跳的中间路由器。网络层是处理端到端数据传输的最底层。
为了完成这个任务,网络层需要知道网络拓扑结构,还需仔细选择路由器,避免线路负载过重或空闲,还要解决当发送方和接收方位于不同网络的跨网传输带来的问题。IP就是网络层协议的例子。

网络层的设计问题

存储转发数据包交换

如下图,网络层最重要的组件是网络服务提供商(ISP)提供的路由器,以及客户端设备。图中主机H1直接连到ISP的路由器A上,而H2位于一个局域网内,这个LAN上还有台路由器F,路由器F通过一条租用线路连接到ISP的设备上。然而,为了我们关注算法的目的,我们还是把客户端的路由器作为ISP网络的一部分来考虑,因为它们运行的算法相同。

文章图片1

若一台主机要发送一个数据包,先传输给最近的路由器,由路由器的链路层完成了对它校验和的验证之后,先被存储在路由器上,再沿着路径被转发到下一个路由器,直至到达目标主机。这种机制即为存储-转发数据包交换。

更多linux内核视频教程文档资料免费领取后台私信【内核】自行获取.

文章图片2
文章图片3

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

提供给传输层的服务

一个阵营
以Internet社员为代表,认为路由器的任务仅仅是传送数据包,不用再做别的事情,主机应该接受网络是不可靠的这个事实,自己完成差错控制和流量控制任务。这种观点导致了网络服务应该是无连接的这样的结论,只需要发送包和接收包,每个数据包必须携带完整的目标地址,因为每个数据包的运送独与它前面的数据包。
另一个阵营
以电话公司为代表,认为网络应该提供可靠的、面向连接的服务。Internet正在朝着面向连接的特性进化,因为服务质量变得越来越重要了。
根据网络层提供的服务类型可能存在两种不同的组织方式。
若提供的是无连接的服务,则所有的数据包都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何连接,这样的情境中,数据包称为数据报。
若提供的是面向连接的服务,则在发送数据宝之前先建立起一条从源路由器到目的路由器之间的路径,这个连接称为虚电路。

无连接服务的实现

如图,假设主机H1上有进程P1(应用层)有一个很长的消息要发送给P2,它将消息递交给传输层,并指示传输层将消息传送给主机H2上的进程P2。
假设这个消息的长度是最大数据包长度的4倍,网络层必须将消息拆分成4个数据报1、2、3、4,再用某种点到点协议将这些数据包一次发送给路由器A。
至此,ISP接管传输任务。每个路由器都有一个内部表,DA为目的地址,NH为下一条地址。可以看到,数据报4的目的地址虽然也指向F,但它被A转发给了路由器B,这或许是由于A了解到在ACE路径上发生了流量拥塞,因此更新了路由表。
管理这些路由表并做出路由选择的算法就是路由算法。IP协议是整个Internet的基础,是无连接网络服务的重要范例。路由器使用IP地址来单独转发每个数据包。

文章图片4

面向连接服务的实现

为了避免发送每个数据包都选择一条新路径,在传送包之前就在源机器和目标机器之间建立一条确定的路径,并保存在这些中间路由器的表中。当连接被释放之后,虚电路也随之消失。每个数据包包含一个标识符,指明它属于哪一条虚电路。

H1要与H2建立连接:
H1选择连接标识符1,并告知网络要建立虚电路 。A的路由表增加第一行,表示若一个标了1的数据来自H1,则发到C,且赋予连接标识符1,以此类推。
H3要与H2建立连接:
H3选择连接标识符1(因为它是发起连接的,所以只有1),并告知网络要建立虚电路。A的路由表增加第二行,表示若一个标了1的数据来自H3,则发到C,且赋予连接标识符2,这是为了让C区分来自H1和H3的分组

文章图片5

一旦映射关系建立起来,从H1/H3的所有分组都沿着相同的路径传输。

虚电路与数据报网络的比较

文章图片6 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多