안녕하세요!

FE 개발자 유진주입니다.

CS/네트워크

[컴퓨터네트워크] Chapter2.2 웹과 HTTP(1): 동작원리와 지속 비지속 연결

ypearl 2023. 10. 24. 00:49
 

Chapter2.2 웹과 HTTP(1): 동작원리와 지속 비지속 연결

  • 웹 서비스 모델
  • HTTP 원리
  • 비지속(non-persistent) 연결 HTTP
  • 지속(persistent) 연결 HTTP

 

웹 서비스 모델

- 웹 브라우저와 웹 서버

* HTTP(Hyper Text Transfer Protocol)

: 클라이언트 웹 브라우저와 웹 서버 간에 정보를 교환하는 중요한 프로토콜

 

  • 웹 서버(Web server)
    : 웹 페이지(Web page)들의 저장소요청 처리 소프트웨어
  • 웹 페이지
    - 기본 객체(base object)참조 객체(object)들로 구성
    - 기본 객체: HTML file, 페이지 내의 다른 객체를 URL(하이퍼링크, hyperlink)로 참조
    - 참조 객체: HTML file, JPEG image, Java applet, audio file, vidieo file, ...,
                       서로 다른 서버에 존재 가능(같은 서버에 존재할 수도, 다른 서버에 존재할 수도!)
  • 웹 객체 주소: URL (Unifrom Resource Locator)
    - host name: 웹서버가 탑재된 컴퓨터의 도메인 주소
    - path name: 그 웹 서버 내에 내가 지정하고자 하는 웹페이지 파일의 경로 정보(/이후)
  • 웹 브라우저
    - 웹 서비스 사용자 인터페이스
    - 웹 페이지 요청 및 응답 페이지 디스플레이
  • HTTP(Hyper Text Transfer Protocol)
    - 웹 브라우저와 웹 서버 간의 요청 정보응답 정보 교환 규칙 정의
  • TCP Connection
    - 웹 요청 정보와 응답 정보의 신뢰 전송 통로
    *HTTP를 통해 교환되는 메시지들은 TCP 커넥션을 통해 신뢰 전송방식으로(오류없이) 교환된다.

 

HTTP 원리

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

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

  •  HTTP Request
    - 웹 사용자의 요청(URL 입력 또는 하이퍼링크 클릭)으로, 웹 브라우저에 의해 생성되는 메시지
    - 웹 서버의 웹 객체 URL과 해당 웹 객체 처리 방식 정보 제공
    - 하위 계층의 TCP 연결을 통해 웹 서버에게 전송
  • HTTP response
    - 웹 브라우저의 요청으로 웹 서버에 의해 생성되는 메시지
    - 수신한 URL에 해당되는 웹 객체웹 객체 속성(attribute) 정보 제공
    - 하위 계층의 TCP 연결을 통해 웹 서버에게 전송

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

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

*Why?

HTTP request 메시지가 웹 브라우저로부터 웹 서버에 전송이 되면,

거기에 대응되는 HTTP response 메시지에 대한 정보를 웹 서버에 유지하지 않음.

그래서 서버는 반복해서 http request가 오더라도, 어떤 http의 request인지 알 수 없음.(추론 불가)

=> HTTP 웹 서버는 기본적으로 request 메세지를 하나하나 전부 다 독립적으로,

스스로 그 상관관계를 추론할 수 없도록 처리한다. (stateless protocol)

 

HTTP와 TCP 연결

- TCP 연결과 HTTP 요청

*SYN: TCP 연결요청 메시지

*SYN 요청 메세지->그에 대한 응답 메세지

->(내가 요청한 tcp 연결이 되었음을 확인) -> 그 판단근거를 서버에 알림.

*3-way Handshaking

1) TCP 요청 메세지(SYN) 보냄

2) 응답 메세지 받음    //(1)+(2) = 왕복지연시간(RTT)

3) HTTP 요청

 

*위의 과정을 통해 설정한 TCP를 계속 지속적으로 사용할 것인지,

혹은 객체 하나 다운 후에는 TCP 연결을 해제하고 그 다음에 다시 TCP를 설정할 것인지

를 결정해야 함! (지속적/비지속적 연결 HTTP의 개념)

 

비지속(non-persistent) 연결 HTTP

- 비지속 연결 HTTP

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

- 비지속 HTTP와 지연시간

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

*만약, 순차적으로 전송된다면

위의 객체별 지연시간에 N을 곱해 계산한다.

 

지속(persistent) 연결 HTTP

- 지속 연결 HTTP

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

 

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

- 지속 연결 HTTP

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

- 비지속 연결 HTTP

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

- 하이브리드 HTTP 가능