HTTP(Hypertext Transfer Protocol)

uglyduck.dev·2020년 9월 21일
0

개념 모아 🗂

목록 보기
15/40

HTTP란?

하이퍼 텍스트 전송 프로토콜이라고도 하며, 웹을 통해 데이터를 전송하는 데 사용되는 Protocol(프로토콜)이다.

HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계돼 있다. 인터넷상에서 흔히 볼 수 있는 HTML로 작성된 문서는 HTTP로 보낼 수 있는 데이터의 한 종류일 뿐이다. 이미지, 동영상, 오디오, 텍스트 문서들 아무튼 종류를 가리지 않는다.

클라이언트-서버 모델 혹은 프로토콜을 사용한다. 여기서 말하는 클라이언트는 보통 가정용 컴퓨터, 노트북, 모바일 장치를 말하고 HTTP 서버는 일반적으로 Apache, IIS, nginx와_ 같은 웹 서버 소프트웨어를 실행하는 웹 호스트이다. 

클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다.

웹 브라우저와 웹 서버 간의 통신 프로토콜 HTTP.png

HTTP 프로토콜의 특징 및 기술

  • 단순히 HTML 페이지나 이미지 파일을 전송하는 차원을 넘어서 원격 컴퓨터에 로딩되어 있는 함수나 객체의 메서드를 호출할 때도 사용됨
  • 클라이언트와 서버 사이에 서비스를 요청하고 응답하는 방식인 SOAP(Simple Object Access Protocol), RESTul(REpresentational State Transfer) 모두 HTTP 프로토콜을 응용하거나 확장한 기술
  • 아마존의 클라우드, KT의 클라우드는 RESTful 방식의 API를 제공

HTTP와 연결

연결은 전송 계층에서 제어되므로 근본적으로 HTTP 영역 밖이다. HTTP는 연결될 수 있도록 하는 근본적인 전송 프로토콜을 요구하지 않는다. 다만 그저 신뢰할 수 있거나 메시지 손실이 없는(최소한의 오류는 표시) 연결을 요구 할 뿐이다. 인터넷 상의 가장 일반적인 두 개의 전송 프로토콜 중에서 TCP는 신뢰할 수 있으며 UDP는 그렇지 않다. 그러므로 HTTP는 연결이 필수는 아니지만 연결 기반인 TCP 표준에 의존합니다.

클라이언트가 서버와 통신하고자 할 때, 최종 서버가 됐든 중간 프록시가 됐든 공통 과정을 수행한다.

  1. TCP 연결을 연다.
  2. HTTP 메시지를 전송한다.
  3. 서버에 의해 전송된 응답을 읽어들입니다.
  4. 연결을 닫거나 다른 요청들을 위해 재사용합니다.

HTTP 모니터링

프록시 프로그램의 요청 응답 데이터 가로채기.png

  • 웹 브라우저가 웹 서버에게 요청하면 HTTP 프록시가 그 요청을 대신 받아서 서버에 전달
  • 서버에서 응답이 오면 HTTP 프록시가 그 응답을 대신 받아서 다시 웹 브라우저에게 전달

HTTP의 동작 방식 (Connectless & Stateless)

Connectless

서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. 기본적으로는 자원 하나에 대해서 하나의 연결을 만든다. 이런 작동방식은 각각 아래의 장점과 단점을 가진다.

  • 장점 : 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다. 수십만 명이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.
  • 단점 : 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다. 이러한 HTTP의 특징을 stateless라고 하는데, Connectless로 부터 파생되는 특징이라고 할 수 있다. 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다. 예컨대, 클라이언트가 과거에 로그인을 성공하더라도 로그인 정보를 유지할 수가 없다. HTTP는 COOKIE를 이용해서 이 문제를 해결하고 있다.

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글