본문 바로가기
Backend

[Roadmap.sh > Internet] 2. HTTP란 무엇인가요?

by ZIAHO 2025. 4. 29.

해당 글은 https://roadmap.sh/backend 의 '백엔드 개발자 로드맵' 을 기반으로 학습한 내용을 작성한 글입니다.

위 링크의 로드맵을 따라 학습한 내용을 지속적으로 포스팅 할 예정입니다.


📁 HTTP란 무엇인가요?

 

📡  HTTP란?

HTTP는 Hypertext Transfer Protocol의 줄임말로 웹 상에서 브라우저와 서버가 데이터를 주고 받을 때 사용하는 프로토콜 입니다. 우리가 웹사이트를 접속할 때 대부분 이 HTTP(또는 HTTPS)를 사용하여 데이터를 요청하고 전달받습니다.

 

🔄 HTTP의 기본 작동 방식

💬 요청(Request)와 응답(Response)

 

HTTP는 요청-응답 모델로 작동합니다.

  • 클라이언트(예: 브라우저): 서버에게 리소스를 요청합니다.
  • 서버: 요청을 처리하고, 결과(HTML, JSON, 이미지, 비디오, 스크립트 등) 응답으로 보냅니다.

예를 들어, 브라우저가 어떤 홈페이지를 요청하면 다음과 같은 흐름이 일어납니다.

[브라우저] → HTTP 요청(GET /) → [서버]
[서버] → HTTP 응답(200 + HTML) → [브라우저]

📦 HTTP 메시지 구조

✉️  요청 메시지(Request)

 

HTTP 요청에는 HTTP 버전 유형 / URL / HTTP 메서드 / HTTP 요청 헤더 / 선택적 HTTP 본문 이 들어있습니다.

아래는 그 예시입니다.

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
  • GET: 요청 메서드
  • /index.html: 요청경로
  • HTTP/1.1: 프로토콜 버전
  • Header: 추가정보 (브라우저 종류, 인증 정보 등)
    • HTTP 헤더는 key-value 쌍으로 저장된 텍스트 정보를 포함하며, 모든 HTTP 요청 및 응답에 포함됩니다.
    • 헤더는 클라이언트가 사용중인 브라우저, 요청되는 데이터 등 핵심 정보를 전달합니다.

 

✉️  응답 메시지(Response)

 

HTTP 응답 메시지에는 HTTP 상태 코드 / HTTP 응답 헤더 / 선택적 HTTP 본문 이 포함되어 있습니다.

아래는 그 예시입니다.

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>...</html>
  • 200 OK: 상태 코드 (성공)
  • Header: 응답 데이터 정보
  • Body: 실제 HTML 콘텐츠

⚙️ 주요 HTTP 메서드

메서드 설명
GET 리소스 요청 (조회)
POST 서버에 데이터를 제출 (ex: 로그인)
PUT 리소스 전체 수정
PATCH 리소스 부분 수정
DELETE 리소스 삭제

🧱 상태 코드 (Status Codes)

HTTP 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 여부를 나타냅니다.

서버가 응답을 전송할 때 같이 전송하며, 요청에 대한 서버의 상태를 나타냅니다.

 

1XX - 정보 응답

100 Continue 현재 요청이 진행중이며 문제 없음

 

2XX - 성공 응답

200 OK 요청이 성공적으로 완료되었음을 의미
201 Created 요청이 성공적으로 완료되었고 새로운 리소스가 생성되었음을 의미
통상 POST나 PUT 요청 뒤에 함께 옴

 

3XX - 리다이렉션 메시지

300 Multiple Choice 요청에 대해 하나 이상의 응답이 가능함을 의미
301 Moved Permanently 요청한 리소스의 URI가 변경되었음을 의미

 

4XX - 클라이언트 에러 응답

400 Bad Request 잘못된 문법으로 인해 서버가 요청을 이해하지 못했음을 의미
401 Unauthorized 요청을 보낸 클라이언트가 인증되지 않았음을 의미
403 Forbidden 요청을 보낸 클라이언트가 리소스에 접근할 권리가 없음을 의미
404 Not Found 서버가 요청받은 리소스를 찾을 수 없음을 의미

 

5XX - 서버 에러

500 Internal Server Error 서버에 문제가 있지만 서버가 해당 문제를 처리할 줄 모름을 의미
502 Bad Gateway 서버가 게이트웨이로부터 잘못된 응답을 받았음을 의미

 

이 외의 상태 코드에 대해서는 아래 문서를 참고하시면 도움이 될것같습니다.

https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org


🔐 HTTP vs HTTPS

  • HTTP: 데이터 암호화 없이 평문 전송, 보안 취약
  • HTTPS: SSL/TLS를 사용하여 데이터를 암호화, 보안 강화

🌐 HTTP 버전

버전 특징
HTTP/1.1 연결 재사용, 헤더 많음
HTTP/2 멀티플렉싱, 헤더 압축
HTTP/3 QUIC 기반, 속도 및 안정성 개선(UDP 사용)

출처

https://roadmap.sh/backend

 

Backend Developer Roadmap: What is Backend Development?

Learn what backend development is, what backend developers do and how to become one using our community-driven roadmap.

roadmap.sh

 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Overview

 

An overview of HTTP - HTTP | MDN

HTTP is a protocol for fetching resources such as HTML documents. It is the foundation of any data exchange on the Web and it is a client-server protocol, which means requests are initiated by the recipient, usually the Web browser. A complete document is

developer.mozilla.org

https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/

 

 

 

'Backend' 카테고리의 다른 글

[Roadmap.sh > Internet] 1. 인터넷은 어떻게 작동하나요?  (4) 2025.01.14