http

Duboo·2023년 10월 20일
0

HTTP - HyperText Transfer Protocol


HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다.
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다.
클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다.
하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다. | 출처: MDN


웹(web)은 크게 4가지 요소로 이루어져 있습니다. 간단하게 살펴보자면

  • 웹 페이지를 만드는 컴퓨터 언어인 HTML
  • 원하는 웹 페이지에 방문할 수 있도록 도와주는 주소체계인 URL, URI
  • 웹 페이지를 주고받는 소프트웨어인 웹 브라우저(Web brower), 웹 서버(Web server)
  • 웹 브라우저와 웹 서버가 통신을 할 때 사용하는 통신 규칙(규약)인 HTTP

위의 4가지는 웹을 구성하는 가장 중요한 요소들입니다.

그렇다면 클라이언트는 어떤 메세지를 통해서 서버에 요청하고 서버는 어떤 메세지를 이용해서 응답을 하는지 HTTP를 통해서 확인해 보겠습니다.


HTTP는 요청(Request)과 응답(Response)을 나타낸다고 할 수 있습니다.

예를 들어 클라이언트가 서버에게 어떤 데이터를 달라고 이야기한다면
서버는 클라이언트의 이야기를 알아들을 수 있어야 합니다.

즉, 클라이언트가 요청을 한다는 것과 어떤 것을 요청하는지 서버가 이해해야 한다는 겁니다.
다시 말하자면 서버와 클라이언트가 서로 알아들을 수 있는 공통적인 메세지가 필요한데
이러한 메세지를 HTTP 라고 말하는 것이고 HTTP는 크게 요청(Request)과 응답(Response)을 위한 메세지로 구분되어 있다고 말할 수 있습니다.

서로 대화할 수 있는 방법이기 때문에 깰 수 없는 규칙 혹은 규약 이라고 이야기 한다.


메세지 규칙의 중요한 작동 방식 그리고 구성

작동방식

  1. 클라이언트의 요청이 있다면 서버의 응답이 꼭 있어야 한다. - 요청과 응답형식
    요청에 대한 답이 없다면 없다, 잘못된 요청이면 잘못된 요청이다, 있으면 결과 데이터와 같은 형식으로 즉, 한번의 요청에는 한번의 응답을 한다. ( connectionless )

  2. http의 각 요청은 모두 독립적이다. 내가 두번의 요청을 보낸다고 해서 두 번째 요청이 내가 보낸 요청이라고 서버는 알 수 없다. 즉, 상태(state)라는게 없다. 매번 보내는 요청이 독립적이여서 문맥이 없다.( stateless )

  3. HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트로 80번을 사용한다.


구성

HTTP에서 가장 중요한 부분이다. 요청과 응답 메세지는 텍스트 형식이기 때문에 사람이 읽고 쓰기가 쉽다.
개발자 도구를 사용해서 한 눈에 살펴볼 수 있다.

밑의 사진은 MDN의 HTTP 설명에 대한 내용의 개발자 도구의 Network 탭 화면이다.


HTTP 메소드
위에서 URL을 이용해서 서버에 특정 데이터를 요청할 수 있다고 했습니다.

대표적인 HTTP 메소드

  • GET: 서버에 자원을 요청
  • POST: 서버에 자원을 생성
  • PUT: 서버의 자원을 수정
  • DELETE: 서버의 자원을 제거

위의 메소드를 사용해서 요청하는 데이터에 특정 동작을 수행할 수 있습니다.

HTTP 상태 코드(Status Code)
클라이언트 쪽에서 위의 메소드를 사용해서 특정 요청을 한다면 서버 쪽에서는 이에 대한 응답이 꼭 있어야 한다고 말했습니다. 이러한 응답에 대한 정보를 'Status Code' 에서 살펴볼 수 있습니다.

상태 코드 종류는 매우 다양하지만 대표적으로 성공(200) 과 실패(404)가 있습니다.

상태 코드 종류 보기

그리고 서버는 응답에 대한 데이터를 Body에 담아서 상태 코드와 함께 클라이언트에게 보내줍니다.

위의 내용들을 정리하자면 클라이언트는 요청, 서버는 응답을 하며 이러한 요청과 응답에 대한 규칙은 HTTP가 있고 반복되는 코드 및 동작, 기능을 API라는 도구를 이용해서 소스 코드의 재사용성을 높혀 더욱

쉽게 코드를 작성할 수 있다 정도로 이야기할 수 있습니다.

profile
둡둡

0개의 댓글

Powered by GraphCDN, the GraphQL CDN