HTTP 기본

seunghee.Rho·2025년 8월 25일

Network

목록 보기
3/4
post-thumbnail

HTTP(Hyper Text Transfer Protocol)

HTTP는 클라이언트와 서버 간에 데이터를 주고받는 데 사용하는 통신 규약이다.
웹에서 거의 모든 형태의 데이터를 전송하는데 사용된다.

HTTP의 주요 특징

1. 클라이언트-서버 구조

HTTP는 요청(Request)을 보내는 클라이언트와 요청에 응답(Response)하는 서버로 구성된다.

클라이언트는 웹 브라우저(크롬, 사파리 등)가 될 수 있고, 서버는 웹 서버가 된다.
이 구조를 통해 클라이언트와 서버는 서로 독립적으로 동작할 수 있다.

2. 무상태(Stateless) 프로토콜

HTTP는 무상태(Stateless) 프로토콜로, 서버가 클라이언트의 이전 상태를 저장하지 않는다.
서버는 각 요청을 독립적으로 처리하며, 클라이언트의 상태를 기억할 필요가 없어 서버 확장이 용이하다는 장점이 있다.
하지만 매 요청마다 필요한 모든 정보를 포함해야 한다는 단점도 있다.

  • 장점: 서버 확장성 높음(스케일 아웃)
  • 단점: 클라이언트가 추가 데이터 전송

3. 비연결성(Connectionless)

HTTP의 비연결성은 클라이언트가 서버와 요청과 응답을 한 번씩 주고받은 후 연결을 즉시 끊는 특징을 말한다. 이는 서버 자원을 효율적으로 사용하기 위한 전략이다.

HTTP는 기본적으로 사용자가 웹 페이지에 접속할 때만 연결을 맺고, 필요한 데이터를 받은 후 바로 연결을 끊는다.
웹사이트를 한 시간 동안 보더라도, 사용자가 지속적으로 클릭이나 입력 같은 요청을 보내지 않는 한 서버와의 연결은 유지되지 않는다.
이 방식 덕분에 수천 명의 사용자가 동시에 서비스를 이용하더라도, 서버는 매 순간 실제로 처리하는 요청 수가 적어 자원을 효율적으로 관리할 수 있다.

한계와 극복

  1. 연결 설정 비용
    매번 요청을 보낼 때마다 TCP 3-way-handshake를 통해 새로운 연결을 맺어야 한다.
    이 과정에서 시간이 소요되어 전체 통신 속도를 늦출 수 있다.

  2. 다중 자원 다운로드
    웹페이지 하나를 불러올 떄, HTML 파일 외에도 CSS, JS, 이미지 등 수많은 자원을 따로 다운로드 해야한다. 비연결성 모델에서는 이 자원들을 받을 때마다 새로운 연결을 맺어야 해서 비효율적이다.

이러한 문제점을 해결하기 위해 HTTP 지속 연결(Persistent Connections) 기술이 도입되었다.

4. HTTP 메시지

HTTP 메시지는 클라이언트와 서버가 서로 통신하는 데 사용하는 기본 단위로,
시작 줄(Start-line), 헤더(Header), 그리고 본문(Body)의 세 부분으로 구성된다.

1. 시작 줄(Start-line)

메시지의 첫 줄로, 메시지의 목적과 기본적인 정보를 담고 있다.

2. 헤더(Headers)

요청과 응답에 대한 부가 정보를 담고 있는 부분이다.
메시지 바디의 내용, 크기, 압축 방식, 인증 정보, 캐시 관리 등 다양한 메타데이터를 포함한다.
필요한 경우 사용자가 직접 정의한 헤더를 추가할 수도 있다.

3. 본문(Body)

메시지를 통해 실제로 주고받는 데이터가 담기는 부분이다.
HTML 문서, 이미지, 동영상, JSON, XML 등 Byte로 표현될 수 있는 모든 데이터를 전송할 수 있다.
GET 요청과 같이 데이터를 조회하는 경우 본문이 비어있을 수 있다.

이미지 출처: 인프런, 모든 개발자를 위한 HTTP 웹 기본 지식, 김영한

profile
Web Developer

0개의 댓글