[Web] HTTP란? / HTTP의 특성

effiRin·2022년 6월 22일
0

Web

목록 보기
2/2
post-thumbnail
post-custom-banner

HTTP란?

모바일이나 웹서비스에서 가장 많이 쓰이는 통신 방식


(참고)

웹 표준 기술 HTML, JavaScript, CSS는 ‘Client Side Script’ (클라이언트 컴퓨터에서 동작하는 코드)로, 서버에 저장되어 있고 이를 웹 브라우저로 다운로드 받아서 클라이언트 컴퓨터에서 실행시킨다.

이때, 데이터를 받아오는 프로토콜이 ‘HTTP’이다.


  • 웹 표준’이란?
    • 웹 표준이란 ‘웹에서 사용되는 표준 기술이나 규칙’
    • 브라우저 종류(크롬, 익스플로어, 사파리, 파이어폭스 등) 및 버전에 따라 발생하는 기능 차이에 대하여 호환이 가능하도록 제시된 표준으로써, 다른 기종, 플랫폼에 따라 다르게 구현되는 기술을 동일하게 구현하고, 어느 한쪽에 최적화되어 치우치지 않도록 공통 요소를 이용하여 웹페이지를 제작하는 기법을 의미
    • W3C의 권고안에 따라 웹페이지를 만들 때 사용하는 HTML, CSS, Javascript 등에 대한 규정을 담고 있습니다
    • HTML (구조) / CSS (표현) / Script (동작)
    • 출처 : https://junghn.tistory.com/entry/HTML-웹-표준이란-정의-및-용어-정리


HTTP 통신의 특성

  1. 클라이언트 서버 구조 (Request Response 구조)
  2. 무상태성 (Stateless 무상태 프로토콜)
  3. 비연결성(Connectionsless 비연결성)
  4. HTTP 메시지


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

클라이언트는 서버에 요청을 보내고 응답을 대기한다.
서버가 요청에 대한 결과를 만들어 응답한다.
이때, 클라이언트와 서버는 서로 HTTP라는 프로토콜을 이용해 소통한다.

2. 무상태성 (Stateless 무상태 프로토콜)

  • 접속을 끊는 순간, 서버가 클라이언트의 이전 상태 정보를 유지하지 않는 특성을 가지고 있다. (특정 상태를 유지하지 않는다)

  • 장점 : 서버 확장성 높음 (스케일 아웃) → 중요
    단점 : 클라이언트가 추가 데이터 전송

  • 상태 유지 / 무상태

상태 유지(Stateful)무상태(Stateless)
항상 같은 서버가 유지되야 한다.아무 서버나 호출해도 된다.
중간에 다른 서버로 바뀌면 안된다.중간에 다른 서버로 바뀌어도 된다.
다른 서버로 바뀔 때 상태 정보를 바뀌는 서버에게 미리 알려줘야 한다.갑자기 클라이언트의 요청이 증가해도 서버를 대거 투입할 수 있다.
서버 에러 시, 유지되던 상태정보가 다 날아가므로 처음부터 다시 요청해야 한다.서버 에러 시, 다른 서버에 응답을 전달하면 되므로 클라이언트는 다시 요청할 필요가 없다.
예) 로그인 화면 - 로그인 상태를 서버에 유지(브라우저 쿠키, 서버, 세션, 토큰 등)로그인이 필요없는 단순한 서비스 소개 화면
상태 유지는 최소한만 사용한다
(정보 공유를 위한 비용이 비싸지기 때문)
무상태는 응답 서버를 쉽게 바꿀 수 있다
→ 무한한 서버 증설 가능 (스케일 아웃 - 수평 확장 유리)

