심화/Spring

[Spring] HTTP란 무엇일까?

annovation 2025. 9. 22. 09:54

HTTP란?

 

💡HTTP(HyperText Transfer Protocol)란?

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

데이터 흐름

 

💡HTTP 데이터 흐름

HTTP 데이터 흐름

  • 브라우저 → 서버 : 원하는 페이지를 요청(Request)
  • 서버 → 브라우저 : 해당 페이지나 데이터를 응답(Response)
  • 브라우저는 응답 데이터를 화면에 렌더링

* 어떠한 데이터든 주고 받는게 가능하다.

 

💡브라우저에서 HTTP가 동작하는 것을 직접 확인해보기

 

1️⃣ 개발자 도구 네트워크 탭

  • Mac 기준 : 브라우저에서 Fn + F12를 누르면 DevTool 혹은 개발자 도구를 볼 수 있다.

개발자 도구

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

2️⃣ Name → Header

  • 데이터 목록 중 Name에 있는 데이터 하나를 클릭하면, Header 정보를 볼 수 있다.

Header

➡️ General

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

Request Headers

➡️ Request Headers

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

➡️ Response Headers

Response Headers

  • 서버가 웹 페이지 데이터와 함께 보낸 추가 데이터

3️⃣ Name → Response

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