在 TCP 中传输数据时,给定所有传入和传出的数据包,如何知道收到的数据包是否是最后一个数据?
TCP 数据包被分割成更小的部分。我正在通过 HTTP 协议进行传输。
在 TCP 中传输数据时,给定所有传入和传出的数据包,如何知道收到的数据包是否是最后一个数据?
TCP 数据包被分割成更小的部分。我正在通过 HTTP 协议进行传输。
当FIN
连接的一端设置该标志时,表示该端将不再发送数据。
如果在最后一个数据之后连接没有被关闭,那么必须有一个应用层的方法来确定它。对于 HTTP,规则相当复杂。
您可以使用协议PSH
标志TCP
。它应该在最后一个数据包中设置为 1。
要确认这一点,只需开始跟踪、制作HTTP GET
和过滤会话。您会发现您的每个响应的最后一个数据包都HTTP GET
带有此标志。
我假设您正在使用某种套接字库。您可以告诉 TCP 连接已完成,因为read()
套接字上的 a 将返回0
。这将在另一方关闭连接时发生(它永远不必这样做)。