Network - HTTP Connectionless
HTTP Connectionless 비 연결성
연결을 유지하는 모델
- TCP/IP 연결
- 요청
- 응답
연결을 유지하지 않는 모델
- TCP/IP 연결
- 요청
- 응답
- TCP/IP 연결 종료
비 연결성
- HTTP 는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 매우 적음
- 예) 웹 브라우저에서 연속해서 검색 버튼을 누르지는 않는다.
- 서버 자원을 매우 효율적으로 사용할 수 있다.
비 연결성의 한계
- TCP/IP 연결을 새로 맺어야 한다. - 3 way handshake 시간 추가
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지 등 수많은 자원들이 함께 다운로드
- 지금은 HTTP 지속 연결 (Persistent Connections) 로 문제 해결
- HTTP/2, HTTP/3 에서 더 많은 최적화
HTTP 초기 - 연결, 종료 낭비
클라이언트 ↔ 서버
- 연결 (0.1 초)
- 요청 / HTML 응답 (0.1 초)
- 종료 (0.1 초)
- 연결 (0.1 초)
- 요청 / 자바스크립트 응답 (0.1 초)
- 종료 (0.1 초)
- 연결 (0.1 초)
- 요청 / 이미지 응답 (0.1 초)
- 종료 (0.1 초)
HTTP 지속 연결 (Persistent Connections)
클라이언트 ↔ 서버
- 연결 (0.1 초)
- 요청 / HTML 응답 (0.1 초)
- 요청 / 자바스크립트 응답 (0.1 초)
- 요청 / 이미지 응답 (0.1 초)
- 종료 (0.1 초)
스테이스리스를 기억하자
서버 개발자들이 어려워하는 업무
- 정말 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
- 예) 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록 → 수만명 동시 요청