免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1496 | 回复: 0
打印 上一主题 下一主题

可靠还是不可靠? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-08 15:19 |只看该作者 |倒序浏览
    最近一直被一个很低级的问题所困扰。
    N久之前,不知看了什么书,留下这么一个印象:面向连接的服务就是可靠的,面向无连接的通信就是不可靠的。但是这几天得到了一个新的说法,就是面向连接的服务不一定是可靠的,而面向无连接的服务也可以是可靠的。
    为了能睡个安稳觉,鄙人又一次查阅了Tanenbaum的Computer Networks和谢稀仁的计算机网络两本巨著,同时baidu、Google双管齐下之,算是弄了个小明白。
    先解释一下什么是面向连接和无连接。
    所谓面向连接的通信是指在数据传输之前必须先建立链路,通信结束后释放链路,即有“建立链路-通信-释放链路”的过程,也就是说在通信之前预先分配了一定的资源。(通常认为是可靠的)
    而面向无连接则相反,在通信之前不需要建立链路。由于没有事先预留资源,所以它不能保证数据100%送到目的端。(通常认为这是不可靠的)
    但是,其实可靠与不可靠、面向连接与无连接并没有必然的联系。
    啥意思呢?
    先看IP网。
    IP协议通常运行在具有相当运算能力和逻辑能力的计算机(或者类计算机)上,它们一般都具有良好的上层纠错能力(TCP)。所以IP被设计成为面向无连接的(简单,产生的差错由上层处理)。
    注意这里,IP被设计成面向无连接的,但却可以提供可靠的服务!这是因为TCP的存在。TCP提供的是面向连接的服务,可以识别传输数据是否是正确的,如果不是的话,它会要求重传,直到正确为止(这也是TCP是可靠的原因)。可以得出结论,面向无连接的传输(网络层)也可以是可靠的(传输层),只是这是由传输层来实现的
    再看一下通信网。众所周知的,电话连接时面向连接的(这就是交换机的作用),而且由于其终端的“低能”(电话机),通信网必须提供可靠的传输,否则在终端接收的信号将是混乱至极的,甚至分辨不出这是人的说话声还是打雷声,也就是说,你的话音必须完好无损的(PS:奈奎斯特!)传送到另一端。注意,实际上,这种情况也不是完全可靠的,这里数据可能因噪声产生失真(就物理线路而言),但微小的失真在这里并不紧要。
    还要注意的是,TCP提供的可靠性和通信网提供的可靠性不是一个层面的。
    如果按照老的OSI来看,数据链路层提供可靠的传输,那么所有的在数据链路层以上的服务都是可靠的了,这显然是不准确的(例如网络层可能因为帧重组时出错而报错)。
    所以,所谓的可靠与不可靠是相对而言的。不同的层可以提供不同的服务,有的层可以同时提供两种服务。可靠与不可靠是要分层理解,单就某一层来谈的。若是混着看,会有极大的误导。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109412/showart_2143929.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP