HTTP: HTTP란 무엇인가?
Definition
HTTP(HyperText Transfer Protocol)는 거대하고 복잡한 네트워크망 속에서 컴퓨터들이 서로 데이터를 주고받기 위해 만든 공통의 대화 규칙이다.
데이터 분석에서 특정 라이브러리의 문법을 지켜야 코드가 돌아가듯, 웹에서도 정해진 규격에 맞춰 메시지를 보내야만 상대방(컴퓨터)이 내 의도를 정확히 파악할 수 있다. 처음에는 텍스트 문서를 주고받는 용도로 시작했으나, 지금은 이미지, 영상, JSON 데이터 등 모든 종류의 디지털 정보를 전송하는 웹의 표준 도로 역할을 한다.
Client-Server Model
HTTP 통신은 반드시 역할을 나눈 두 주체가 필요하다.
- Client: 서비스를 요청하는 쪽(주로 웹 브라우저). “데이터 좀 보여줘”라고 먼저 말을 거는 손님 역할이다.
- Server: 요청을 받아 처리하는 쪽(백엔드). 손님이 올 때까지 기다리다가, 요청이 들어오면 그에 맞는 데이터를 서빙하는 주방 역할이다.
Client-Server Model Architecture
HTTP 통신에서 서버가 클라이언트에게 먼저 데이터를 보내는 일은 없다. 반드시 클라이언트의 Request가 선행되어야 서버의 Response가 발생한다.
Request & Response
웹상의 모든 상호작용은 Request와 Response이라는 한 쌍의 대화로 이루어진다.
- Request: 클라이언트가 서버에 보내는 메시지. “로그인 정보 확인해줘”, “이 게시물 데이터 가져다줘” 같은 의사가 담긴다.
- Response: 서버가 요청을 처리한 후 클라이언트에게 돌려주는 메시지. “확인 완료(성공)”, “데이터 여기 있어”, “그 데이터는 없어(실패)” 같은 결과가 담긴다.
Network Layer
HTTP는 네트워크 모델(OSI 7계층 또는 TCP/IP 4계층)에서 가장 상단에 위치한 Application Layer 프로토콜이다.
웹 서비스의 데이터가 실제로 사용자에게 전달되기 위해서는 하위 계층의 도움이 필수적이다.
- IP (Network Layer): 데이터를 목적지(IP 주소)까지 찾아가게 하는 ‘주소와 내비게이션’ 역할을 한다.
- TCP (Transport Layer): 데이터가 유실되지 않고 순서대로 안전하게 도착하도록 보장하는 ‘신뢰성 있는 배송’ 역할을 한다.
TCP/IP가 편지를 안전하게 배달하는 택배 시스템이라면, HTTP는 그 택배 상자 안에 들어있는 편지의 규격과 내용이다. 택배 회사(TCP/IP)는 상자 안의 내용물이 무엇인지 상관없이 목적지까지 안전하게 배달하는 데 집중하고, 받는 사람(애플리케이션)은 상자를 열어 HTTP라는 약속된 형식에 맞춰 작성된 메시지를 읽고 해석한다.
Backend Development Perspective
데이터 분석가가 SQL 쿼리로 DB에서 데이터를 추출하듯, 백엔드 개발자는 클라이언트로부터 들어온 HTTP 요청을 해석하여 DB에서 데이터를 꺼내고, 다시 HTTP 응답에 실어 보내는 시스템을 설계하는 사람이다. 즉, HTTP를 모르면 서버가 클라이언트와 대화하는 방법 자체를 모르는 것과 같다.