如何知道TCP是否结束?

时间:2014-07-29 12:27:07

标签: tcp

TCP是用于通信的流,它具有不同的长度。那么在应用程序中,我如何知道TCP是否结束?

在transfom层中,TCP数据包头没有长度字段且长度不变,TCP层如何知道结束的位置。

4 个答案:

答案 0 :(得分:0)

您设计了一个在TCP之上运行的协议,该协议包括一个长度字段(或一个消息终结符)。您可以查看在TCP之上分层的现有协议(例如DNS,HTTP,IRC,SMTP,SMB等),以了解它们是如何执行此操作的。

为了避免痛苦,在尝试设计自己的TCP之前,有必要彻底了解分层在TCP之上的几种不同协议。有很多微妙的细节你很容易出错。

答案 1 :(得分:0)

如果你看一下this帖子,它会给出一个很好的答案。

根据您正在与之通信的内容或通信方式,如果您打算打开套接字,则需要使用某种字符序列来查找单个消息或传输。< / p>

答案 2 :(得分:0)

当TCP连接的一方收到FINRST信号时,它知道另一方已停止发送。在API级别,您可以调用shutdown来发出该信号。然后另一方将获得零长度读取并且知道将不会再发生任何事情。

答案 3 :(得分:0)

  

n transfom layer

我认为你的意思是“传输层”?

  

TCP数据包标头没有长度字段且长度不变

IP 标头有一个长度字段。 TCP标头中的另一个是多余的。

  

TCP层如何知道结束的位置。

从IP头长度字中,减去IP和TCP头大小。

相关问题