HTTP
1. HTTP(Hpyer Text Transfer Protocol)
- 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.
- 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 동작한다.
1.1 서버/클라이언트 모델
- 서비스 제공자(서버)와 서비스 요청자(클라이언트)로 구분되는 네트워크 모델이다.
- 모든 자원은 서버에 집중된다. 그렇기 때문에 클라이언트는 데이터 재현을 위한 최소한의 자원만을 가지는 것이 일반적이다.
1.2 TCP/IP
- 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCP와 IP의 합성어로 인터넷 동작의 중심이 되는 통신 규약이다.
- 데이터 흐름 관리, 데이터 정확성 확인(TCP), 패킷을 목적지까지 전송하는 역할(IP) 등을 담당한다.
- IP는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP는 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장하는 역할을 한다.
1.3 Connectionless
- 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.
- 기본적으로 자원 하나에 대해서 하나의 연결을 만든다.
- 불특정 다수를 대상으로 하는 서비스에 적합하다. 수십만명이 웹 서비스를 사용하더라도 접속 유지를 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.
- 매번 연결을 새로 맺어야 하기 때문에 3-way-handshake 시간이 추가된다. 동시에 요청 때마다 HTML을 비롯한 JS, CSS 등 수 많은 자원이 다운로드된다.
1.4 Stateless
- 서버가 클라이언트의 상태를 보존하지 않는 것을 의미한다.
- Connectionless로 부터 파생되는 특징으로 볼 수 있다.
- 서버의 확장성이 높다.
- 부러우저 쿠키, 서버 세션 등을 사용해 상태를 유지할 수 있다.
참고
- 『모든 개발자를 위한 HTTP 웹 기본 지식』