POST 요청이 첫 번째 패킷에서 PSH 플래그를 사용하는 이유는 무엇입니까?

POST 요청이 첫 번째 패킷에서 PSH 플래그를 사용하는 이유는 무엇입니까?

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는 데이터를 전달하지 않고 내부적으로 큐에 넣을 수 있습니다. 이를 수신 애플리케이션에 전달합니다."

그만큼5월이 문장에서는 (보내는 클라이언트의) 프로그래머에게 PSH 비트를 설정할지 여부를 선택할 수 있습니다. 설명하신 경우, 프로그래머는 스택을 한 번에 보내기 위해 일련의 페이로드를 버퍼링하는 것보다 스택의 페이로드를 응용 프로그램으로 보내는 우선 순위를 선택했습니다.

도움이 되길 바랍니다.

관련 정보