+) 대규모 트래픽이 발생하는 서비스는 서버가 여러 대인데, 서버가 많아질수록 서버 간의 정보 공유를 위한 비용이 부담된다. 그러나 Stateless하게 사용할 경우 정보 공유가 최소화되어 비용 부담을 최소화할 수 있다



  • Stateless를 통한 Stateful 한계 극복

    클라이언트에서 이전에 자신이 요청한 정보를 저장해놓고 해당 메시지를 함께 보내는 것
    예) 순서
    1. 'A' 정보 요청
    2. 'A' 정보 응답
    3. 'A' + 'B' 정보 요청
    4. 'A' + 'B' 정보 응답


    따라서 서버가 많아지던 말던 다른 서버를 조회하지 않고 서버는 그 클라이언트가 보낸 조회에 대한 응답만을 하면 된다. 각 서버가 메시지를 독립적으로 처리할 수 있게 되면서 서버의 개수에 비례해서 성능이 올라갈 수 있게 된다.

출처 : https://kotlinworld.com/97#Connectionless



3. 비연결성(Connectionsless 비연결성)

  • 실제 요청을 주고 받을 때만 연결을 유지하고, 응답을 주고 받고나면 서버와의 연결을 끊는다.
  • (HTTP 1.0 기준) HTTP 통신은 연결을 유지하지 않는 것을 기본 동작으로 가진다. (for 리소스 사용 최소화)
    • 별도의 옵션을 두면 일정기간 유지 가능
    • 일반적으로 초 단위 이하의 빠른 속도로 응답
    • 트래픽이 많지 않고, 빠른 응답을 제공할 수 있는 경우에 효율적

  • 연결을 유지하지 않는 모델 - HTTP
    • 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊음 → 최소한의 자원으로 서버 유지를 가능하게 함.

    • 한계
      • TCP/IP 연결을 새로 맺어야 해서 3 way handshake 시간 추가됨
      • 웹 브라우저로 사이트 요청하면 HTML 뿐만 아니라 JavaScript, CSS, 추가 이미지 등 수많은 자원이 함께 다운로드 됨
      • 해당 리소스들을 보낼 때마다 연결과 종료를 반복하는 것은 비효율적으로, 지금은 HTTP 지속 연결(Persistent Connections)로 한계를 극복 → 요청 후 모든 리소스에 대한 응답이 돌아오면 연결 종료.

  • 연결 지향(Connection Oriented)
    • 연결을 유지하는 모델 - TCP/IP
    • 클라이언트 요청을 보내지 않더라도 계속 연결을 유지해야 함. → 서버의 자원이 계속 소모됨.


4. HTTP 메시지

  • HTTP를 이용해 클라이언트와 서버 사이에서 주고받는 메시지 (데이터가 교환되는 방식)
  • HTTP 메시지의 유형 - ‘요청(requests)’과 ‘응답(responses)’
  • 구성 파일, API, 기타 인터페이스에서 HTTP 메시지를 자동으로 완성해주기 때문에 이런 메시지를 직접 작성할 필요가 거의 없다.
  • (HTTP 메시지 구조는 나중에…)


5. 단순함 + 서버 확장성

  • HTTP/0.9는 굉장히 단순했으나, HTTP/1.0부터 본래의 단순함을 지키면서 확장하기 시작했다.
  • 상태코드 라인, 버전 정보, HTTP 헤더(메타데이터 전송 허용 / Content-Type) 등 HTTP의 확장성에 기여

(더보기) https://developer.mozilla.org/ko/docs/Web/HTTP/Basicsof_HTTP/Evolution_of_HTTP#http0.9원-라인프로토콜



<출처>

[네트워크/HTTP] HTTP란? - 특징(무상태와 비 연결성) - 하나몬
HTTP(HyperText Transfer Protocol)의 특징
[HTTP] 1. HTTP 메세지는 어떻게 구성되었는가? Start Line, Header Body로 보는 HTTP 메세지
[네트워크/HTTP] HTTP 메세지(message) - 요청과 응답 구조 - 하나몬
HTTP의 진화 - HTTP | MDN

profile
모종삽에서 포크레인까지
post-custom-banner

0개의 댓글