[SPRING] HTTP란 무엇일까?

Noah JEONG·2023년 12월 12일
0
post-thumbnail

HTTP란 무엇일까?

HTTP(HyperText Transfer Protocol)란?

  • 데이터를 주고 받는 양식을 정의한 "통신 규악" 중 하나가 HTTP입니다.
  • 매우 범용적인 양식을 가지고 있어 전 세계에서 널리 쓰이는 통신 규약입니다.
  • 여기서 말하는 통신 규약이란, 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속을 의미합니다.
    • 컴퓨터 끼리 데이터를 주고받을 때 정해진 규칙없이 매번 요청하는 방식이 다르다면 소통에 큰 문제가 발생할 것입니다.
  • 따라서 현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 정해준 규칙에 맞게 데이터를 주고 받습니다.
  • 또한, 모든 브라우저는 HTTP 프로토콜을 기본으로 지원하기 때문에 여러분은 매일 HTTP를 이용하는 셈이 됩니다.

우리는 어떻게 HTTP로 데이터를 주고 받을까?

  • HTTP에서는 언제나 Request, Response라는 개념이 존재합니다.
  • 서버와 브라우저의 관계로 가볍게 말해보면 아래와 같이 동작합니다.
    1. 브라우저는 서버에서 자신이 원하는 페이지(URL 등의 정보)를 요구(Request)합니다.
    2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고 있다면 해당 페이지에 대한 데이터를 실어 응답(Response)해줍니다. 없다면 없는 페이지에 대한 데이터를 반환합니다.
    3. 브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줍니다.
  • 그리고 위와 같은 사례에서 "데이터"는 어떠한 데이터든 주고 받는게 가능합니다.

추가데이터? 데이터? 뭐가 다른걸까?

  • Headers 탭에서는 추가 데이터라고 많이 말했었고, Response 탭에서는 그냥 데이터라고 말했습니다. 이것에 대해서 조금 더 자세히 알아보도록 하겠습니다.

  • HTTP에는 크게 다음과 같은 구성 요소가 존재합니다.

  • Method (호출/요청 방식)

    • GET : 이름 그대로 어떤 리소스를 얻을 때 사용됩니다. 브라우저의 주소창에 URL을 입력하면 GET 메서드를 사용해서 서버에 요청을 보냅니다.
    • POST : 웹 서버에 데이터를 게시할 때 사용하는게 일반적입니다. (ex. 회원가입, 게시글 작성, 댓글 작성)
    • 그 외 DELETE 등의 여러 요청 방식이 존재합니다.
    • 가장 대표적인 요청 방식이 GETPOST 입니다.
  • Header (추가 데이터. 메타 데이터)

    • 브라우저가 어떤 페이지를 원하는지
    • 요청 받은 페이지를 찾았는지
    • 요청 받은 데이터를 성공적으로 찾았는지
    • 어떤 형식으로 데이터를 보낼지
    GET naver.com HTTP/1.1
    • 이러한 사례 외에도 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받습니다. 위에서 설명 된 메서드도 사실은 헤더에 포함되어 서버로 보내집니다.
  • Payload (데이터. 실제 데이터)

    • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있습니다.,
    • 클라이언트(브라우저)가 요청을 할 때에도 Payload를 보낼 수 있습니다.
      그리고 "GET method를 제외하곤 모두 Payload 를 보낼 수 있다" 는게 HTTP에서의 약속입니다.
    • HTML
      <!DOCTYPE html>
      <html>
      	<head><title> By @ResponseBody</title></head>
       		<body> Hello, Spring 정적 웹 페이지!!</body>
      </html>
    • JSON
    {
    	"name" : "Robbie",
      	"age" : 20
    }
    • HTTP의 Payload를 통해 위와 같은 데이터들을 요청하고 응답 받을 수 있습니다.
profile
23.10.04 IT공부 시작/하루에 한번씩 쓰기 10/10~

0개의 댓글