Home HTTP
Post
Cancel

HTTP

HTTP는 컴퓨터 공학과 개발을 잘 모르는 일반 사용자들에게도 친숙한 프로토콜로 애플리케이션 계층을 대표하는 프로토콜이다. 명칭 자체는 Hypertext transfer Protocol의 약자로 하이퍼텍스트와 이미지(jpeg, png), 동영상 등 리소스를 전송할 때 사용된다. 이때 하이퍼텍스트를 직역하면 ‘글을 뛰어넘는 글’로 링크를 통해 다른 문서로 이동, 탐색할 수 있는 글을 말한다. 이러한 하이퍼링크로 문서들이 연결된 시스템을 월드와이드 웹, 줄여서 웹이라고 하며 웹의 기본 통신 규칙이 HTTP이다.

웹에서 데이터, 자원, 리소스를 생성, 접근,수정하고 삭제하는 모든 과정들은 HTTP 요청과 응답을 통해 이루어진다. 주로 클라이언트 - 서버 관계에서 이루어지며 브라우저, 앱을 통해 요청을 보내는 입장을 클라이언트, 요청을 받아 적절한 작업을 수행하고 그 결과를 응답으로 반환하는 입장을 서버라고 한다. 클라이언트와 서버의 요청과 응답은 HTTP를 준수하며 전송되며 각 요청과 응답의 단위인 HTTP message는 시작줄, 헤더, 바디로 이루어진다.

  • 시작줄: 요청 메소드, 리소스의 경로, 프로토콜의 버전과 요청이나 응답의 상태가 담긴다.
  • 헤더: 요청과 응답의 데이터의 형식이나 언어 등 메세지 바디 내용의 요약된 정보와 토큰과 같은 부가적인 값들이 담긴다.
  • 바디: 추가할 자원의 내용, 반환하는 데이터의 값 등 전달하는 데이터가 담기는 부분으로 전달하는 데이터가 담긴다.

시작줄에 담기는 요청 메소드는 다른 말로 HTTP request method라고 불리며 POST(자원 생성), GET(자원 조회), PUT(자원 전체 수정), PATCH(자원 일부 수정), DELETE(자원 삭제)가 있다.

요청은 대표적인 방법으로 브라우저에 url을 입력함으로서 보내지는데, 요청을 보낼 때 사용되는 문자열인 url은 사용하는 프로토콜, 도착할 도메인주소, 접근할 리소스의 경로를 포함한다.

HTTP와 함께 친숙한 또 하나의 프로토콜은 HTTPS로, HTTP에 SSL/TLS 프로토콜을 더해 보안을 강화한 프로토콜이다. HTTPS를 통해서는 평문이 아닌 암호화된 결과값으로 통신을 하며 암호화된 통신, 세션이 수립되기까지는 비대칭 키 방식으로 인증 과정을 거치고 보안 세션이 생성된 후에는 대칭키 방식으로 통신한다. 보안을 위해 http 보다 https를 사용하는 것이 권장되며 이를 위해 구글은 랭킹 요소에 보안 프로토콜 채택 시 더 높은 점수를 부여한다.

Stateless와 Connectionless은 HTTP의 대표적이며 주요한 특징적 개념이다.

  • Stateless: 이전 요청에 대한 정보를 기억하지 못함을 뜻하며 이전 요청을 기억할 경우 너무 많은 리소스가 소모되는 것을 막기 위해 채택된 특징이다.
  • Connectionless: 요청에 대해 응답을 하고 나면 연결을 끊는 특징을 말하며, 이를 통해 동시에 다수의 요청을 처리할 수 있다.

때에 따라 기본적으로는 Stateless하나 이를 보완해 Stateful하게 구현해야 할 상황들이 있다. 예를 들어 한 번 로그인을 하고 나면 요청을 보낼 때마다 다시 인증을 할 필요가 없도록 인증 상태가 유지되어야 하는 경우이다. 이와 같은 경우엔 쿠키와 세션, JWT를 도입해 보완한다.

This post is licensed under CC BY 4.0 by the author.

프로젝트 세팅 단계 정리

REST API 설계 시 고려 사항