[TIL]230307 - HTTP(#01)

insightp25·2023년 3월 8일

Internet Network

IP(internet protocol)

주요 역할

  • 지정한 주소 전달(ip address)
  • 통산 단위: packet(출발지 ip, 목적지 ip 등 포함. package + bucket의 준말.)

한계

  • 비연결성: 대상 서버가 패킷 수신 가능여부를 판단하지 못한다(무작정 보내게 된다)
  • 비신뢰성: 통신 과정에서 패킷의 순서나 내용이 변질되어도 알 수 없다
  • 프로그램 구분: 같은 ip를 사용하는 서버에서 어떤 애플리케이션에 패킷을 전달하는 것이 맞는지 판단할 수 없다.



TCP, UDP

TCP(transmission control protocol)

주요 역할

  • port 정보 전달
  • IP의 역할 보완(비연결성, 비신뢰성, 프로그램 구분 문제 모두 해결)
    - 연결 지향: 3 way handshake
    • 데이터 정합성 보장
    • 데이터 전달 순서 보장(전송 순서가 다르면 다른 순서 시작위치부터 재전송), 설정 개별 최적화 가능

한계

  • 확인 과정들로 인해 느린 속도


UDP(user datagram protocol)

주요 역할

  • port 정보 전달, 간단한 checksum(기능이 거의 없다)
  • 상대적 빠른 전송 속도
  • 필요시 애플리케이션에서 추가 작업 가능
  • (최근 http3에서 3 way handshake를 없애고 udp를 활용하는 방안을 시도중이며 각광받고 있다)

한계

  • 데이터의 정합성을 보장하지 않는다(IP와 거의 비슷한 만큼 비연결성, 비신뢰성 문제가 있다)



HTTP

HTTP의 주요 발전과정

  • HTTP/0.9(1991): 헤더가 없으며 GET 메서드만 지원
  • HTTP/1.1(1997): 가장 많이 사용, 현재 HTTP 통신의 가장 기본이 되는 버전
  • HTTP/2(2015): 성능 개선
  • HTTP/3(~진행중): TCP 대신 UDP 사용, 성능 개선



HTTP 특징

  • client-server 구조(request-response)
  • 무상태(stateless)성, 비연결(connectionless)성에 기인하는 효율성, 확장성: scale-out, scale-in의 핵심은 무상태성이다.
    - client 측에서 추가 데이터를 계속 전송해야 하고, 매번 3 way handshake로 연결을 해야하는 비효율성이 있었으나, HTTP persistent connection이라는 방법을 통해 개선되었다.
  • HTTP 메시지로 모든 종류의 데이터 전송 가능
  • 실무에서는 무상태를 최대한, 상태유지(stateful)를 최소한으로 지향한다.
profile
backend, data-streaming, AI

0개의 댓글