在 TCP PUSH 功能的大部分描述中,都提到了 PUSH 功能不仅要求发送方立即发送数据(无需等待其缓冲区填满),还要求将数据推送到接收方上的接收应用程序侧,没有被缓冲。
我不明白的是,为什么 TCP 会在接收端缓冲数据?毕竟,TCP 数据段在 IP 数据报中传播,这些数据报被完整地处理(即,在对承载任何给定数据段的 IP 数据报的片段进行任何必要的重组之后,IP 层仅将整个数据段传递给 TCP 层)。那么,为什么接收 TCP 层要等待将这些数据传递给它的应用程序呢?一种情况可能是应用程序在该时间点没有读取数据。但是,如果是这种情况,那么强制将数据推送到应用程序无论如何都是不可能的。因此,我的问题是,为什么 PUSH 功能需要规定有关接收方行为的任何内容?假设应用程序在段到达时正在读取数据,那么无论如何该段都应该直接交付给应用程序。
任何人都可以帮助解决我的疑问吗?