24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4328  |  回复: 16
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xvusrmqj

铁虫 (初入文坛)

[求助] 数据链路层都有超时,重传,确认等差错控制的机制,为什么传输层TCP还要有?已有4人参与

如果数据链路层有差错控制机制,IP所在的应该是可靠的网络,而不是尽力而为的网络了啊?


上网查了很久有如下两个观点:
1. 数据链路层传输的是帧,而传输层传输的是报文,而一个报文要分成多个帧。但是这有什么关系啊?而且好像一个报文一个帧吧。。。
2. 有的网络的数据链路层有差错控制,有的没有,所以TCP保证统一要有。



不知道事实是怎样的?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bmwsci_123

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
网络设计是有面向连接的,无连接的。作为TCP/IP来说,IP层(即网络层)本质上是无连接的,不可靠的,传输层可以无连接,UDP,可以面向连接,TCP。如果网络层用的不是IP,而是比如ATM,那么本身ATM那一层就是面向连接的。
网络层是否面向连接和网络层是否可靠是两个独立问题。一种是可靠的、面向连接的服务,以基于ATM网络为运行实例;另一种是不可靠、无连接的服务,以Internet网络为运行实例。
通信子网提供的服务(面向连接或无连接)和通信子网的结构(虚电路或数据报)是相互独立的问题。存在4种组合可能:
面向连接+数据报子网=IP上的TCP,      无连接+数据报子网=IP上的UDP,
无连接+虚电路子网=ATM上的IP(简写为IPOA,即协议栈中ATM层上放一个IP层),
面向连接+虚电路子网=ATM层中的AAL1子层
数据链路层所提供的差错检测十分简单,而且只有检错功能,没有纠错功能。IP层本质上又不可靠。差错控制能力,包括检错和纠错主要集中在传输层。
上层数据不断加上各层开销,到数据链路层时可能就很大了,会超过MTU,就必须分片成帧,里面会注明顺序的,这样到另一端就可以按照里面注明的顺序进行重组再不断去掉额外开销递交上层。
物理层主要是为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,数据链路层每个网可能都不同,而互联网或者通信网络要做到的是互连、互通、互操作,那么每个“小”网都不一样,怎么互连或互联呢,就在上面覆盖一层,也就是网络层,网络层主要是屏蔽网络低层的差异性,提供一个统一的层次,然后对上提供路由等功能,数据链路层负责的是一段段链路间数据的传送,网络层负责的是一个个网之间数据的传送,也就是跨网的,而传输层提供的是端到端的数据传输,就是好比人在传输层看,只看到同一层,源端传输层和宿端传输层,即对等实体,不知道或者说不管下面网络层怎么传数据的,当然,教材上说网络层是从源主机到宿主机,传输层是源主机里的源进程到宿主机里的宿进程。
仅供参考,全凭印象
6楼2016-10-23 23:29:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

chunyuan314

银虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
数据链路层是在跳与跳之间保证的,TCP是在两个连接之间保证的吧

[ 发自手机版 http://muchong.com/3g ]
Lifeisgood
2楼2016-10-22 20:39:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wy_zidu2012

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
TCP/IP中数据链路层的差错控制只是有根据CRC校验,防止出现传输过程中出现的比特错误之类的问题,不足以向网络层提供可靠服务,因为还需要类似超时重传和滑动窗口协议及其他功能来保证可靠交付。

至于滑动窗口等实现可靠交付的功能,数据链路层也有,不过是OSI七层模型中数据链路层的功能,并未在实际中使用。所以,一般保证可靠交付的功能都在传输层来考虑。其实,设计OSI的初衷时,就有在数据链路层实现可靠交付的考虑。不过对于数据传输要求没那么高的服务,可靠交付反而会减小传输效率。

一个报文分成多个帧,说法有点不太准确,负责拆分数据的是网络层,而传输层只负责把应用层交付的数据添加端口号之类的首部信息后原样交付给网络层,由网络层根据链路的MTU决定是否分片以及具体的分片操作。

个人观点,不知道有没有解决lz的疑问~
3楼2016-10-22 20:41:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xvusrmqj

铁虫 (初入文坛)

引用回帖:
3楼: Originally posted by wy_zidu2012 at 2016-10-22 20:41:53
TCP/IP中数据链路层的差错控制只是有根据CRC校验,防止出现传输过程中出现的比特错误之类的问题,不足以向网络层提供可靠服务,因为还需要类似超时重传和滑动窗口协议及其他功能来保证可靠交付。

至于滑动窗口等 ...

滑动窗口不是流量控制的吗? 差错控制应该只有“纠错”, “检错-重传”吧。我想知道的其实就是什么时候数据链路层丢包不重传?而需要传输层请求重传?
4楼2016-10-23 22:56:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见