본문 바로가기
Network

[HTTP] 특징

by Mia_ 2023. 1. 3.

HTTP 

 

HTTP의 역사

- HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3은 UDP 기반 프로토콜

 

 

HTTP 특징 

 

1 클라이언트 서버 구조

- Request, Response 구조

- 클라이언트는 서버에 요청을 보내면 서버는 응답을 보내는 클라이언트 서버 구조로 이뤄져 있음

 

2 무상태 프로토콜 : Stateless

- HTTP에서는 서버가 클라이언트의 상태를 보존하지 않는 무상태 프로토콜임

- 상태 유지 : 중간에 다른 점원으로 바뀌면 안됨(중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 알려줘야 함)

- 무상태 : 중간에 다른 점원으로 바뀌어도 됨(갑자기 고객이 증대해도 점원 대거 투입 가능, 뜻인 즉 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다)

- 무상태는 응답 서버를 쉽게 바꿀 수 있다  → 무한한 서버 증설 가능

 

* 무상태의 단점

- 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다

- 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지(ex. 브라우저 쿠키, 서버 세션)

- 상태 유지는 최소한만 사용

 

3 비연결성

- TCP/IP의 경우 기본적으로 연결을 유지함

- 연결을 유지하는 모델에서는 클라이언트들이 요청을 보내지 않더라도 계속 연결을 유지함

- 이러한 경우 연결을 유지하는 서버의 자원이 계속 소모됨 

 

- 비연결성을 가지는 HTTP에서는 실제로 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊음

- 최소한의 자원으로 서버 유지를 가능하게 함

- 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우 비연결성은 효율적으로 작동함

- 하지만 트래픽이 많고 큰 규모의 서비스를 운영할 때는 한계를 보임

 

* 비연결성의 한계

- TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가

- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트,CSS, 추가 이미지 등 수많은 자원이 함께 다운로드

- 지금은 HTTP 지속 연결(Persistent Connetions)으로 문제 해결

- HTTP 지속 연결에서는 연결이 이루어지고 난 뒤 각각의 지원들을 요청하고 모든 자원에 대한 응답이 돌아온 후 연결을 종료

'Network' 카테고리의 다른 글

[API] GraphQL과 REST API 비교  (0) 2023.01.28
[API] GraphQL  (0) 2023.01.28
네트워크 계층 모델 - TCP/IP 4계층 모델  (0) 2023.01.03
네트워크 계층 모델 - OSI 7계층 모델  (0) 2023.01.03
TCP/IP  (0) 2023.01.03