百科问答小站 logo
百科问答小站 font logo



TCP 为什么没有基于 UDP 实现? 第1页

  

user avatar   flily 网友的相关建议: 
      

看上去,TCP是UDP的一个超集,而其实,不是,UDP有一些很重要的功能,是TCP实现不了的。举两个例子,比如授时协议,就必须通过不面向连接的UDP来实现,因为面向连接的TCP有重传机制,因为重传的因素会增加时间计算的误差。另外,当我们需要使用广播数据的时候,TCP也是没有办法实现的,传输层协议,不面向连接的UDP才能支持广播。

TCP没有是基于UDP进行,如@陈硕 所说,确实TCP出现得比UDP早,这应该是一个很重要的原因。

另外一个原因,是我看到@狼大人 在@TonySeek 的评论里面的回复想到的。我们在讨论网络结构层次的时候,往往有一个误区,就是很容易把两种不同的标准混为一谈了。我们都知道,网络的分层有分五层的有分七层的,五层的分法是人们在建设互联网的时候,工程实践的做法,而七层的分法,是OSI的分法。

OSI对于网络的描述和实际是有脱节的,看看就行,不可全信。比如说,按照OSI的分法,HTTP是应用层协议,而HTML则应该是一种表示层协议,但是,下层的HTML数据却是封装在上层的HTTP数据报文里面的。

按照RFC-1122 1.1.3的描述,传输层(或者叫运输层,Transport Layer)的主要任务,是为应用程序提供端到端(end-to-end)的通信服务。在这个描述下,UDP是完全应该划分为传输层协议的,一点误差都没有。

对于UDP,我认为这完全是把IP层的功能,原封不动的引入传输层,仅仅增加了端口和校验,并没有其他任何的功能(恕我真的不知道OOB消息是什么)。和RFC-768中所说的一样,仅仅为应用程序发送消息和数据,提供了一种最小化的协议机制(a minimum of protocol mechanism)。和TonySeek所的那样,叫做UDP也很可能是因为这个原因。




  

相关话题

  怎样让自己的 PC 拥有强大的功能和极高的效率? 
  UDP 和 TCP 的 socket 分别一般用在什么地方? 
  计算机执行一条指令要多长时间? 
  如何彻底解决「网络延迟」这个问题? 
  既然 BGP 的前提是网络层是通的,那还需要 BGP 做什么用呢? 
  求推荐看tcp/ip源码的书籍? 
  能提供最好的网络设备的组织通常选择交换机而不用集线器,为什么? 
  信息技术中文字到底是什么? 
  如果美国断开对中国的根服务器,逼迫我们闭关锁国会怎么样? 
  做到(www.zuodao.com)究竟是一个什么类型的网站? 

前一个讨论
如果太阳下一秒就变成黑洞那么地球会马上被吸进去吗?
下一个讨论
如何通俗地解释一下 TCP/UDP 协议和 HTTP、FTP、SMTP 等协议之间的区别?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利