본문 바로가기
카테고리 없음

HTTP

by 두잇베스트 2021. 4. 4.

HTTP 기본

HTTP = HyperText Transfer Protocol

초기에는 문서간에 링크를 통해서 연결할 수 있는 HTML을 전송하는 프로토콜로 시작하였으나, 이제는

  • HTML , XML
  • IMAGE, 음성, 영상, 파일
  • JSON, XML(API)
  • 거의 모든 형태의 데이터 전송 가능하다.

HTTP 메시지에 모든 것을 전송한다.

 

기반 프로토콜

  • TCP기반 프로토콜 위에 동작하는 HTTP/1.1(가장 많이 사용), HTTP/2
  • UDP기반 프로토콜 위에 동작하는 HTTP/3

 

HTTP 특징

  • 클라이언트 서버 구조
  • 무상태 프로토콜 , 비연결성
  • HTTP 메시지
  • 단순함, 확장 가능

 

클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고, 응답을 대기
  • 서버는 요청에 대한 결과를 응답

더 중요한 점! 클라이언트는 UI, 사용성에 집중하고 서버는 비즈니스 로직, 데이터에 집중하게 된다. 그래서 이 구조에서 중요한점이 서버에 문제가 발생하게 된다면, 서버는 클라이언트 배제하고 서버 문제 해결에 집중할 수 있다는 점이다. 또한 양쪽이 독립적으로 진화가 가능한 구조이다.

 

무상태 프로토콜 (Stateless)

 

서버가 클라이언트 상태를 보존하지 않는다
이게 무슨 말이냐? 만약 Stateful 프로토콜이라면 서버가 클라이언트의 상태를 보존하게 된다.

 

Stateful 상황

클라이언트 A: 노트북 얼마인가요?
서버 A : 100만원 입니다. (노트북 상태 유지)

클라이언트 A: 2개 구매하겠습니다
서버A : 노트북 2개는 200만원 입니다. ( 노트북, 2개 상태 유지)

근데 만약 여기서 서버가 바뀌게 된다면, 서버입장에서는 동일한 질문이 온다하더라도 무슨 요청인지 알수없다. 근데 이런 상황이 Stateless 프로토콜일 경우는 알아보자

 

Stateless 상황
클라이언트 A : 노트북 얼마인가요?

서버A : 100만원 입니다

클라이언트A : 노트북 2개 얼마인가요?
서버A: 노트북 2개는 200만원 입니다.

무상태 프로토콜일경우, 서버가 서버B로 바뀌게 되더라도 클라이언트 요청을 받아들일수있다. 필요한 데이터를 매번 전송하기 때문이다. 그래서 중간에 점원이 바뀌어도 문제없다.

 

image

 

클라이언트는 서버1하고만 통신해야하며, 서버1이 중간에 장애가 날 경우 처음부터 다시 시작해야한다.

 

image

 

클라이언트는 필요한 정보를 다 담아서 보내기 때문에, 서버1이 장애가 나더라도 서버2와 통신하면 되기 때문에 아무 문제가 없다.

 

무상태 프로토콜의 한계

  • 모든것을 무상태로 설계 할 수 있는 경우도 있고 , 없는 경우도 있다.
  • 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지해야하기 때문에
  • 상태 유지는 최소한으로 사용 , 최대한 무상태로 설계

정리

상태 유지: 중간에 다른 점원으로 바뀌면 안된다.

무상태: 중간에 다른 점원으로 바뀌어도 된다.
+ 갑자기 고객이 증가해도 서버를 증설하면 된다.
+ 무한한 서버 증설 가능

 

비연결성

요청하고, 응답하고 연결을 끊는다.
서버는 연결 유지X, 서버 자원 소모 최소
서버 자원을 매우 효율적으로 사용할 수 있음.

한계와 극복

  • 중간에 다른 페이지를 요청할 경우, TCP/IP 연결을 새로 맺어야함 - 3 way handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 이미지 등 수 많은 자원이 함께 다운로드
  • HTTP 지속 연결로 이 문제를 해결

image

 

— 지속연결

image

 

HTML 페이지를 하나 받을때까지 지속 연결을 유지한다.

Reference

인프런 - 김영한 HTTP

댓글