TCP 是流式协议,何为流式协议?其实就像河流一样,精确计算到底有多少立方水,不可测量。
比如,你打一个电话之前,你能知道这个电话要聊多久吗?开一个视频会议之前,你能确定这个会议要开多久吗?
传输数据到底有多大就是无法估量的。
现在互联网上面多数的开发用的是 TCP 包头加包体,来确定报文的长度,这样实际已经不算是流式协议了。而是基于流式协议实现了报文协议,这种没有什么不好,也是应用开发的一种需要。
这时候,就有人问了,如果是流式协议,数据大小无法测量,双方通信如何交换控制信息,例如关闭,开启,文字聊天互动。
其实这个很简单,再另外开一个有长度的报文协议socket 来交换控制信息就行了
如果是在数据最后面带一个特殊的行表示结束(http协议的用法),对于大数据量传输,其实有一定性能损耗,因为这么多的数据,都要做字符串匹配,才能知道是不是结尾。
网友评论