HTTP 에 대하여 1편
HTTP 의 역사
- HTTP/0.9 : GET 메소드만 지원, 헤더 X
- HTTP/1.0 : 메소드, 헤더 추가
HTTP/1.1 : 가장 많이 사용, 우리에게 가장 중요한 버전- HTTP/2.0 : 성능 개선
- HTTP/3.0 : TCP 대신 UDP 를 사용하여 성능을 개선
HTTP 기반 프로토콜
- TCP : HTTP/1.1, HTTP/2 ( 3 - way handshake, 무거운 패킷으로 인해 속도가 빠른 메커니즘이 아니다. )
- UDP : HTTP/3
무상태 프로토콜 ( Stateless )
- 서버가 클라이언트의 상태를 보존하지 않는다.
- 장점 : 서버의 확장성이 높다 ( 스케일 아웃 )
- 단점 : 클라이언트가 추가 데이터를 전송해야 한다.
상태 유지 ( Stateful )


- 클라이언트의 요청에 대한 상태를 보관하기 때문에 매번 같은 서버와 통신해야 한다. 하지만 중간에 서버가 장애가 나면 클라이언트는 요청을 처음부터 다시 보내야 한다.
무상태 ( Stateless )


클라이언트 요청에 대한 상태를 보관하지 않는다. 따라서 서버가 장애가 나도 다른 서버와 통신할 수 있다. 따라서, 수평 확장 ( scale out ) 이 용이하다.

Stateless 의 실무 한계
- 로그인을 한 상태의 경우 상태 유지 방식을 사용해야 한다. 일반적으로 브라우저 쿠키과 서버 세션 등을 사용해 상태를 유지하고, 상태 유지는 최소한만 사용한다.
비 연결성 ( Connectionless )
- 서버와 클라이언트가 연결을 유지하지 않아 서버 연결에 대한 자원을 최소한으로 사용한다.
- HTTP 는 기본이 연결을 유지하지 않는 모델이다.
- 1시간 동안 수 천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수 십개 이하로 매우 작다. ( ex) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다. )
- 따라서, 서버의 자원을 매우 효율적으로 사용할 수 있다.
한계와 극복
- 연결할 때 마다 TCP/IP 연결을 새로 맺어야 한다. 따라서 3 - way handshake 를 맺는 시간이 추가된다.
- 웹 브라우저로 사이트를 요헝하면 HTML 뿐만 아니라 js, css, 추가 이미지 등 수 많은 자원이 함께 다운로드 된다.
- 지금은 HTTP Persistent Connections 로 문제를 해결했다.
- HTTP/2, HTTP/3 에서 더 많은 최적화를 이루었다.
HTTP 메세지

REFERENCES
'Network' 카테고리의 다른 글
| About HTTP #3 (0) | 2021.11.04 |
|---|---|
| About HTTP #2 (0) | 2021.11.04 |