본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로서, 캐시서버가 컨텐츠 데이터를 일정크기의 조각으로 분할하여 해당 크기의 구분영역에 저장하고, 실시간으로 데이터 패킷에 포함되는 조각의 개수를 결정하여 해당 개수만큼씩 순차적으로 메모리로 불러들여 클라이언트로 전송할 수 있는 캐시서버를 이용한 컨텐츠 전송시스템 및 방법, 그 캐시서버를 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 캐시서버를 이용한 컨텐츠 전송방법은, 캐시서버가 컨텐츠서버로부터 컨텐츠 데이터를 수신하고 일정크기의 조각으로 분할하여 상기 일정크기로 구분된 데이터 조각 저장소의 각 구분영역에 저장하는 저장단계, 상기 캐시서버가 클라이언트로부터 상기 컨텐츠 데이터에 대한 요청을 수신하면 하나의 데이터 패킷에 포함할 조각의 개수를 결정하는 결정단계, 및 상기 캐시서버가 상기 저장된 조각을 순차적으로 상기 데이터 조각 저장소의 각 구분영역으로부터 메모리로 불러들임과 동시에 상기 결정한 조각의 개수씩 데이터 패킷의 페이로드에 상기 불러들인 조각을 포함하여 상기 클라이언트로 전송하는 전송단계를 포함한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 저장단계는, 상기 분할한 조각을 저장하는 각 구분영역의 시작주소 정보를 상기 메모리에 저장하는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 전송단계는, 상기 각 구분영역의 시작주소 정보를 참조하여 상기 저장된 조각을 상기 메모리로 불러들이는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 일정크기는, 최대전송단위를 특정 정수로 나눈 크기인 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 결정단계는, 네트워크 트래픽을 고려하여 상기 조각의 개수를 결정하는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 결정단계는, 상기 조각의 개수와 상기 일정크기를 곱한 값이 최대전송단위를 초과하지 않도록 상기 조각의 개수를 결정하는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 전송단계는, 상기 전송과 동시에 상기 전송한 조각에 대한 전송횟수를 계수하는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 전송단계는, 상기 계수한 결과 전송횟수가 임계치를 초과하는 조각을 제외한 나머지 조각을 상기 메모리에서 삭제하는 것을 특징으로 한다.
본 발명의 캐시서버를 이용한 컨텐츠 전송방법에 있어서, 상기 캐시서버는, 상기 나머지 조각을 상기 메모리에서 삭제한 후 임의의 클라이언트로부터 상기 컨텐츠 데이터에 대한 요청을 수신하면 하나의 데이터 패킷에 포함할 조각의 개수를 다시 결정하고, 상기 나머지 조각을 순차적으로 상기 데이터 조각 저장소의 각 구 분영역으로부터 상기 메모리로 불러들임과 동시에, 상기 다시 결정한 조각의 개수씩 데이터 패킷의 페이로드에 상기 전송횟수가 임계치를 초과하는 조각 및 상기 불러들인 나머지 조각을 포함하여 상기 임의의 클라이언트로 전송하는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명의 캐시서버를 이용한 컨텐츠 전송시스템은, 컨텐츠를 제공하는 컨텐츠서버, 및 상기 컨텐츠서버로부터 컨텐츠 데이터를 수신하면 일정크기의 조각으로 분할하여 상기 일정크기로 구분된 데이터 조각 저장소의 각 구분영역에 저장하고, 클라이언트로부터 상기 컨텐츠 데이터에 대한 요청을 수신하면 하나의 데이터 패킷에 포함할 조각의 개수를 결정하며, 상기 저장한 조각을 순차적으로 상기 데이터 조각 저장소의 각 구분영역으로부터 메모리로 불러들임과 동시에 상기 결정한 조각의 개수씩 데이터 패킷의 페이로드에 상기 불러들인 조각을 포함하여 상기 클라이언트로 전송하는 캐시서버를 포함한다.
상기와 같은 목적을 달성하기 위한 본 발명의 캐시서버는, 데이터 송수신을 위한 입출력부, 일정크기의 컨텐츠 데이터 조각을 상기 일정크기로 구분된 구분영역에 저장하는 데이터 조각 저장소, 및 상기 입출력부를 통해 컨텐츠 데이터를 수신하면 상기 일정크기의 조각으로 분할하여 상기 데이터 조각 저장소의 각 구분영역에 저장하고, 상기 입출력부를 통해 클라이언트로부터 상기 컨텐츠 데이터에 대한 요청을 수신하면 하나의 데이터 패킷에 포함할 조각의 개수를 결정하며, 상기 저장한 조각을 순차적으로 상기 데이터 조각 저장소의 각 구분영역으로부터 메모리로 불러들임과 동시에 상기 결정한 조각의 개수씩 데이터 패킷의 페이로드에 상기 불러들인 조각을 포함하여 상기 입출력부를 통해 상기 클라이언트로 전송하는 제어모듈을 포함한다.
본 발명의 캐시서버에 있어서, 상기 제어모듈은, 상기 분할한 조각을 저장하는 각 구분영역의 시작주소 정보를 상기 메모리에 저장하는 것을 특징으로 한다.
본 발명의 캐시서버에 있어서, 상기 제어모듈은, 상기 각 구분영역의 시작주소 정보를 참조하여 상기 저장된 조각을 상기 메모리로 불러들이는 것을 특징으로 한다.
본 발명의 캐시서버에 있어서, 상기 제어모듈은, 상기 전송과 동시에 상기 전송한 조각에 대한 전송횟수를 계수하는 것을 특징으로 한다.
본 발명의 캐시서버에 있어서, 상기 제어모듈은, 상기 계수한 결과 전송횟수가 임계치를 초과하는 조각을 제외한 나머지 조각을 상기 메모리에서 삭제하는 것을 특징으로 한다.
본 발명의 캐시서버에 있어서, 상기 제어모듈은, 상기 나머지 조각을 상기 메모리에서 삭제한 후 상기 입출력부를 통해 임의의 클라이언트로부터 상기 컨텐츠 데이터에 대한 요청을 수신하면 하나의 데이터 패킷에 포함할 조각의 개수를 다시 결정하고, 상기 나머지 조각을 순차적으로 상기 데이터 조각 저장소의 각 구분영역으로부터 상기 메모리로 불러들임과 동시에 상기 다시 결정한 조각의 개수씩 데이터 패킷의 페이로드에 상기 전송횟수가 임계치를 초과하는 조각 및 상기 불러들인 나머지 조각을 포함하여 상기 입출력부를 통해 상기 임의의 클라이언트로 전송하는 것을 특징으로 한다.
본 발명에 의하면, 캐시서버가 데이터 저장소에 저장된 컨텐츠 조각을 일정 개수씩 메모리로 불러들여 클라이언트로 전송함으로써, 컨텐츠 전송이 불완전하게 종료된 경우 발생하는 분할손을 최소화할 수 있고 네트워크 트래픽 상황에 따라 적절한 데이터 양을 선택하여 전송할 수 있으며, 분할된 데이터 조각을 분할된 크기로 구분된 저장소에 저장하여 빠르게 메모리로 불러들이고 전송하는 것이 가능하고, 다른 조각에 비해 상대적으로 요청이 많은 조각을 메모리에 저장하여 신속히 클라이언트로 제공하는 것이 가능해 진다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.
도 1은 본 발명의 일 실시예에 따른 컨텐츠 전송시스템의 구성도이다. 도 1을 참조하면, 본 실시예에 따른 컨텐츠 제공시스템은 네트워크(network)를 통해 데 이터 송수신이 가능한 캐시서버(100), 컨텐츠서버(200) 및 클라이언트(300)를 포함하여 구성된다.
클라이언트(300)는 네트워크로 연결된 서버로부터 정보를 제공받는 컴퓨터 등을 의미한다. 클라이언트(300)는 브라우저에 특정 컨텐츠를 요청(request)하는 URL(Uniform Resource Locater) 등이 입력되면, DNS(Domain Name Server) 등의 네임서버에 액세스(access)하여 도메인명을 해당 컨텐츠를 제공하는 컨텐츠서버(200) 또는 캐시서버(100)의 IP 주소로 변환하고 해당 IP 주소에 대응되는 서버로 접속하는 역할을 한다.
컨텐츠서버(200)는 컨텐츠 제공자가 제공하는 웹페이지 및 객체(object) 등을 저장하고 있다가 클라이언트(300)로부터의 컨텐츠 요청이 있을 경우 응답하는 역할을 하는 서버이다. 즉, 컨텐츠서버(200)는 클라이언트(300)로부터 요청된 컨텐츠를 전송하는 역할을 하며, 컨텐츠서버(200)가 보유한 컨텐츠 중 일부를 캐시서버(100)로 전송하여 저장하도록 한다. 이를 통해, 캐시서버(100)에서 클라이언트(300)의 요청에 따른 컨텐츠를 신속하게 제공하는 것이 가능하게 된다.
캐시서버(cache server)(100)는 예를 들어, 복제서버(replication server) 또는 고스트서버(ghost server) 등으로 불리며, 컨텐츠서버(200)가 저장 및 관리하는 컨텐츠 데이터의 복사본을 저장하여 클라이언트(300)로부터의 컨텐츠 요청이 있을 경우 신속하게 제공하는 역할을 한다.
본 발명에서 캐시서버(100)는 컨텐츠서버(200)로부터 컨텐츠 데이터를 수신하면 일정크기의 조각으로 분할하고 같은 크기로 분할된 데이터 조각 저장소의 각 구분영역에 저장한다. 분할한 데이터 조각을 저장하는 경우에는 각 조각이 저장된 각 구분영역의 시작주소 정보를 내부의 메모리에 저장하여, 향후 데이터 조각 저장소의 각 구분영역에서 해당 시작주소 정보를 참조하여 메모리로 불러들이도록 할 수 있다.
이때 컨텐츠 데이터를 분할하는 일정크기는, 예를 들어, 최대전송단위(MTU: Maximum Transfer Unit)를 특정 정수로 나는 크기일 수 있다. 최대전송단위는 TCP/IP(Transmission Control Protocol/Internet Protocol) 네트워크 등과 같이 패킷 또는 프레임 기반의 네트워크에서 전송 가능한 최대 데이터량을 의미한다.
이후, 캐시서버(100)가 클라이언트(300)로부터 컨텐츠 데이터에 대한 요청을 수신하면 클라이언트(300)로 전송할 하나의 데이터 패킷마다 포함하여 전송할 조각의 개수를 결정한다. 이때, 결정되는 조각의 개수는, 예를 들어, 네트워크 트래픽이 많은 경우 상대적으로 작은 값을, 반대로 네트워크 트래픽이 적은 경우 상대적으로 큰 값을 갖도록 결정될 수 있다.
그리고 캐시서버(100)가 하나의 데이터 패킷에 포함하여 전송할 조각의 개수를 결정함에 있어서는, 예를 들어, 결정되는 조각의 개수와 데이터를 분할하는데 이용한 일정크기와의 곱이 최대전송단위를 초과하지 않도록 결정할 수 있다. 하나의 데이터 패킷에 포함되는 데이터량이 최대전송단위를 초과하는 경우 네트워크 상에 존재하는 라우터 등에서 다시 데이터 패킷을 분할하고 라우팅하여야 하므로 전송시간의 지연을 초래할 수 있기 때문이다.
캐시서버(100)가 조각의 개수를 결정하고 나면, 데이터 조각 저장소의 각 구 분영역에 저장한 컨텐츠 데이터 조각을 순차적으로 메모리로 불러들인다. 그리고 데이터 패킷의 페이로드 각각에 해당 결정한 개수만큼의 데이터 조각을 포함하여 클라이언트(300)로 전송한다.
이때, 각 조각을 저장한 각 구분영역의 시작주소 정보를 참조하여 메모리로 불러들일 수 있음은 상기한 바와 같으며, 이를 통해 일반 캐시서버와 같은 file I/O(Input/Output) 동작이 필요없게 되어 고속으로 클라이언트(300)로 전송하는 것이 가능해 진다.
캐시서버(100)가 클라이언트(300)로 컨텐츠 데이터 조각을 포함한 데이터 패킷을 전송하면, 전송한 조각에 대한 전송횟수를 계수(count)한다. 예를 들어, 처음으로 전송된 조각이라면 전송횟수가 '1'이 되고, 기존에 전송되어 계수된 전송횟수 정보가 메모리 또는 데이터 조각 저장소 등에 저장되어 있다면 해당 전송횟수에 더하기 '1'을 할 수 있을 것이다.
이때, 계수한 결과 특정 조각에 대한 전송횟수가 임계치를 초과하는 경우, 해당 특정 조각을 제외한 나머지 조각을 메모리에서 삭제한다. 예를 들어, 동일한 동영상 컨텐츠에 대한 데이터 조각 간의 전송횟수의 편차가 크다면, 이는 다수의 클라이언트가 동영상의 앞부분을 시청하고 뒷부분은 시청하지 않아서 앞부분에 해당하는 데이터 조각의 전송횟수가 상대적으로 크기 때문일 수 있다. 이러한 경우 전송횟수가 상대적으로 높은 부분에 해당하는 데이터 조각을 메모리에 남겨두고 다음 요청이 있을 경우 신속히 제공하도록 할 수 있다.
그리고 캐시서버(100)가 클라이언트(300) 또는 다른 클라이언트 등 임의의 클라이언트로부터 동일한 컨텐츠 데이터에 대한 요청을 수신하면 상기와 마찬가지로 하나의 데이터 패킷에 포함할 조각의 개수를 다시 결정하고, 메모리에 남아있는 조각을 제외한 나머지 조각을 데이터 조각 저장소의 각 구분영역에서 메모리로 불러들인다. 그리고 메모리에 남아있는 조각 및 새로 불러들인 조각을 다시 결정한 조각의 개수씩 데이터 패킷의 페이로드에 포함하여 임의의 클라이언트로 전송하게 된다.
본 발명의 일 실시예에 따른 캐시서버(100)의 구성에 대해서는 도 2를 참조하여 좀 더 상세히 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 도 1에 도시된 캐시서버(100)의 구성도이다. 도 1 및 도 2를 참조하면 캐시서버(100)는 입출력부(110), 제어모듈(120), 데이터 조각 저장소(130) 및 메모리(125)를 포함하여 구성된다.
입출력부(110)는 데이터 송수신을 위한 인터페이스를 갖는다.
데이터 조각 저장소(130)는 캐시서버(100)에 저장되는 컨텐츠 데이터 조각의 저장소이다. 데이터 조각 저장소(130)는 일정크기로 분할된 컨텐츠 데이터 조각을 저장하기 위해 해당 크기의 구분영역으로 분할된 저장공간을 갖는다.
제어모듈(120)은 입출력부(110)를 통해 송수신되는 데이터 및 데이터 조각 저장소(130)에 저장되는 데이터를 제어하는 모듈이다. 본 실시예에서, 제어모듈(120)은 컨텐츠 데이터 조각을 데이터 조각 저장소(130)에서 불러들이고 클라이언트(300)로 전송하는데 활용하기 위한 메모리(125)를 포함하고 있다.
본 발명의 제어모듈(120)은 입출력부(110)를 통해 컨텐츠 데이터를 수신하면 일정크기의 조각으로 분할하여 데이터 조각 저장소(130)의 각 구분영역에 저장한다. 더하여, 각 조각을 저장하는 각 구분영역의 시작주소 정보를 메모리(125)에 저장할 수 있다.
이후, 입출력부(110)를 통해 클라이언트(300)로부터 분할 저장한 컨텐츠 데이터에 대한 요청을 받으면, 클라이언트(300)로 전송할 각각의 데이터 패킷 포함할 컨텐츠 데이터 조각의 개수를 결정한다.
그리고 제어모듈(120)은 데이터 조각 저장소(130)의 각 구분영역에 저장된 컨텐츠 데이터 조각을 순차적으로 메모리(125)로 불러들인다. 예를 들어, 각 컨텐츠 데이터 조각은 메모리(125)가 보유한 각 조각이 저장된 구분영역의 시작주소 정보를 참조하여 메모리(125)로 불러들일 수 있다. 본 실시예에서 메모리(125)는 제어모듈에 속하는 것으로 도시되었으나, 별도의 장치에 포함될 수도 있다.
메모리(125)로 불러들인 데이터 조각이 상기 결정한 조각의 개수와 같아지면, 제어모듈(120)은 해당 개수의 데이터 조각을 데이터 패킷의 페이로드에 포함하여 입출력부(110)를 통해 클라이언트(300)로 전송한다. 그리고 제어모듈(120)은 클라이언트(300)로 전송한 조각의 전송횟수를 계수한다.
계수한 결과 특정 조각에 대한 전송횟수가 임계치를 초과하면, 제어모듈(120)은 임계치를 초과한 해당 조각을 제외한 나머지 조각을 메모리(125)에서 삭제한다. 이후, 제어모듈(120)이 입출력부(110)를 통해 임의의 클라이언트로부터 컨텐츠 데이터에 대한 요청을 수신하면, 네트워크 트래픽 상황을 고려하여 하나의 데 이터 패킷 페이로드에 포함할 조각의 개수를 다시 결정한다.
그리고 메모리(125)에 남아있는 조각을 제외한 나머지 조각을 데이터 조각 저장소(130)의 각 구분영역에서 메모리(125)로 불러들여, 다시 결정한 조각의 개수씩 컨텐츠 데이터 조각을 데이터 패킷의 페이로드에 포함하여 임의의 클라이언트로 전송한다.
제어모듈(120)이 클라이언트(300)로 컨텐츠 데이터를 전송하는 과정에 대해서는 도 3을 참조하여 좀 더 상세하게 설명하기로 한다.
도 3은 도 2에 도시된 제어모듈(120)이 참조하는 조각정보 테이블(310)의 구성도이다. 조각정보 테이블(310)은 제어모듈(120)이 데이터 조각 저장소(130)의 각 구분영역으로부터 메모리(125)로 컨텐츠 데이터 조각을 불러오고, 메모리(125)에서 컨텐츠 데이터 조각을 삭제하는데 참조하는 테이블의 일 예이며, 본 발명의 기술적 범위는 아래의 설명에 한정되는 것이 아니다. 조각정보 테이블(310)은 실시예에 따라 데이터 조각 저장소(310), 메모리(125) 또는 캐시서버(100) 내부/외부의 저장소에 저장될 수 있다.
본 실시예에서 조각정보 테이블(310)을 참조하면, 컨텐츠, 데이터 사이즈, 조각 사이즈, 조각정보 및 전송횟수 항목을 포함한다.
컨텐츠 항목은 데이터 조각 저장소(130)에 저장되는 컨텐츠 정보를 포함한 필드이다.
데이터 사이즈(size) 항목은 각 컨텐츠의 크기를 나타내는 필드이다.
조각 사이즈 항목은 컨텐츠를 분할한 일정크기를 나타내는 필드이다.
조각정보 항목은 각 컨텐츠 데이터에 대응되는 데이터 조각정보를 포함한 필드이다.
전송횟수 항목은 각 조각들이 클라이언트로 전송된 횟수를 나타내는 필드이다.
컨텐츠 항목을 참조하면, 데이터 조각 저장소(130)에 저장된 컨텐츠가 'movie.mpg'임을 알 수 있다. 그리고 'movie.mpg' 컨텐츠의 데이터 사이즈는 '10 Mb(Megabyte)'이다.
조각 사이즈 항목을 참조하면, 'movie.mpg' 컨텐츠는 데이터 사이즈가 '1 Mb'인 조각들로 분할되어 저장되었음 알 수 있다. 조각정보 항목을 참조하면, 'movie.mpg' 컨텐츠를 분할한 조각은 'slice1', 'slice2', 'slice3', ..., 'slice10' 임을 나타내고 있다.
그리고 'slice1' 조각의 전송횟수는 '100', 'slice2' 조각의 전송횟수는 '100', 'slice3' 조각의 전송횟수는 '40', ..., 'slice10' 조각의 전송횟수는 '20'이다.
조각정보 테이블(310)에서 'movie.mpg' 컨텐츠는 처음부터 순차적으로 'slice1', 'slice2', 'slice3', ..., 'slice10'의 조각으로 분할되었으며, 'slice1' 및 'slice2' 조각의 전송횟수가 가장 크고 'slice10' 조각으로 갈수록 전송횟수가 작아지고 있다. 예를 들어, 'movie.mpg'의 컨텐츠를 임의의 클라이언트로 전송하여 사용자 등이 시청하는 도중 해당 컨텐츠의 시청을 중단하는 경우가 빈번 하다면, 시간적으로 'movie.mpg' 컨텐츠의 앞부분에 해당하는 'slice1' 및 'slice2' 조각의 전송횟수는 상대적으로 높을 수 있고, 재생 순서가 늦은 조각의 경우 전송횟수가 상대적으로 작을 수 있는 것이다.
예를 들어, 캐시서버(100)가 클라이언트로(300)로 'movie.mpg' 컨텐츠를 전송하는 경우, 제어모듈(120)에서 하나의 데이터 패킷 페이로드에 두 개의 조각이 포함되도록 결정했다고 가정하자. 이후, 제어모듈(120)은 데이터 조각 저장소(130)의 각 구분영역에서 순차적으로 'slice1' 및 'slice2' 조각을 메모리(125)로 불러들인다. 이를 위해, 메모리(125) 또는 조각정보 테이블(310)은 각 조각이 저장된 데이터 조각 저장소(130)의 각 구분영역의 시작주소 정보를 포함하고 있을 수 있고, 제어모듈(120)이 해당 시작주소 정보를 참조하여 각 조각을 메모리(125)로 불러들일 수 있다.
그리고 데이터 패킷의 페이로드에 'slice1' 및 'slice2' 조각을 포함하여 클라이언트(300)로 전송하고, 조각정보 테이블(310)의 'slice1' 및 'slice2' 조각에 대응되는 전송횟수 '100'을 계수하여 '101'의 값을 각각 저장한다. 만일 임계치가 '80'으로 설정되어 있다면, 계수한 결과 'slice1' 및 'slice2' 조각의 전송횟수가 '80'을 초과하게 되어, 'slice1' 및 'slice2' 조각은 메모리(125)에 남겨둔다.
이후, 제어모듈(120)은 'slice3' 내지 'slice10'까지의 조각들을 두 조각씩 순차적으로 메모리(125)로 불러들여 마찬가지 방법으로 클라이언트(300)로 전송한다. 두 조각씩 전송함과 동시에 각 두 개의 조각에 대응되는 전송횟수를 계수한 결과 임계치인 '80'을 초과하지 않는다면, 해당 조각들은 메모리(125)에서 삭제하여 메모리(125)의 사용 가능한 공간을 확보한다. 이때, 제어모듈(120)은 메모리(125)의 남아있는 저장용량을 참조하여, 임계치를 동적으로 설정할 수 있을 것이다.
그리고 캐시서버(100)가 임의의 클라이언트로부터 'movie.mpg' 컨텐츠에 대한 요청을 수신하면, 제어모듈(120)은 하나의 데이터 패킷 페이로드에 포함할 조각의 개수를 결정한다. 만일, 조각의 개수로 3개의 조각이 결정되었다면, 제어모듈(120)은 'slice3'의 조각을 데이터 조각 저장소(130)의 해당 구분영역에서 메모리(125)로 불러들이고, 메모리(125)에 남아있는 'slice1', 'slice2' 및 데이터 조각 저장소(130)의 구분영역에서 불러들인'slice3'의 조각을 데이터 패킷의 페이로드에 포함하여 클라이언트(300)로 전송한다. 'movie.mpg'에 대응되는 나머지 조각들을 전송하는 과정은 상기한 바와 같으므로 자세한 설명을 생략하기로 한다.
본 발명의 일 실시예에 따른 컨텐츠 전송과정에 대해서는 도 4를 참조하여 좀 더 상세하게 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 컨텐츠 전송방법의 흐름도이다. 도 1 및 도 4를 참조하면, 캐시서버(100)는 컨텐츠서버(200)로부터 컨텐츠 데이터를 수신하면(S410), 일정크기로 분할하여 해당 일정크기로 구분된 데이터 조각 저장소의 구분영역에 저장한다(S415). 단계(S415)에서는 각 조각을 저장하는 구분영역의 시작주소 정보를 캐시서버(100) 내부의 메모리 등에 저장할 수 있다. 단계(S415)에서 컨텐츠 데이터를 나누는 일정크기가 최대전송단위를 특정 정수로 나눈 크기일 수 있음은 상기한 바와 같다.
캐시서버(100)가 클라이언트(300)로부터 단계(S415)에서 저장한 컨텐츠 데이터에 대한 요청을 수신하면(S420), 클라이언트(300)로 전송하는 하나의 데이터 패킷 페이로드에 포함할 컨텐츠 데이터 조각의 개수를 결정한다(S425). 단계(S425)에서는, 예를 들어, 네트워크 트래픽을 고려하여 조각의 개수를 결정할 수 있다. 또한, 상기한 바와 같이, 컨텐츠 데이터를 나누는 일정크기와 조각의 개수의 곱이 최대전송단위를 초과하지 않도록 조각의 개수를 결정할 수 있다.
단계(S425)에서 조각의 개수를 결정한 캐시서버(100)에서는 단계(S415)에서 저장한 컨텐츠 데이터 조각을 순차적으로 메모리로 불러들이고(S430), 단계(S425)에서 결정한 개수의 조각씩 하나의 데이터 패킷 페이로드에 포함하여 클라이언트(300)로 전송한다(S435). 단계(S430)에서는 메모리 등에 저장된 각 구분영역의 시작주소 정보를 참조하여 메모리로 불러들일 수 있다.
그리고, 캐시서버(100)는 단계(S435)에서 클라이언트(300)로 전송한 조각의 전송횟수를 계수하고(S440), 계수한 결과 전송횟수가 임계치를 초과한 조각을 제외한 나머지 조각을 메모리에서 삭제한다(S445).
이후, 임의의 클라이언트로부터 단계(S415)에서 저장한 컨텐츠 데이터에 대한 요청을 수신하면(S450), 단계(S425)와 마찬가지로 임의의 클라이언트로 전송하는 데이터 패킷 페이로드에 포함할 조각의 개수를 다시 결정한다(S455).
단계(S455)에서 조각의 개수를 결정한 캐시서버(100)는 단계(S445)에서 삭제한 조각을 데이터 조각 저장소의 각 구분영역으로부터 메모리로 불러들이고(S460), 메모리에 기존에 남아있던 조각과의 순서를 고려하여 단계(S455)에서 결정된 조각 의 개수씩 데이터 패킷의 페이로드에 포함하여 임의의 클라이언트로 전송한다(S465).