24小时热门版块排行榜    

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

xvusrmqj

铁虫 (初入文坛)

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

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


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



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

chunyuan314

银虫 (正式写手)

引用回帖:
5楼: Originally posted by xvusrmqj at 2016-10-23 22:57:42
跳与跳之间保证了,端与端之间肯定也保证了啊。端与端不就是一跳一跳组成的吗?...

中间人是知道,但是发送方和接收方那个层次的不知道

[ 发自手机版 http://muchong.com/3g ]
Lifeisgood
10楼2016-10-24 18:52:06
已阅   回复此楼   关注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的回帖
信息提示
请填处理意见