일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코틀린 함수
- http상태코드
- 아펠가모선릉
- Srping AOP
- 마드리드
- 아펠가모
- 스페인
- 코틀린
- elk
- git명령어
- Kotlin
- 본식후기
- @Component
- 스페인 준비물
- 세비야
- 바르셀로나
- c# scv
- b-tree index
- kopring
- 코프링
- sprintboot
- kotiln
- HTTP
- HTTP #웹기술
- 400에러
- 스프링 AOP
- 관심지향프로그래밍
- db index
- 아펠가모 선릉
- 그라나다
- Today
- Total
끄적이는 메모장
[HTTP] HTTP 이해하기 (3) / Chunked transfer, Pull & Push 본문
서버 개발자에서 웹 기술 개발자가 되기 위한 스텝. 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 (연결을 유지한 상태에서 클라이언트가 서버의 이벤트를 구독하면 서버가 발생시킨 이벤트를 클라이언트가 받을 수 있는 기술) - 단방향
'웹기술 개발자 되기 > HTTP' 카테고리의 다른 글
[HTTP] HTTP 이해하기 (5) / REST API, RESTful (0) | 2020.04.03 |
---|---|
[HTTP] HTTP 이해하기 (4) / HTTP status codes (0) | 2020.04.03 |
[HTTP] HTTP 이해하기 (2) / Session, Cookies, Keep-Alive (0) | 2020.03.29 |
[HTTP] HTTP 이해하기 (1) (0) | 2020.03.29 |