HTTP

lsjoon·2022년 12월 24일

Network

목록 보기
1/8

HTTP : HyperText Transfer Protocol


웹 클라이언트가 웹 서버와 통신하는 방법을 정의한 요청-응답(Request-Response) 프로토콜
= OST 7계층 중 Application(L7)에 해당

하이퍼텍스트 링크를 사용해 웹페이지를 로드
웹 클라이언트와 웹 서버간의 통신 외에 다른 목적으로도 사용 가능

클라이언트 (Client)
- 웹 브라우저 등 서버로 요청을 보내는 대상
서버 (Server)
- 요청에 응답하여 데이터를 반환하는 대상

  • 서버는 클라이언트가 요청을 보내기 전까지 대응하지 않으며, 서버와 클라이언트 사이에는 무수히 많은 요소가 존재 ( 서버 : 클라이언트 = 1 : N 관계 )
    👉 HTTP는 이런 존재들 사이의 통신 방법을 규정
  • 일반적으로 전송 계층 프로토콜(L4)로 TCP 사용, 네트워크 계층 프로토콜(L3) 로 IP 사용 (= TCP/IP )
  • TCP에서 IP Address 를 사용해 통신할 컴퓨터를 결정
  • IP 에서 포트 번호를 사용해 통신할 프로세스(서비스)를 결정
    👉 HTTP - 80번 포트 / HTTPS - 443번 포트

HTTPS 사용 이유

- HTTP 통신 시, 패스워스 등 주요 정보가 암호화 처리 되지 않아 평문 노출의 가능성이 높음
- public 서비스를 제공하는 웹페이지는 HTTPS 프로토콜을 사용하여 주요 정보를 암호화 처리


특징


  • 비연결성 프로토콜 (Connectionless)
    - 클라이언트가 요청하면 서버는 응답후 연결(Connection)을 끊음 (대부분의 요청은 서로 관련없이, 독립적임)
    - 서버에선 연결을 유지할 필요가 있을 때만 유지하는 것이 비용적인 측면에서 유리함 (HTTP/1.1 에서 연결을 유지하는 기능 추가)

  • 무상태성 (Stateless)
    - 클라이언트와 서버의 통신이 끝나면, 상태 정보는 유지되지 않음
    - 서버가 클라이언트에 대한 인증 작업을 계속 요구하게되면, 클라이언트 입장에서 번거로움

  • 쿠키(Cookie)와 세션(Session)
    - 비연결성으로 인해 비롯되는 무상태성의 단점을 보완
    - Stateful할 필요가 있을 때 사용

    쿠키 : 상태 정보를 클라이언트에 저장
    세션 : 상태 정보를 서버에 저장


HTTP 역사


HTTP/0.9 (1991)
- 문서화된 최초의 HTTP

HTTP/1.0 (1996)
- 첫 상용화 버전, HTTP 파일 전송 가능

HTTP/1.1 (1997)
- 연결 유지, 호스트 헤더(하나의 IP로 여러 개의 DNS), 인증 절차 강화
-

HTTP/2.0 (2015)
- 사진, 동영상, JSON 파일 전송 가능
- HyperText, 즉 텍스트 형식을 전송하던 기존 방식에서 바이너리 형식으로 변환 (인코딩)하여 전송

HTTP/3.0 (2022.06.06)
- TCP/IP로 통신하던 이전 버전과 달리, UDP 기반의 QUIC 프로토콜을 사용하여 통신

UDP (User Data Protocol)
- TCP보다 속도가 빠르고, 용량이 가벼움 / But, 데이터 신뢰성을 보장하지 않음
= 유튜브, 넷플릭스 등 미디어 서비스에서 주로 사용


참고자료 : 쿠키 & 세션

profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글