WWW( World Wide Web )에서 정보를 주고받을 수 있는 프로토콜입니다. 주로 HTML 문서를 주고받는 데에 쓰입니다. 하지만 최근에는 HTTP 메세지로 모든 것을 전송합니다. HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송할 수 있습니다. 심지어 서버간의 데이터를 주고 받을 때도 대부분 HTTP 사용합니다.
HTTP/1.1, HTTP/2은 TCP 프로토콜을 기반으로 사용하고 HTTP/3은 UDP 프로토콜을 기반으로 사용합니다.현재 HTTP/1.1가 주로 사용되고 HTTP/2, HTTP/3도 점점 증가하고 있습니다.
HTTP 특징
1. Client-Server 구조
Request와 Response 구조로 이루어져 있습니다. Request를 보내는 곳이 Client, Response를 보내는 곳이 Server입니다. Client와 Server의 역할이 분리되어 있기 때문에 독립성이 보장됩니다. 클라이언트는 UI를 그리는 것에 집중하고, 서버는 복잡한 비즈니스 로직을 담당. 각자 구조를 발전시키는 데에도 용이합니다.
2. Stateless ( 무상태 프로토콜 )
Stateless (무상태)
- 서버가 클라이언트의 상태를 보전하지 않습니다.
- 클라이언트와 서버가 통신하면 연결을 바로 끊습니다.
- 데이터를 많이 보낸다는 단점이 있습니다.
- 연결마다 3-way-handshake와 같은 검증을 계속 진행합니다.
- 응답 서버를 쉽게 바꿀 수 있어서 서버 증설 측면에서 유리합니다. ( 서버의 수평확장이 유리함 )
Stateful (상태유지)
- 서버가 클라이언트의 상태를 보전합니다.
- 항상 같은 서버가 유지되어야 합니다. ( 연결 지속성 필요 )
- 서버 수평확장이 어렵습니다.
HTTP는 Stateless를 지향합니다. 하지만 모든것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있습니다. 일반적으로 Stateful한 경우는 상태를 유지해야하는 로그인과 같은 경우가 있습니다. 이 때, 브라우저의 쿠키와 서버 세션 등을 사용해서 상태 유지를 해야합니다. 상태 유지는 최소한만 사용해야 합니다.
3. 비연결성
HTTP는 기본적으로 연결을 유지하지 않는 단방향 통신입니다. 장점으로는 빠른속도로 응답을 할 수 있고, 서버 자원을 매우 효율적으로 사용할 수 있습니다. 하지만 TCP/IP 연결을 새로 맺어야 하기 때문에 3-way-handshake하는 시간이 계속해서 추가 됩니다. 또 웹 브라우저로 사이트를 요청하면 HTML뿐만 아니라 수 많은 자원이 함께 다운로드 됩니다. 현재는 HTTP 지속 연결로 문제 해결 Persistent Connections HTTP2, HTTP3에서는 더욱 최적화 되었습니다.
참고자료
'Computer Science > Network' 카테고리의 다른 글
[Network] HTTP Method의 속성 (0) | 2021.11.10 |
---|---|
[Network] HTTP Method (0) | 2021.11.10 |
[Network] URI ( Uniform Resource Identifier ) (0) | 2021.08.09 |
[Network] DNS (0) | 2021.08.09 |
[Network] Port (0) | 2021.08.09 |
댓글