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 |