Study/네트워크 / / 2022. 3. 10. 18:14

[모든 개발자를 위한 HTTP 웹 지식] HTTP 기본

 

HTTP란?

HyperText Transfer Protocol의 약자로 말 그대로 HyperText를 전송하기 위한 프로토콜

 

전송 가능한 데이터

  • HTML, TEXT
  • IMAGE, 음성, 영상, 파일
  • JSON, XML (API)

위와 같이 거의 모든 형태의 데이터 전송이 가능합니다. 서버간의 데이터를 주고받을 때 대부분 HTTP를 사용합니다.

 

HTTP의 특징

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

 

클라이언트 서버 구조(Request Response 구조)

1. 클라이언트는 서버에 요청을 보내고, 응답을 대기합니다.
2. 서버는 요청에 대한 결과를 만들어서 응답을 클라이언트에 전송합니다.

 

 

무상태 프로토콜(Stateless)

서버가 클라이언트의 상태를 보존하지 않는 프로토콜입니다.

장점 : 서버 확장성이 높음(스케일 아웃)
단점 : 클라이언트가 추가로 데이터를 전송해야함

 

 

Stateful Stateless 차이

만약 장애나 천재지변 등의 이유로 통신하던 서버가 멈춘다면 Stateful 같은 경우에는 다른 서버를 이용하더라도 지금까지 통신하던 데이터가 사라질 것입니다. 하지만 Stateless 같은 경우라면, 다른 서버를 이용하더라도 클라이언트가 데이터를 가지고 있으면서 통신을 하기 때문에 아무런 문제없이 남은 작업을 완료할 수 있습니다.

 

Stateless의 실무 한계

모든 것을 Stateless로 설계할 수는 없습니다. 실무에서는 Stateful이 꼭 필요한 경우가 있습니다. 로그인이 필요없는 단순한 HTML만 뿌려주는 웹 사이트라면 모르겠지만 로그인이 필요한 경우에는 로그인한 사용자가 로그인했다는 상태를 서버에 유지하여야 합니다. 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태를 유지할 수 있습니다. 하지만 상태 유지는 최소한만 사용해야합니다.

 

비 연결성

HTTP는 기본이 연결을 유지하지 않는 모델입니다.

일반적으로 초 단위 이하의 빠른 속도로 응답을 하며 1시간 동안 수천명이 서비스를 사용해도 실 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작기 때문에 서버의 자원을 매우 효율적으로 사용이 가능합니다.

 

비 연결성의 한계와 극복

TCP/IP 연결을 매번 연결할때마다 새로 맺어야 합니다. - 3 way handshake 시간이 추가됨

웹 브라우저로 사이트를 요청하면 HTML, JS, css, 이미지 등 많은 자원이 함께 다운로드 됩니다.

지금은 HTTP 지속 연결(Persistent Connections)로 문제를 해결했습니다.

HTTP/2, HTTP/3에서 더 많은 최적화가 이루어졌습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유