HTTP란?
💡HTTP(HyperText Transfer Protocol)란?
- 데이터를 주고 받는 양식을 정의한 통신 규약(= 컴퓨터끼리 데이터를 주고받을 때 정해둔 약속)
- 컴퓨터 끼리 데이터를 주고 받을 때 정해진 규칙없이 매번 요청하는 방식이 다르다면 소통에 큰 문제가 발생하기 때문에 필요한 규약이다.
- 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰인다.
데이터 흐름
💡HTTP 데이터 흐름

- 브라우저 → 서버 : 원하는 페이지를 요청(Request)
- 서버 → 브라우저 : 해당 페이지나 데이터를 응답(Response)
- 브라우저는 응답 데이터를 화면에 렌더링
* 어떠한 데이터든 주고 받는게 가능하다.
💡브라우저에서 HTTP가 동작하는 것을 직접 확인해보기
1️⃣ 개발자 도구 → 네트워크 탭
- Mac 기준 : 브라우저에서 Fn + F12를 누르면 DevTool 혹은 개발자 도구를 볼 수 있다.

- Network 탭에서 새로고침을 해보면, 브라우저가 현재 페이지를 보여주기 위해 서버에서 받아온 데이터 목록을 볼 수 있다.
- 웹 개발을 진행하면서 문제가 생겼을 때 분석을 위한 도구로 사용 가능하다!
2️⃣ Name → Header
- 데이터 목록 중 Name에 있는 데이터 하나를 클릭하면, Header 정보를 볼 수 있다.

➡️ General
- 브라우저에서 서버로 보내는 Request 데이터라고 이해하면 쉽다.
- Status Code 200은 ‘요청이 성공했다’라는 뜻
- HTTP 상태 코드(Status Code)를 통해 브라우저와 서버간의 요청, 응답 과정에서 발생할 수 있는 상황들을 표현할 수 있다.

➡️ Request Headers
- 이것도 브라우저에서 서버로 보내는 Request 데이터라고 이해하면 쉽다.
➡️ Response Headers

- 서버가 웹 페이지 데이터와 함께 보낸 추가 데이터
3️⃣ Name → Response

- 서버에서 요청한 웹 페이지를 그려주기 위한 데이터
- ex. www.google.com → 구글 서버에서 해당 요청 받아서 index.html과 같은 파일을 찾아서 반환해줌
추가 데이터? 데이터?
위에서 살펴본 개발자 도구에서 Headers 탭에서는 Response Headers를 추가 데이터라고 표현하고, Response 탭에서는 그냥 데이터라고 표현하다. 두 가지의 차이점은 Response는 실제로 브라우저가 사용하는 본문 데이터이고, Response Headers는 그 데이터를 어떻게 해석할지 알려주는 부가 정보이다. HTTP 구성요소와 함께 Header를 더 자세히 살펴보자.
💡Method (요청 방식)
- GET
- 데이터 조회
- 리소스를 얻을 때 사용
- 브라우저 주소창에 URL 입력하면 GET 메서드를 사용해서 서버에 요청을 보낸다.
- POST
- 데이터 전송, 생성
- 웹 서버에 데이터를 게시할 때 사용하는게 일반적
- ex. 회원가입, 글쓰기 등
- DELETE
- 서버에 있는 리소스를 삭제할 때 사용한다.
💡Header (추가 데이터, 메타 데이터)
요청/응답에 포함되는 부가 데이터
- 브라우저가 어떤 페이지를 원하는지
- 요청 받은 페이지를 찾았는지
- 요청 받은 데이터를 성공적으로 찾았는지
- 어떤 형식으로 데이터를 보낼지
GET naver.com HTTP/1.1
- 이러한 사례 외에도 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받는다.
- 위에서 설명 된 메서드도 사실은 헤더에 포함되어 서버로 보내진다.
💡Payload (데이터, 실제 내용)
- 서버 ↔ 클라이언트 간에 주고받는 본문 데이터
- 응답 시 항상 Payload 포함 가능
- 요청 시에도 Payload 전송 가능 (단, GET 제외)
➡️ HTML
<!DOCTYPE html>
<html>
<head><title>By @ResponseBody</title></head>
<body>Hello, Spring 정적 웹 페이지!!</body>
</html>
➡️ JSON
{
"name":"Robbie",
"age": 20
}
* HTTP의 Payload를 통해 위와 같은 데이터들을 요청하고 응답 받을 수 있다.
HTTP 상태코드
- HTTP 상태 코드는 3자리 숫자로 이루어져 있다.
- 첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용되며, 나머지 두 자리는 세부적인 정보를 나타낸다.
| 분류 | 범위 | 의미 | 주요 코드 & 설명 |
| 1xx (Informational) | 100–199 | 요청을 수신했고, 처리가 계속 진행 중임 | 100 Continue : 클라이언트가 요청을 계속 보내도 됨 |
| 2xx (Successful) | 200–299 | 요청이 성공적으로 처리됨 | 200 OK : 요청 성공, 요청한 데이터 제공됨 |
| 3xx (Redirection) | 300–399 | 추가적인 조치(리다이렉트 등)가 필요함 | 301 Moved Permanently : 요청 리소스가 영구적으로 다른 위치로 이동 302 Found : 임시 이동 |
| 4xx (Client Error) | 400–499 | 클라이언트 측 오류 | 400 Bad Request : 잘못된 요청 401 Unauthorized : 인증 필요 403 Forbidden : 접근 금지 404 Not Found : 요청한 리소스를 찾을 수 없음 |
| 5xx (Server Error) | 500–599 | 서버 측 오류 | 500 Internal Server Error : 서버 내부 오류 502 Bad Gateway : 게이트웨이 오류 503 Service Unavailable : 서버 과부하/점검 중 |
출처
https://teamsparta.notion.site/1-5-HTTP-2252dc3ef5148119aa91f8a57d387b63
챕터1-5 : HTTP란 무엇일까? | Notion
HTTP(HyperText Transfer Protocol)란?
teamsparta.notion.site
'심화 > Spring' 카테고리의 다른 글
| [Spring] PathVariable과 RequestParam (0) | 2025.09.24 |
|---|---|
| [Spring] Spring MVC란? (0) | 2025.09.23 |
| [Spring] Apache Tomacat이란 무엇일까? (0) | 2025.09.18 |
| [Spring] RESTful API란? (0) | 2025.09.17 |
| [Spring] 서버란 무엇인가? (0) | 2025.09.16 |