Network - HTTP Connectionless

iseon_u·2022년 5월 21일
0

Network

목록 보기
9/31
post-thumbnail

HTTP Connectionless 비 연결성


연결을 유지하는 모델

  1. TCP/IP 연결
  2. 요청
  3. 응답
  • 서버는 연결을 계속 유지
  • 서버 자원 소모

연결을 유지하지 않는 모델

  1. TCP/IP 연결
  2. 요청
  3. 응답
  4. TCP/IP 연결 종료
  • 서버는 연결 유지 ❌
  • 최소한의 자원 유지

비 연결성

  • HTTP 는 기본이 연결을 유지하지 않는 모델
  • 일반적으로 초 단위 이하의 빠른 속도로 응답
  • 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 매우 적음
    • 예) 웹 브라우저에서 연속해서 검색 버튼을 누르지는 않는다.
  • 서버 자원을 매우 효율적으로 사용할 수 있다.

비 연결성의 한계

  • TCP/IP 연결을 새로 맺어야 한다. - 3 way handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지 등 수많은 자원들이 함께 다운로드
  • 지금은 HTTP 지속 연결 (Persistent Connections) 로 문제 해결
  • HTTP/2, HTTP/3 에서 더 많은 최적화

HTTP 초기 - 연결, 종료 낭비

클라이언트 ↔ 서버

  1. 연결 (0.1 초)
  2. 요청 / HTML 응답 (0.1 초)
  3. 종료 (0.1 초)
  1. 연결 (0.1 초)
  2. 요청 / 자바스크립트 응답 (0.1 초)
  3. 종료 (0.1 초)
  1. 연결 (0.1 초)
  2. 요청 / 이미지 응답 (0.1 초)
  3. 종료 (0.1 초)
  • 총 합 : 0.9 초

HTTP 지속 연결 (Persistent Connections)

클라이언트 ↔ 서버

  1. 연결 (0.1 초)
  2. 요청 / HTML 응답 (0.1 초)
  3. 요청 / 자바스크립트 응답 (0.1 초)
  4. 요청 / 이미지 응답 (0.1 초)
  5. 종료 (0.1 초)
  • 총 합 : 0.5 초

스테이스리스를 기억하자

서버 개발자들이 어려워하는 업무

  • 정말 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
  • 예) 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록 → 수만명 동시 요청
profile
🧑🏻‍💻 Hello World!

0개의 댓글