웹개발

HTTP

블루요시 2026. 5. 28. 12:47

HTTP(HyperText Transfer Protocol)

• HTTP는 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 통신 규약(Protocol)이다.

웹 브라우저, 모바일 앱, 서버가 서로 정해진 방식으로 요청(Request)과 응답(Response)을 주고받을 수 있도록 만든 약속이다.


HTTP가 필요한 이유

HTTP가 없다면 서로 다른 컴퓨터가 데이터를 주고받을 때:

  > 어떤 형식으로 보내야 하는지

  > 어디까지가 요청인지

  > 어떤 데이터가 포함되어 있는지

  알 수 없게 된다.

서버가 요청을 이해하지 못하거나 클라이언트가 응답을 해석하지 못하는 상황이 발생한다.

HTTP는 서로 다른 나라 사람들이 대화하기 위해 사용하는 공통 언어와 같다.

 

    HyperText란?

    • HyperText는 하이퍼링크(HyperLink)를 통해 다른 문서나 웹페이지로 즉시 이동할 수 있는 텍스트를 의미한다.

    • 대표적인 예로 사용자가 링크를 클릭하면 다른 웹페이지로 이동할 수 있다.

    Protocol이란?

    • Protocol(프로토콜)은 컴퓨터끼리 데이터를 주고받기 위한 통신 규칙이다.

    • 요청 형식, 응답 형식, 데이터 전달 방식 등을 정해놓은 규칙이라고 볼 수 있다.


HTTP 동작 원칙

HTTP는 기본적으로 클라이언트 요청(Request) > 서버 처리 > 서버 응답(Response) 구조로 동작한다.

 따라서 클라이언트가 먼저 요청을 보내야 서버가 응답할 수 있다.

서버가 먼저 클라이언트에게 말을 걸지 않는다.

클라이언트 요청이 있으면 항상 응답한다.


 

HTTP 주요 특징

무상태성(Stateless)

HTTP는 서버가 클라이언트의 이전 상태를 기본적으로 기억하지 않는 구조이다.

  > 이전에 로그인했는지

  > 어떤 페이지를 봤는지

웹 서버는 동시에 매우 많은 사용자의 요청을 처리해야 한다.

만약 모든 사용자의 상태를 계속 기억하면

  > 서버 메모리 사용량 증가

  > 성능 저하

  > 서버 과부하

  등 문제가 발생할 수 있다.

따라서 HTTP는 기본적으로 상태를 저장하지 않는 구조를 사용한다.


비연결성(Connectionless)

HTTP는 요청과 응답이 끝나면 기본적으로 연결을 종료한다.

요청할 때 연결, 응답 후 연결 종료 구조로 동작한다.

만약 모든 사용자가 계속 연결을 유지하면

  > 서버 자원이 빠르게 부족해지고

  > 동시에 많은 사용자를 처리하기 어려워진다.

따라서 필요한 순간만 연결하여 서버 자원을 효율적으로 사용한다.


HTTP 구조

HTTP 메시지는 클라이언트와 서버가 데이터를 주고받기 위한 텍스트 기반 구조이다.

HTTP 요청(Request)과 응답(Response)은 공통적으로 크게 3개의 영역으로 구성된다.

  > 1. 시작 줄(Start-Line / Status-Line)

  > 2. 헤더(Headers)

  > 3. 본문(Body)


시작 줄(Start-Line / Status-Line)

HTTP 요청 또는 응답의 가장 첫 번째 줄이다.

요청(Request)에서는 요청 방식(Method), 요청 주소(URL), HTTP 버전 정보가 포함된다.

GET /users HTTP/1.1

 

응답(Response)에서는 HTTP 버전, 상태 코드(Status Code), 상태 메시지 정보가 포함된다.

HTTP/1.1 200 OK

 


헤더(Headers)

요청과 응답에 대한 부가 정보를 저장하는 영역이다.

  > 데이터 형식(Content-Type)

  > 인증 정보(Authorization)

  > 브라우저 정보(User-Agent)

Content-Type: application/json

본문(Body)

실제로 전달할 데이터를 저장하는 영역이다.

  > 로그인 정보

  > 회원가입 데이터

  > 게시글 내용

{
  "name": "형탁"
}

 


HTTP 데이터 전송 방식

HTTP에서는 데이터를 크게 두 가지 방식으로 전달할 수 있다.


URL에 데이터를 붙여서 보내기 (GET)

조회(READ) 요청에서 자주 사용된다.

보고 싶은 데이터의 조건을 URL에 포함하여 전달한다.

// GET 예시
GET /search?keyword=한식
// 의미
“한식 키워드로 검색해주세요”

  > 주로 데이터 조회에 사용

  > URL에 데이터 포함

  > Body를 사용하지 않는 경우가 많음

  > 주소창에서 데이터 확인 가능


 

Body에 데이터를 담아 보내기 (POST, PUT, PATCH)

데이터 추가(Create) 또는 수정(Update) 시 자주 사용된다.

전달해야 하는 데이터가 많거나 민감한 경우 Body 영역을 사용한다.

{
  "id": "user1",
  "password": "1234"
}

  > 많은 데이터를 전달 가능

  > URL에 데이터가 직접 노출되지 않음

  > 로그인, 회원가입, 수정 기능 등에 사용

 

 

'웹개발' 카테고리의 다른 글

API  (0) 2026.06.01
API 분석하고 설계해보기  (0) 2026.05.29
Server  (0) 2026.05.28
JavaScript  (0) 2026.05.28
CSS  (0) 2026.05.27