끄적이는 메모장

[HTTP] HTTP 이해하기 (3) / Chunked transfer, Pull & Push 본문

웹기술 개발자 되기/HTTP

[HTTP] HTTP 이해하기 (3) / Chunked transfer, Pull & Push

밥보92 2020. 3. 29. 20:17
반응형

서버 개발자에서 웹 기술 개발자가 되기 위한 스텝. HTTP 이해하기 (3)

 

Chunked Transfer Encoding

- 서버에서 클라이언트가 요청한 응답이 매우 큰 경우 이를 chunk단위로 나누어서 보내는 것

- 응답에 대한 데이터 크기를 알 필요가 없음

- 동적으로 생성되는 자원에 대한 전송에 유리 (스트림 등)

- "Content-Length"는 body 사이즈를 정하는 Header임. Context-Length 대신 "Transfer-Encoding : chunked'가 온다면 chunk단위로 데이터를 전송 하겠다는 뜻

전송 방식

보낸 데이터크기 (16진수)

데이터

보낸 데이터크기 (16진수)

데이터

보낸 데이터크기 (16진수)

데이터

..

보낸 데이터크기 (16진수)

- 보낸 데이터크기가 0일때 모든 데이터를 받았다는 것을 알 수 있음. 

 

HTTP Pull vs Push 

Pull : 클라이언트가 서버에 요청을 보내고 응답을 받는 방식 (일반적인 형태)

Push : 별도의 클라이언트의 요청 없이 서버에서 사용자에게 정보를 전달해주는 방식

- 진정한 의미의 Push? HTTP 환경에서 쉽지 않기 때문에 비슷한 의미를 가진 동작들로 대체를 함.

1) Polling : 클라이언트가 주기적으로 서버와의 통신을 통해 데이터를 가져가는 방식. 서버에서는 부하가 발생 가능

2) Long Polling (Comet) : 클라이언트가 요청을 보내면 서버에서는 변경이 발생 했을 때 응답을 주고 HTTP 통신을 마치는 것을 반복하는 것. 변경에 대한 실시간성이 좋음

3) Streaming : 클라이언트와 서버가 연결을 유지하고 있는 상태에서 서버의 변경이 발생 했을 때마다 이벤트를 클라이언트로 전송해주는 방식

> 서버가 응답시 헤더에 context-length를 응답하지 않음으로서 클라이언트가 계속해서 응답을 받을 수 있도록 함. 하지만 status에 대한 핸들링 어려워 에러 대처가 힘듦

> Webscoket (하나의 연결을 유지하며 양방향 통신을 자유롭게 할 수 있는 기술) - 양방향

> Server-Sent Event (연결을 유지한 상태에서 클라이언트가 서버의 이벤트를 구독하면 서버가 발생시킨 이벤트를 클라이언트가 받을 수 있는 기술) - 단방향

 

 

 

반응형