HTTP 프로토콜

Yerim·2021년 10월 7일
0

Network

목록 보기
4/6

💡 HTTP

HyperText Transfer Protocol
HTTP 프로토콜은 애플리케이션 계층 프로토콜로, 인터넷 상에서 데이터를 주고받기 위하여 데이터를 생성할 때 사용되는 프로토콜이다.

HTTP 프로토콜은 거의 모든 형태의 데이터를 전송할 수 있다!
서버간 데이터를 전송할 때에도 HTTP 프로토콜을 사용한다.

HTTP 1.1

  • 현재 가장 많이 사용되는 HTTP 프로토콜 버전
  • TCP/IP 프로토콜 위에서 동작한다

💡 HTTP 프로토콜의 특징

클라이언트 - 서버 구조

  • 클라이언트는 서버에 요청(request)을 보내고, 서버의 응답(response)을 기다린다.
  • 서버는 클라이언트의 요청에 대한 응답을 만들어 HTTP 프로토콜을 통해 클라이언트에 전송한다.

무상태 프로토콜(Stateless)

  • 서버는 특정 클라이언트의 상태를 유지하지 않는다.
  • 같은 클라이언트가 서버에 첫번째 요청 후 두번째 요청을 할 때 서버는 클라이언트의 이전 요청 정보를 가지고 있지 않다.
  • 장점 : 서버의 확장성이 높다
    ➡ 응답 서버를 쉽게 바꿀 수 있으므로 서버의 증설이 쉽다.
  • 단점 : 클라이언트가 계속해서 기존 데이터에 추가된 데이터를 전송해야 한다.
    상태를 유지해야 하는 경우 : ex. 로그인

비연결성(Connectionless)

  • 클라이언트와 서버의 연결이 지속되면 서버의 요청 클라이언트의 수가 많아질수록 서버의 자원이 소모된다.
  • 클라이언트와 서버의 연결을 지속하지 않음으로써 서버는 최소한의 자원만 사용할 수 있다.
  • 일반적으로 서버의 응답 시간은 초단위로 매우 짧기 때문에 아주 많은 수의 동시 요청이 서버에 들어와도 서버가 동시에 처리하는 요청의 수는 그에 비해 매우 작다.

    서버 자원을 효율적으로 활용 가능!`

  • 한계
    • TCP/IP 연결을 매 요청마다 새로 맺어야 하므로 3 way handshake 시간이 소요된다.
    • 매 요청마다 수많은 자원이 새로 다운로드된다.

      현재는 HTTP 지속 연결(Persistent Connections)로 문제 해결

HTTP 지속 연결(Persistent Connections)

HTTP 초기의 비지속 연결

현재의 지속 연결

  • 클라이언트가 자원을 요청할 때 이와 묶인 자원을 연결이 지속된 상태로 계속해서 요청한다.
  • 연결 횟수가 줄기 때문에 서버를 효율적으로 사용할 수 있다.
  • 서버의 TIMEOUT이 존재하기 때문에 TIMEOUT이 지나면 연결 종료

💡 HTTP 메시지

HTTP 메시지 구조

시작 라인

  • HTTP 메서드

    HTTP 메서드 : 서버가 수행해야 할 동작 지정(GET, POST, ...)

  • 요청 대상

    경로와 쿼리 파라미터를 함께 전달

  • HTTP 버전

응답 메시지

  • HTTP 버전
  • HTTP 상태 코드

    요청에 대한 성공, 실패 여부를 알려준다.

HTTP 헤더

  • HTTP 전송에 필요한 부가 정보 전달
    ex. 메시지 바디의 내용, 크기, ...

HTTP 메시지 바디

  • 실제 전송하고자 하는 데이터
  • byte로 표현할 수 있는 모든 데이터 전송 가능
    ex. HTML, 이미지, 영상, JSON
profile
Backend-Developer

0개의 댓글