Today
-
Yesterday
-
Total
-
  • 다운로드 속도가 점진적으로 증가하는 이유
    Soliloquy 2017. 11. 12. 15:04



    인터넷이 보급화된 현재, 휴대폰이든, 컴퓨터든 다운로드는 빠질 수가 없지요. 파일을 다운로드 받을 때 생각보다 느린 속도에서 점차적으로 빨라지는 경우가 많습니다. 이 경우에는 왜 처음부터 빠른 속도로 받지 않는 것일까요?


    파일 다운로드는 어떻게 이루어 지나...

    크롬, 엣지, 파이어폭스 등 웹 브라우저를 통한 다운로드는 거의 TCP 라는 형식으로 이루어 집니다. 여기서 TCP 라는 형식의 가장 큰 특징 중 하나는 아래와 같습니다.


     

    TCP를 통한 대화

     
     


     
     
     상대

    이거 받으면 말해

     
     
        ㅇㅇㅇ 나
     상대

    파일전체 중 10KB 부분 전송

       
       

    파일전체 중 10KB 부분 받음 (이번에 10KB 받음)

     나
     상대

    파일전체 중 20KB 부분 전송 (더 보내야지)

       
       

    파일전체 중 10KB 부분 받음

     나
       

    파일전체 중 10KB 부분 받음 (이번에 20KB 받음)

    나 
         
     

     .......................

      ....................... 
     상대

     파일전체 중 1MB 부분 전송

       
     


     

    파일 1 중 10KB 부분 받음....

       

    파일 1 중 10KB 부분 받음...

       

    파일 1 중 10KB 부분 받음...

    나 
        ... 


    (실제로 완벽하게 위 처럼 내용이 주고가는 것은 아닙니다.)


    상대가 파일을 나에게 전송 했을 때 나는 일정 부분만큼 계속 받았다고 알려주는 상대방과의 전송 확인 과정을 거치면서 파일다운로드가 진행 됩니다. 여기서 상대방이 내가 더 많은 양을 받아도 이상이 없다고 판단 할 경우 파일의 일부분을 더 많이 받을 수 있게 되고, 다운로드 속도는 이에 따라서 증가합니다.


    문제의 발생

    속도가 증가하면 할 수록 대화가 점점 더 많아진다고 생각하면 되는데, 사람처럼 컴퓨터도 대화간에 문제가 생길 수 있습니다. 만약, 회선 상태가 별로 좋지 못하거나 장치의 성능이 제한 된다면 아래와 같은 일들이 일어날 수도 있습니다.



     

    TCP를 통한 대화

     
     


     
     
     상대

    이거 받으면 말해

     
     
        ㅇㅇㅇ 나
     상대

     파일전체 중 60KB 부분 전송

       
       

    파일전체 중 60KB 부분 받음

     나
     상대

    파일전체 중 1800KB 부분 전송

       
       

    파일전체 중 60KB 부분 받음

    나 

       

     (손실된 경우 or 성능이 안좋아서 처리를 못함)

    나 
     상대

    (왜 반응이 없냐... 1800KB 받았다고 말을 안하지?)

       
     상대

    (다시 보내 봐야겠다)

      
     상대

    파일전체 중 1800KB 부분 전송 

       
       

    파일전체 중 60KB 부분 받음

     

     .......................

      ....................... 


    만약 상대방이 전체파일 중 10KB 가 아닌 60KB, 1800KB 씩 보냈다고 생각할 때, 자신 쪽에서, 그 만큼 다 못받았다면, 받는 사람은 다운로드 시간이 길어지는 것은 기본이고, 보내는 쪽은 1800KB를 다시 보내야 하기에 그만큼 회선 사용량도 높아지고,한명이 아니라 여러명이라면 보내는 사람 입장에서는 배로 해야할 일이 많아지겠지요. 특히 천 명만 되더라도, 위와 같은 일이 천배로 많아지니. 일 적으로 보면 보낸것에 비해 데이터 손실이 필요 이상으로 발생하여서 비효율적 이기도 하고요.

    문제에 대한 대안책 TCP Slow Start

    처음부터 회선 상태를 완전히 알고, 공식으로 최적의 속도를 알 수 있다면, 정말 좋겠지만, 현실은 그렇지 못하지요. 위와 같은 현상을 줄이기 위한 방안으로 TCP Slow Start 라는 개념이 만들어 졌습니다. Slow Start란 말 그대로, 처음에는 일부러 속도를 낮춰서 보내서 속도를 다운로드가 가장 원할한 정도 까지 천천히 올리는 것이지요. 


     

    TCP를 통한 대화

     
        
     상대

     파일전체 중 10KB 부분

       
       

    파일전체 중 10KB 부분 받음

     나
     상대

    파일전체 중 20KB 부분(더 보내야지)

       
       파일전체 중 10KB 부분 받음

    나 

       

    파일전체 중 10KB 부분 받음

     
     상대

    파일전체 중 40KB 부분(더 보내야지)

       
       

     파일전체 중 10KB 부분 받음

     나
       

     파일전체 중 10KB 부분 받음

     나
       ( ...) 나
        (...)나 
     상대

    (40KB 보냈는데 20KB 밖에? )

       
        

     상대

    20KB 부분 전송 (앞으로 20KB 씩 해야겠다...)




        파일전체 중 10KB 부분 받음 나
        파일전체 중 10KB 부분 받음 나
     상대

    파일전체 중 20KB 부분

       
       

     파일전체 중 10KB 부분 받음

     나
       

     파일전체 중 10KB 부분 받음

     나
      ...  ... 


    위 방법을 사용한다면 전송하기에 가장 효율 적인 속도 까지만 올라가기에, 손실도 덜 되고, 회선 사용량도 줄어들겠지요.


    요약

    다운로드 속도가 점진적으로 증가하는 이유는 점진적인 증가가 급진적인 증가보다 안정성, 효율적인 이점이 많기 때문이다.


    참고: 

    Quora - Why does download speed ramp up slowly and doesn't immediately jump to the highest speed 



    [본문에 사용된 SVG 파일]

    download icon.svg




    댓글

어제는 이곳에 명이 다녀갔습니다.

Powered & Designed by Tistory