配色: 字号:
TCP网络协议以及其思想的应用
2015-11-16 | 阅:  转:  |  分享 
  
TCP网络协议以及其思想的应用

大部分程序员都听说过TCP/IP网络协议,或者都写过TCPsocket网络

的程序,甚至还学过TCP原理,少部分看过TCP协议的某一个实现版本.不

过,真正掌握TCP原理及思想的人,我觉得不多.只有理解了TCP原理及实

现,并且把它背后的思想和技术活学活用到其它的领域,那才算是真正掌握了

TCP.

TCP协议的目的,是在不可靠传输的IP层之上建立一套可靠传输的机制,

它所应用的技术,如滑动窗口,慢启动,大讲台,指数退避,Negal算法等,都是

优化目的.

活学活用TCP,要活学活用它的哪部分呢?我觉得就是在不可靠传输之上

建立可靠传输.事实上,传输是一个广义的概念,不局限于狭义的网络传输,应

该理解为通信和交互.任何涉及到通信和交互的东西,都可以借鉴TCP的思想.

例如,当一个人向另一个挥手,另一个也要挥手回应,这样的场景是一种交互,

也是一种通信.

可靠传输,最重要的是要区分出通信的两端,因为可靠传输不能脱离了通信

的两端,一旦脱离了,可靠就会变成不可靠.例如,一些初学者使用TCPsocket

来开发聊天程序,但想当然的认为既然使用了可靠传输的TCP协议,那么整个

系统就没有必要再考虑可靠传输的问题了.这是非常错误的,因为TCP的可靠

只是对于它自身来说的,甚至是对于socket接口层,两个系统就不是可靠的了,

因为write()发送出去的数据,没有确保对方真正的read()到.或者再往上一

层,到了人机交互界面的一层,即使消息已经发送到了对方的聊天窗口,但对方

可能没有看到(阅读到),大讲台,国内首个IT在线混合式自适应学习平台。如果

认为消息在聊天这一层层面已经可靠传输了,那就错了.

可靠传输的第一要素是什么?可靠传输的第一要素是确认,第二要素是重

传,第三要素是顺序.任何一个可靠传输的系统,都必须包含这三个要素.

当然,数据校验也是必要的,但我们常使用的通信通道一般都提供了数据校

验,所以经常会将这个要素忽略,但要求特别高的场景,也需要在上层做数据校

验,所以,我不愿意把数据校验也列为一个必要的要素.

所以,当你要设计一个可靠传输的系统,例如在UDP之上实现可靠传输,

那么你就要立即想到这三个要素.当你要在任何一个可以进行通信的系统之上

创建自己的可靠通信系统,无论这个底层的通信系统是以API的形式提供,或

者是以服务的形式,只要它是一个通信系统,那么就可以,而且经常需要在上面

创建自定义的可靠传输系统,那么你应该立即想到可靠传输的三要素.



献花(0)
+1
(本文系zhensg2008首藏)