해당 글은 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 사용) |
출처
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 |
---|