在TCP PUSH功能的大多数描述中,提到PUSH功能不仅要求发送方立即发送数据(而不是等待缓冲区填满),还要求将数据推送到接收方应用程序,而不会被缓冲。
我不理解的是,为什么TCP在接收端缓冲数据呢?毕竟,TCP分段以IP数据报的形式传输,在IP层处理完整个数据报之后(即IP层在对任何给定分段所携带的IP数据报片段进行重新组装后,仅将整个分段交付给TCP层),为什么接收方TCP层要等待将此数据传递给其应用程序?一种情况可能是应用程序当前没有读取数据。但是,如果是这种情况,那么强制将数据推送到应用程序也是不可能的。因此,我的问题是,为什么PUSH功能需要规定接收方行为?假设一个应用程序在分段到达时正在读取数据,那么应该立即将该分段传递给应用程序。
请问有人可以帮助解答我的疑问吗?
我不理解的是,为什么TCP在接收端缓冲数据呢?毕竟,TCP分段以IP数据报的形式传输,在IP层处理完整个数据报之后(即IP层在对任何给定分段所携带的IP数据报片段进行重新组装后,仅将整个分段交付给TCP层),为什么接收方TCP层要等待将此数据传递给其应用程序?一种情况可能是应用程序当前没有读取数据。但是,如果是这种情况,那么强制将数据推送到应用程序也是不可能的。因此,我的问题是,为什么PUSH功能需要规定接收方行为?假设一个应用程序在分段到达时正在读取数据,那么应该立即将该分段传递给应用程序。
请问有人可以帮助解答我的疑问吗?