我試圖了解 POST HTTP 事務的行為。當有一個長 URI 的 GET 請求需要發送多個資料包時,在最後一個資料包中使用 PSH 標誌來告訴伺服器必須立即將資料推送到接收應用程式。
然而,在 POST 請求中,將圖片上傳到 imgur(例如),PSH 標誌會出現在每個有效負載區塊中,直到完成。我想,如果我錯了,請糾正我,這種行為只是因為交易的每個區塊都很大,必須盡快發送到上層以避免巨大的緩衝區,並且這種行為是實時使用的和互動式應用程式.但是,這是一個標準嗎?每個 POST 請求中都會出現這種行為嗎?
先致謝
答案1
「我認為……這種行為只是因為交易的每個區塊都很大,必須盡快發送到上層以避免巨大的緩衝區,並且這種行為用於實時和互動式應用程式”
您所描述的行為由發送客戶端(軟體)決定。關於 TCP 和 UDP 實作的一個常見誤解是,只有一種編碼方式,但編碼時可以做出選擇…而且並非所有程式設計師都會做出相同的選擇。 RFC 是您的朋友。
http://www.freesoft.org/CIE/RFC/1122/88.htm 「當應用程式在未設定PUSH 標誌的情況下發出一系列SEND 呼叫時,TCP 可以在內部聚合資料而不發送資料。類似地,當在沒有PSH 位元的情況下接收到一系列資料段時,TCP可以在內部對資料進行排隊而不通過發送至接收應用程式。
這可能此句子為(發送客戶端的)程式設計師提供了是否設定 PSH 位元的選擇。在您描述的情況下,程式設計師選擇優先將有效負載從堆疊發送到應用程序,而不是緩衝一系列有效負載以立即向上發送堆疊。
希望有幫助。