비지속연결과 지속연결

Stormi·2022년 5월 25일
0

네트워크

목록 보기
16/37

비지속 연결

  • 각 요구/응답 쌍이 분리된 TCP 연결을 통해 보내져야한다.

지속 연결

  • 모든 요구와 해당하는 응답들이 같은 TCP 연결상으로 보내져야한다.

우선 둘다 메시지가 포트로 들어가기전에 TCP 연결부터 해야한다.

비지속 연결

  • 1개의 HTML과 10개의 객체를 보낼때, 11개의 TCP 연결이 만들어진다.

  • 작은 패킷이 클라이언트로 부터 서버까지 가고, 다시 클라이언트로 되돌아오는데 걸리는 시간인 RTT(round-trip time)을 정의한다. RTT는 패킷 전파지연, 중간 라우터와 스위치에서의 패킷 큐잉지연, 패킷 처러 지연등을 포함한다

    전송지연이 없는데 L/R 이 전송지연인데, 작은 패킷이라고 했으니 패킷의 크기인 L이 0에 가까우므로 전송지연은 없다.
  • 총 응답시간은 2RTT와 HTML 파일을 서버가 전송하는 데 걸리는 시간을 더한 것이다.
    (hello(from 클라이언트 to 서버)---------->hello(from 서버 to 클라이언트)) : 1RTT
    (request(from 클라이언트 to 서버)--------->response(from 서버 to 클라이언트)) : 1RTT
    (HTML 파일 전송시간) : HTML 파일을 서버가 전송하는 데 걸리는 시간

    = 2RTT + HTML 파일을 서버가 전송하는 데 걸리는 시간

  • 연결 수행 과정

  1. HTTP 클라이언트는 HTTP의 기본 포트 번호 80을 통해 www.naver.com 서버로 TCP 연결을 시도한다. TCP 연결과 관련하여 클라이언트와 서버에 각각 소켓이 있게 된다.
  2. HTTP 클라이언트는 1단계에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다. 이 요청 메시지는 /sth 경로이름을 포함한다.
  3. HTTP 서버는 1단계에서 설정된 연결 소켓을 통해서 요청 메시지를 받는다. 저장장치로 부터 /sth 객체를 추출한다. HTTP 응답 메시지에 그 객체를 캡슐화한다. 그리고 응답 메시지를 소켓을 통해 클라이언트로 보낸다.
  4. HTTP 서버는 TCP에게 TCP 연결을 끊으라고한다.(그러나 실제로 TCP 클라이언트가 응답 메시지를 올바로 받을 때까지 연결을 끊지 않는다.)
  5. HTTP 클라이언트가 응답메시지를 받으면, TCP 연결이 중단된다. 메시지는 캡슐화된 객체가 HTML 파일인 것을 나타낸다. 클라이언트는 응답 메시지로부터 파일을 추출하고 HTML 파일을 조사하고 10개의 객체에 대한 참조를 찾는다 .
  6. 그 이후에 참조되는 각 객체에 대하여 처음 네단계를 반복한다.

지속 연결

  • 비지속 연결의 단점
  1. 요청 객체에 대한 새로운 연결이 설정되고 유지되어야한다. (11개의 TCP가 연결되어야하는 점)
  2. TCP 버퍼가 할당되어야하고 TCP 변수들이 클라이언트와 서버 양쪽에 유지되어야한다.
    -> 수많은 다른 클라이언트들의 요청을 동시에 서비스하는 웹서버에게 부담이 된다.
  • HTTP 지속 연결에서 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지한다. 같은 클라이언트와 서버간의 이후 요청과 응답은 같은 연결을 통해 보내진다. 특히, 전체 웹 페이지를 하나의 TCP 연결을 통해 보낼 수 있다. 같은 서버에 있는 여러 웹 페이지들을 하나의 지속 TCP 연결을 통해 보낼 수 있다. 일반적으로 HTTP 서버는 일정기간 사용되지 않으면 연결을 닫는다. 서버가 연속된 요구를 수신할 때, 서버는 객체를 연속해서 보낸다. HTTP의 디폴트 모드는 파이프라이닝을 이용한 지속 연결을 사용한다.

0개의 댓글