티스토리 뷰

CS/Network

HTTP 원리와 지속 비지속 연결

bool-flower 2022. 7. 7. 00:46

웹 서비스 모델


웹 브라우저와 웹 서버

HTTP는 TCP 연결을 설정하고 이 연결을 사용해서 HTTP 메시지를 교환한다.

웹 서버(Web Server)

  • 웹 페이지들의 저장소와 요청 처리 소프트웨어

웹 페이지

  • 기본 객체(base object)참조 객체(object)들로 구성
  • 기본 객체 : HTML file, 페이지 내의 다른 객체를 URL로 참조
  • 참조 객체 : HTML file, JPEG image 등등

웹 객체 주소 : URL(Uniform Resource Locator)

URL은 두 부분으로 구성된다.

  • host name : 웹 서버 호스트의 이름 및 도메인 이름
  • path name : 내가 지정하고자 하는 웹페이지 파일의 경로

즉, URL은 host name과 path name이 결합된 형태이다.

웹 브라우저

  • 웹 서비스 사용자 인터페이스
  • 웹 페이지 요청 및 응답 페이지 디스플레이

HTTP(Hyper Text Transfer Protocol)

클라이언트인 웹 브라우저와 웹 서버 간의 정보를 교환하는 규칙을 정의한 프로토콜

TCP Connection

웹 요청 정보와 응답 정보의 신뢰 전송 통로

HTTP 원리


HTTP 요청(request)과 응답(response)

웹 객체 각각에 대한 요청과 응답 메시지

HTTP Request

  • 웹 사용자의 요청으로 웹 브라우저에 의해 생성되는 메시지
  • 웹 서버의 웹 객체 URL과 해당 웹 객체 처리 방식 정보 제공
  • 하위 계층의 TCP 연결을 통해 웹 서버에게 전송

HTTP Response

  • 웹 브라우저의 요청으로 웹 서버에 의해 생성되는 메시지
  • 수신한 URL에 해당되는 웹 객체와 웹 객체 속성 정보 제공
  • 하위 계층의 TCP 연결을 통해 웹 서버에게 전송

비상태형 프로토콜(stateless protocol)

  • HTTP request 메시지와 HTTP response 메시지 간의 관계 정보가 웹 서버에 저장되지 않음
  • 서버는 수신되는 HTTP request 메시지 간의 관계 추론 불가
  • 웹 브라우저-웹 서버 간의 통신 상태 정보를 유지하지 않음(stateless protocol)

HTTP와 TCP 연결


TCP 연결과 HTTP 요청

  • 3-way handshaking

  1. 클라이언트에서 SYN라는 TCP 연결 요청 메시지를 서버에게 보낸다.
  2. 서버는 SYN, ACK 메시지를 보내는 것으로 응답한다.
  3. 클라이언트는 연결되었다는 판단 근거로 ACK 메시지를 서버로 보낸다.

요청을 보내고 응답을 받기까지의 시간을 왕복 지연 시간(Round Trip Time : RTT)이라 한다. 

비지속(non-persistent) 연결 HTTP


TCP 연결 설정 한 뒤, 그 이후에도 해당 연결을 지속할 것인지 말 것인지에 따라 지속, 비지속으로 나뉜다.

비지속 연결 HTTP

  • 웹 객체를 위한 HTTP request와 HTTP response 메시지 쌍마다 별도의 TCP 연결 설정
  • 10개의 객체로 구성된 웹페이지 전송을 위해 10개의 TCP 연결 설정
  • 다중 연결(multiple connections) 설정으로 병렬 전송 가능
  • 서버 자원 관리 차원에서 클라이언트별 병렬연결 수 제한(5~10)

비지속 HTTP와 지연시간

  • 객체별 지연시간 : 2RTT + 객체 파일 전송 시간

지속(persistent) 연결 HTTP


지속 연결 HTTP

  • 동일 서버의 다수 웹 객체가 하나의 TCP 연결을 통해 클라이언트에게 전송하도록 TCP 연결 유지
  • 일정 시간 동안 사용하지 않으면 TCP 연결 해제
  • TCP 연결 지연시간 절약, 사용하지 않는 시간 동안 자원(소켓 자료구조) 낭비
  • 다수의 객체를 한꺼번에 요청하고 응답하는 파이프라이닝(pipelining) 적용

비지속 연결 HTTP 파이프 라인

지속 비지속 연결 장단점 비교


지속 연결 HTTP

  • TCP 연결 지연시간 회피
  • 파이프라이닝 지원 가능
  • 사용하지 않는 시간 동안 TCP 연결 자원 낭비

비지속 연결 HTTP

  • 필요할 때만 TCP 연결 - 자원(소켓 자료구조) 낭비 회피
  • 병렬 TCP 연결 지원 가능 - 제한적
  • TCP 연결 지연시간 발생

하이브리드 HTTP 가능

'CS > Network' 카테고리의 다른 글

HTTP 쿠키, 캐시  (0) 2022.08.25
HTTP 상태코드  (0) 2022.07.15
인터넷과 프로토콜  (0) 2022.06.16
SOP와 CORS  (0) 2022.06.13
이메일과 SMTP  (0) 2022.06.04
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday