Car*_*ega 0 networking tcp http
我试图了解 POST HTTP 事务的行为。当有一个长 URI 的 GET 请求需要发送多个数据包时,在最后一个数据包中使用 PSH 标志来告诉服务器必须立即将数据推送到接收应用程序。
但是,在 POST 请求中,将图片上传到 imgur(例如),PSH 标志存在于每个单独的有效负载块中,直到完成。我想,如果我错了,请纠正我,这种行为只是因为事务的每一块都很大,必须尽快发送到上层以避免巨大的缓冲区,并且这种行为是实时使用的和交互式应用程序。但是,这是标准吗?在每个 POST 请求中都会出现这种行为吗?
提前致谢
小智 6
“我认为......这种行为只是因为事务的每个块都很大,必须尽快发送到上层以避免巨大的缓冲区,并且这种行为用于实时和交互式应用程序”
您描述的行为由发送客户端(软件)决定。关于 TCP 和 UDP 实现的一个常见误解是只有一种编码方式,但在编码时有多种选择……并不是所有的程序员都会做出相同的选择。RFC 是您的朋友。
http://www.freesoft.org/CIE/RFC/1122/88.htm “当应用程序发出一系列 SEND 调用而不设置 PUSH 标志时,TCP 可以在内部聚合数据而不发送它。类似地,当一个在没有 PSH 位的情况下接收一系列段,TCP 可以在内部对数据进行排队,而不将其传递给接收应用程序。”
该句中的MAY为(发送客户端的)程序员提供了是否设置 PSH 位的选择。在您描述的情况下,程序员选择优先将有效负载向上堆栈发送到应用程序,而不是缓冲一系列有效负载以立即向上发送堆栈。
希望有帮助。
归档时间: |
|
查看次数: |
1336 次 |
最近记录: |