[HTTP] HTTP란? HTTP 특징

괭이밥·2022년 11월 15일
0

HTTP

목록 보기
2/6
post-thumbnail

목차

  1. HTTP란?
  2. HTTP 특징


📌 HTTP란?

HTTP(HyperText Tranfer Protocol)

  • 웹의 애플리케이션 계층 프로토콜
  • TCP를 전송 프로토콜로 사용
  • 처음엔 HTML 같은 HyperText 전송했지만 이후 많은 데이터를 HTTP로 전송
    • HTML, 텍스트, 음성, 영상, 파일
    • JSON, XML 파일
    • 서버간 통신

HTTP 간단 역사

  • HTTP 0.9: GET 메서드만 지원
  • HTTP 1.1: 가장 많이 사용
  • HTTP 2: HTTP 1.1에서 성능 개선
  • HTTP 3: TCP 대신 UDP 사용하여 성능 개선

HTTP 기반 프로토콜

  • TCP 기반으로 동작
    • HTTP 1.1, HTTP 2
  • UDP 기반으로 동작
    • HTTP 3


📌 HTTP 특징

HTTP 특징은 다음과 같다.
1. 클라이언트 서버 구조
2. 무상태 프로토콜
3. 비 연결성
4. HTTP 메시지 통한 통신

1. 클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청 보내고 대기하며 이후에 응답이 오면 동작

장점

  • 클라이언트, 서버 분리함으로써 독립적으로 진화 가능
  • 클라이언트는 사용성에 집중
  • 서버는 서비스, 트래픽 등에 집중

2. 무상태 프로토콜

stateless, 무상태 프로토콜

  • 서버가 클라이언트 상태를 보존하지 않음
  • 클라이언트가 요청할 때 모든 정보를 다 보냄
  • 장점
    • 서버에서 문제가 발생해도 다른 서버로 운영 위임 가능
    • 서버 확장성 높음 -> scale out
  • 한계
    • 클라이언트가 서버에 요청할 때 보내는 데이터 많음
    • 모든 것을 무상태로 설계할 수 없음 ex. 로그인

추가) stateful, 상태 프로토콜

  • 서버가 클라이언트의 상태를 보존
  • 항상 같은 서버가 유지되어야 함
  • 만약 다른 서버로 바뀐다면 정보를 미리 알려야 함

3. 비 연결성

클라이언트와 서버 연결 유지하지 않는 모델

  • 요청을 주고 받을 때만 연결
    • 클라이언트가 요청 보내고 서버가 응답하면 연결을 바로 끊는다.
  • 최소한의 자원으로 서버 유지하려 함
    • 서버와 클라이언트 연결을 최소화 한다.
  • 장점
    • 서버 자원 효율적 사용 가능
  • 단점
    • TCP/IP 연결 새로 맺는 시간 추가(3 way handshake)
    • 필요한 자원 나누어서 요청하면 그때마다 요청
      • ex. 웹 브라우저 사이트 요청 -> HTML, JS, CSS 다양한 자원 필요, 받을 때 마다 요청, 응답하면 시간 많이 걸림
      • HTTP 지속 연결로 문제 해결

HTTP 지속 연결

  • 클라이언트와 서버 TCP/IP 연결 후 어느정도 연결 유지
    • 연결 유지는 내부 매커니즘따라 다 다르다.
  • HTTP 2와 HTTP 3에서 개선이 이뤄짐
    • HTTP3는 UDP로 연결 속도도 줄임

추가) 연결을 유지하는 모델

  • 클라이언트와 서버사이 TCP/IP 연결 유지
  • 연결 유지하는 동안 서버 자원 소비
  • 클라이언트 서버에 요청하지 않아도 서버와 연결하고 있으면 자원이 소비되는 단점 발생

4. HTTP 메시지 통한 통신

HTTP 메시지

  • 클라이언트, 서버는 HTTP 메시지를 이용하여 통신
  • HTTP 요청 메시지: 클라이언트가 서버에게 보내는 메시지
  • HTTP 응답 메시지: 서버가 클라이언트에게 응답하는 메시지

링크 추후 추가



출처
인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의

profile
사람들이 움직이는게

0개의 댓글