服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

数据链路层、传输层的可靠传输机制有本质区别吗?

日期: 来源:车小胖谈网络收集编辑:车小胖谈网络

01

一个师傅带出的两个徒弟

没有本质区别,如果非要说区别,前者覆盖的范围小于后者的覆盖范围。前者覆盖范围位于一条链路两端节点之间,后者是源节点与目标节点之间。

无论链路层、传输层、应用层实现可靠传输的机制都是一样的,即对传输的数据进行编号,每一个编号的数据都要在超时时间内收到接收方的确认。否则发送方会超时重传,直到到达重传的上限而放弃。

02

链路层内心OS

链路层放弃数据,是直接把数据扔了,用户感受不到数据被扔。链路层只是尽自己最大可能,通过多重传几次以应对链路质量降级引起的丢包,重传间隔在毫秒级。通常整个重传时间总和在几十到几百毫秒之间。链路层的内心OS是这样的:即使数据被扔了,高层会继续重传的,所以扔了就扔了。


03

传输层内心OS

传输层放弃数据,也是把数据扔了,用户会感受到,因为用户会收到连接断开的提示。传输层的重传间隔远远高于链路层的间隔。之所以这样设计,传输层内心OS是这样的:先让底层多尝试重传几次,如果还不行(没有恢复),老夫再重传也不迟。

通常基于TCP的应用层是不会重传数据的,应用层重传数据的一般是基于UDP的,重传原理与内心OS与TCP是一样的,即依赖于底层多努力修复,实在修复不了,再撸袖子上场。

04

为何传输层重传间隔 > 链路层重传间隔?

为何传输层的重传间隔要大于链路层,而不是相反呢?既然这么问,那先来假设传输层重传间隔 <链路层重传间隔,会发生什么?

既然TCP开始重传了,大概率数据丢了,而且大概率是在链路层丢了。可是皇帝(链路层)不急太监(传输层)急,链路层还没有来得及重传,传输层的重传数据又进入链路层的发送队列。其实链路层的重传队列里有需要重传的数据,相当于有一份数据的多份COPY。但是对于链路层来说,它不知道这些数据是一份数据的多份COPY,每份数据都会传输。这对于本来链路质量不佳的网络更是加重了重传的负担,给网络添堵。这些多份COPY最后只有到达目的主机才能被传输层TCP发现并最终丢弃,这就是资源浪费。
而传输层重传间隔 > 链路层重传时间总和,可以有效降低一份数据的多份COPY被链路层传输,避免网络资源的浪费。
最后,本文的链路层默认是无线的链路层802.11,而不是以太网的链路层802.3,以太网的链路层是不可靠的,不会对数据进行重传,每份数据只传输一次,游戏就结束了,数据的重传依赖于TCP或者应用层。

文章推荐

相关阅读

  • 创新不断,体验加码,SAP on Azure 持续跃升!

  • (本文阅读时间:7分钟)面对突如其来的疫情和瞬息万变的业务环境,企业 IT 需要保持灵活性和敏捷性,数字化转型则成为了每个企业的必修课。在疫情期间,数字化转型平均为企业带来了14%
  • AI会带来大量不可重复的研究结果吗?

  • 海归学者发起的公益学术平台分享信息,整合资源交流学术,偶尔风月从生物医药到社会科学,科学界越来越依赖人工智能(AI)算法,通过机器学习工具来“干活儿”。通过购买AI工具服务,研究
  • 【干货】Origin投稿格式以及高级使用技巧

  • 【做计算 找华算】理论计算助攻顶刊,10000+成功案例,全职海归技术团队、正版商业软件版权!经费预存选华算,高至15%预存增值!1Origin 点线图页面转成高清晰 TIF 图全过程很多期刊
  • 一家千亿城商行的数据化变革

  • 近年来,为顺应数字经济高速发展浪潮,济宁银行把“数字化转型”作为全行发展的第一战略,以客户为中心,以业务需求为导向,打造数据驱动的智能化银行。为了更好地深化普惠金融服务、
  • 企业如何为2023年面临的勒索软件攻击做好准备

  • 点击上方“蓝色字体”,选择 “设为星标”关键讯息,D1时间送达!根据行业媒体的报道,美国金融机构在去年处理的勒索软件赎金达到10亿美元以上,创下新的记录,几乎是前年的三倍。勒索
  • 行业观察|Web 3.0或将带来全新的市场经济形态

  • 很多人把Web 3.0的发展历程,与以人为本的网络发展的黎明时代相提并论,认为其本质是一场文艺复兴。在初代Web诞生的90年代,许多人对待新鲜事物持谨慎态度,却很少有人真正预见到人

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 如何能够看懂TCP/IP 协议细节?

  • 01高门槛,勿入在Cisco平台上有一个很有用的Traceback log功能,实时记录当前Code运行到特定模块、特定函数,这样一旦系统崩溃、死机的时候,可以有效记录机器是在哪个模块、哪个函