[HTTP] HTTP 기본

gayoung·2022년 4월 3일
0

스프링 완전 정복

목록 보기
26/33

1. HTTP 기본

1-1. HTTP 알아보기

  • HyperText Transfer Protocol
  • HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML (API) 등 거의 모든 형태의 데이터 전송 가능
  • 기반 프로토콜
    • TCP: HTTP/1.1(2, 3도 증가)
    • UDP: HTTP/3

1-2. HTTP 특징

[ 클라이언트 서버 구조 ]

  • 기본적으로 클라이언트가 request를 보내면, 서버가 응답할 때까지 기다렸다가 클라이언트가 그 응답을 받고 동작함
  • 서버가 요청에 대한 결과를 만들어서 응답
  • 비즈니스 로직이랑 데이터는 서버에서 맡고, 클라이언트는 ui, 사용성에 집중 -> 독립적인 진행 가능

[ 무상태 프로토콜(스테이스리스) ]

  • 서버가 클라이언트의 상태를 보존X
  • 장점: 서버 확장성 높음(스케일 아웃)
  • 단점: 클라이언트가 추가 데이터 전송

[ 비연결성 ]

  • 연결 유지O
    • 서버는 연결을 계속 유지해서 서버 자원 소모 큼
  • 연결 유지X
    • 자원의 가용성 높임
    • 서버 자원을 매우 효율적으로 사용할 수 있음
    • 한계: 검색하고나면 TCP/IP 연결을 중단하므로 다시 검색할 때는 새롭게 연결해야함 -> 3 way handshake 시간 추가
      • HTTP 지속연결을 할 때 더 유리한 경우도 있음

[ HTTP 메시지 ]

  1. 시작라인
    • 클라이언트: HTTP 메서드(get, post)/요청대상(절대경로_"/"로 시작하는 경로) + HTTP Version
    • 서버: HTTP 버전 + HTTP 상태 코드(200, 300 등) + 문구
  2. 헤더
    • 클라이언트: Host
    • 서버: HTTP 전송에 필요한 모든 부가정보(Content-Type 등)
  3. 메시지 바디
    • 클라이언트, 서버: 실제 전송할 데이터
    • HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능

[ 단순함, 확장 가능 ]

  • HTTP 메시지도 매우 단순

0개의 댓글