[HTTP] HTTP의 특징

이준영·2024년 3월 23일
0

🌐 HTTP

목록 보기
8/9
💡 김영한님의 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 보고 복습 차원에서 정리해 놓은 글 입니다.

참고


HTTP란?

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이고, 웹에서 이루어지는 모든 데이터를 교환하는 기초입니다.

HTTP 메세지를 통해 HTML TEXT 뿐만 아니라 이미지 영상 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송 가능합니다.


HTTP의 특징

1. 클라이언트 - 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고, 응답이 올때까지 기다림
  • 서버가 요청에 대한 결과를 만들어서 응답
클라이언트 - 서버 구조의 장점
서버와 클라이언트가 구분되어 있기에, 서버와 클라이언트 양쪽이 독립적으로 진화할 수 있다는 장점이 있습니다.

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

  • 상태 유지 : 중간에 다른 서버로 바뀌면 안된다.

    • 서버에 요청을 보낼 때 서비스가 여러개의 서버를 가지고 있다면, 다음 요청이 다른 서버로 보내질 경우 해당 서버도 이전 요청에 대한 정보를 알고있어야 함
  • 무상태: 중간에 다른 서버로 바뀌어도 됨

    • 갑자기 요청이 증가해도 서버를 늘릴 수 있음
    • 응답 서버를 쉽게 바꿀 수 있다 -> 무한한 서버 증설 가능
    • 중간에 서버에 문제가 생겨도 다른 서버에서 동일하게 처리할 수 있음
무상태(stateless)의 단점 - 주문을 노트북 하나를 주문할 경우에 노트북, 2개, 카드로 결제 같이 데이터를 많이 보내야 한다는 단점이 존재합니다.

로그인과 같이 상태 유지를 해야 하는 경우는 쿠키, 세션등을 통해 상태를 유지할 수 있습니다.

💡 Stateful, Stateless 차이
Stateful
고객 : 아메리카노 얼마인가요?
점원 : 3000원 입니다.

고객 : 2개 주세요
점원 : 6000원 입니다.

고객 : 카드로 계산할게요
점원 : 결제 되었습니다.


Stateless

고객 : 아메리카노 얼마인가요?
점원 : 3000원 입니다.

고객 : 아메리카노 2개 주세요
점원 : 6000원 입니다.

고객 : 아메리카노 2개 카드로 계산할게요
점원 : 결제 되었습니다.

3. 비 연결성(Connectionless)

HTTP는 기본적으로 연결을 유지하지 않습니다.

요청과 응답 이후에 연결을 계속 유지할 경우 클라이언트들이 작업을 하지 않더라도 연결이 유지되어 서버의 자원이 소모 됩니다.

HTTP는 기본적으로 요청과 응답 이후 연결을 끊는 비 연결성의 특성을 가지는데,
요청을 받고 응답 이후 바로 연결을 끊는다면, 그만큼 서버의 자원을 효율적으로 사용할 수 있습니다.

❗️ 비 연결성의 한계

연결을 유지하지 않는 경우 연결을 하고 바로 끊기 때문에 다시 요청이 오면 TCP/IP 연결을 새로 맺어야 합니다.

다시 요청이 올때마다 다시 3way handshake(Syn, Syn + Ack, Ack)를 해야하기 때문에 시간이 추가로 소모된다는 단점이 있습니다.

HTTP 초기에는 연결과 종료를 반복해서 데이터를 받았지만,
이러한 문제는 지속 연결(Persistent Connections)로 개선하였습니다

HTTP2, HTTP3는 이것을 더 빠르게 해결했고, 특히나 HTTP3 에서는 UDP 프로토콜을 통해 연결 속도 자체도 줄였습니다.


profile
작은 걸음이라도 꾸준히

0개의 댓글

관련 채용 정보