KR20080038088A - 파일 분산을 위한 격자 네트워크 - Google Patents

파일 분산을 위한 격자 네트워크 Download PDF

Info

Publication number
KR20080038088A
KR20080038088A KR1020077029815A KR20077029815A KR20080038088A KR 20080038088 A KR20080038088 A KR 20080038088A KR 1020077029815 A KR1020077029815 A KR 1020077029815A KR 20077029815 A KR20077029815 A KR 20077029815A KR 20080038088 A KR20080038088 A KR 20080038088A
Authority
KR
South Korea
Prior art keywords
client
file
segment
network
media
Prior art date
Application number
KR1020077029815A
Other languages
English (en)
Inventor
앤드류 에드몬드
스티븐 옴머트
Original Assignee
그리드 네트웍스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/419,484 external-priority patent/US20060265436A1/en
Application filed by 그리드 네트웍스 filed Critical 그리드 네트웍스
Publication of KR20080038088A publication Critical patent/KR20080038088A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에서 하나의 시스템이 제공된다. 이 시스템은 네트워크에 접속된 인증 기능을 갖는 제 1서버 노드를 포함한다. 이 시스템은 또한 네트워크에 접속된 완전한 파일의 저장부를 갖는 제 2서버 노드를 포함한다. 이 시스템은 네트워크에 접속된 파일용 로컬 저장부를 갖는 한 세트의 클라이언트 노드를 더 포함한다. 이러한 클라이언트 노드는 네트워크를 통해 피어-투-피어 기반으로 완전한 파일의 세그먼트를 공유하도록 구성된다. 다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 피어-투-피어 연결을 통해 제 1 클라이언트로부터 미디어 파일의 세그먼트를 요청하는 단계를 포함한다. 이 방법은 상기 요청 시 제 1 인증된 작업 티켓을 제공하는 단계를 더 포함한다. 이 방법은 또한 제 1 인증된 작업 티켓이 유효하게 남아 있는 한, 피어-투-피어 연결을 통해 제 1 클라이언트로부터 미디어 파일의 세그먼트를 수신하는 단계를 포함한다.

Description

파일 분산을 위한 격자 네트워크{GRID NETWORK FOR DISTRIBUTION OF FILES}
본 발명은 파일 분산을 위한 격자 네트워크를 위한 시스템 및 그 방법에 관한 것이다.
영화, 텔레비전, 소프트웨어, 서적, 및 음악과 같은 미디어 콘텐츠의 소유권을 갖는 사람으로 본 명세서에서 정의하는 미디어 소유자는 낮은 가격으로, 높은 품질과 효과적인 화폐화 규칙을 통해 자신의 미디어를 안전하게 방송하기 위하여 인터넷의 완전한 잠재력을 사용할 수 있는 기술 시스템을 아직 발견하지 못하였다. 잠재적으로 수천 명의 미디어 소유자와 수백만의 사용자로 이루어진 네트워크를 낮은 가격으로 관리하고, 효과적인 화폐화 규칙과 높은 신뢰도를 통해 전달 네트워크를 관리하는 "종단간 시스템"("end to end system)(즉, 전달자에서 소비자까지)에 대한 요구가 지속되고 있다.
현재 많은 미디어 소유자는 웹사이트 또는 스트리밍 서버로부터 인터넷을 경유하여 최종 소비자에게 영화 파일과 오디오 파일을 "직접 스트리밍"하고 있다. 이들 파일, 특히 비디오 파일은 이들 데이터가 갖는 복잡성의 속성으로 인해 매우 크다. 이러한 종류의 직접 스트리밍은 하드웨어와 대역폭 비용 모두에 대해 상대적으로 값이 비싸다. 더욱이, 대량의 스트리밍 예컨대 백만 명의 사용자에게 일시에 직 접 스트리밍하는 것은 기업 하드웨어의 광범위하고 강력한 클러스터뿐만 아니라, 한 편의 영화를 스트리밍하는 대역폭 비용의 백만 배의 비용을 필요로 한다.
덧붙여, 미디어 콘텐츠를 최종 사용자에게 제공하기 위하여 다른 "출구"(예, 웹 포탈, 온라인 상인, 등)와 상대를 이루는 미디어 소유자는 간혹 각 신디케이션 거래(syndication deal)에 협상 노력과 돈을 지출해야 하고, 이는 유익한 신디케이션에 방해를 야기한다. 만약 미디어 소유자가 신디케이션 시스템을 구성하고, 제어하며, 관리하는데 쉽게 접근할 수 있었고, 출구 상대가 그러한 신디케이션을 더 쉽게 소비하고 구성할 수 있었다면, 미디어는 보다 더 쉽게 분산될 수 있었을 것이고, 미디어 소유자는 화폐화를 제어할 수 있었을 것이다.
다른 도전은 미디어 엔코딩과 최종 사용자의 재생에 관한 것이다. 원래의 소스 또는 복제물로부터 미디어의 엔코딩은 노동 및 장비 집약적이어서 높은 비용을 초래한다. 또한, 영화와 오디오 플레이어 기술은 예컨대 플레이어 기술과 함께 운영 체계와 같은 다른 소프트웨어를 판매하는데 관심이 있는 기업체에 의해 간혹 개발되고 제어된다. 따라서, 운영 체계의 플랫폼과는 독립적이고, 어떠한 운영 체계상에서라도 작동하도록 설계되어(또는 운영체계를 전혀 필요로 하지 않아), 개인용 컴퓨터, 셋톱 박스, 게임 콘솔, 내장형 시스템 및 휴대전화에서 사용할 수 있는, 미디어 플레이어에 대한 필요성이 존재한다.
파일 분산을 위한 격자(grid) 네트워크를 위한 시스템, 방법 및 장치가 제공된다. 본 명세서에서 기술한 특정 실시예는 본 발명의 예시적인 사례를 나타내며, 사실상 제한하는 것이 아니라 예시적이다. 다양한 실시예는 종단간 저작물, 사용-권리, 디지털 권한, 엔코딩, 압축, 콘텐츠 관리, 화폐화 신시디케이션, 격자 네트워크 전달, 및 휴대형 플레이어 기술을 위한 시스템을 제공한다. 다른 실시예는 이들 기능의 하위 세트를 제공할 수 있고, 다른 기능 역시 제공할 수 있다. 디지털 미디어 전달은 디지털 미디어 세그먼트를 수신 및 재송신할 수 있는 분산된 모든 플레이어 애플리케이션(필수적으로 모든 클라이언트)으로부터 노드(node)를 형성하고 구성함으로써, 잠재적으로 감당할 수 있게 된다. 신디케이티드(syndicated) 콘텐츠 공급부는 콘텐츠 제공자로 하여금 디지털 데이터의 전체 라이브러리를 분산 상대에게 쉽게 팔 수 있도록 허용한다. 일부 실시예는 또한 암호화된 미디어 파일의 다운로딩과 공유를 관리하기 위하여, 디지털 영화의 엔코딩(encoding)과 압축 및 클라이언트 기술을 제공한다. 디지털 권한 관리는 이러한 종단간 플랫폼의 모든 계층에 내장될 수 있다.
일 실시예에에 있어서 하나의 시스템이 제공된다. 이 시스템은 네트워크에 접속된 인증 기능을 갖는 제 1서버 노드(node)를 포함한다. 이 시스템은 또한 네트워크에 접속된 완전한 파일의 저장부를 갖는 제 2서버 노드(node)를 포함한다. 이 시스템은 네트워크에 접속된 파일을 위한 로컬 저장부(local repositories)를 갖는 클라이언트 노드의 세트를 더 포함한다. 클라이언트 노드는 네트워크를 통해 피어 투 피어(peer-to-peer) 기반으로 완전한 파일의 세그먼트를 공유하도록 구성된다.
다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 피어 투 피어 연결을 통해 제 1클라이언트로부터 미디어 파일의 세그먼트를 요청하는 단계를 포함한다. 이 방법은 요청 단계에서 제 1인증된 작업 티켓(job ticket)을 제공하는 단계를 더 포함한다. 이 방법은 또한 제 1인증된 작업 티켓이 유효하게 남아 있는 한, 피어 투 피어 연결을 통해 제 1클라이언트로부터 미디어 파일의 세그먼트를 수신하는 단계를 포함한다.
또 다른 실시예에 있어서, 하나의 시스템이 제공된다. 이 시스템은 로컬 클라이언트를 포함한다. 로컬 클라이언트는 네트워크 인터페이스, 저장부 인터페이스, 렌더링 인터페이스, 암호 엔진, 사용자 인터페이스, 및 제어 모듈을 포함한다. 이 시스템은 또한 로컬 저장부를 포함한다. 로컬 클라이언트는 네트워크 인터페이스를 통해 네트워크 상의 서버와 상호 작용하여 파일 액세스를 위한 인증을 수신한다. 로컬 클라이언트는 또한 인증된 피어 투 피어 연결을 통해 로컬 저장부에 및 이로부터, 그리고 다른 시스템 상의 다른 로컬 클라이언트에 및 이로부터 파일의 세그먼트를 전송한다.
다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 격자 네트워크에서 제 1클라이언트로부터 세그먼트를 요청하기 위하여 초대(invitation)를 수신하는 단계를 포함한다. 제 1클라이언트는 방화벽을 통해 격자 네트워크에 접속된다. 이 방법은 또한 세그먼트 요청을 통해 세그먼트를 요청하기 위한 초대에 응답하는 단계를 포함한다. 이 방법은 세그먼트 요청에 응답하여 제 1클라이언트로부터 세그먼트를 수신하는 단계를 더 포함한다.
또 다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 제 2클라이언트에서의 격자 네트워크 내의 서버로부터 제 1클라이언트에 관한 정보를 수신하는 단계를 포함한다. 제 2클라이언트는 방화벽을 통해 격자 네트워크에 접속된다. 이 방법은 제 1클라이언트에 대해 세그먼트를 요청하기 위한 초대를 전송하는 단계를 더 포함한다. 이 방법은 또한 제 1클라이언트로부터 세그먼트 요청을 수신하는 단계를 포함한다.
추가 실시예에 있어서, 하나의 시스템이 제공된다. 이 시스템은 서버를 포함한다. 서버는 네트워크 인터페이스, 로컬 저장부 인터페이스, 및 제어 모듈을 포함한다. 서버는 로컬 저장부를 더 포함한다. 서버는 격자 네트워크의 클라이언트와 상호 작용해야 한다. 서버는 격자 네트워크의 클라이언트로부터 상태 갱신을 추가로 수신해야 한다.
다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 데이터 파일의 인자를 제공하기 위한 요청(request to seed a data file)을 수신하는 단계를 포함한다. 또한, 이 방법은 네트워크의 연결성에 기초한 데이터 파일을 수신하기 위하여 격자 네트워크의 클라이언트를 선택하는 단계를 포함한다. 또한, 이 방법은 데이터 파일의 인자를 제공하기 위한 요청에 응답하여 격자 네트워크의 선택된 클라이언트에 데이터 파일의 세그먼트를 전송하는 단계를 포함한다.
또 다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 데이터 파일을 수신하는 단계를 포함한다. 이 방법은 데이터 파일의 해쉬 값(hash value)을 결정하는 단계를 더 포함한다. 이 방법은 또한 데이터 파일의 분할을 결정하는 단계를 포함한다. 이 방법은 추가적으로 데이터 파일의 세그먼트를 암호화하는 단계를 포함한다.
다른 실시예에 있어서, 하나의 방법이 제공된다. 이 방법은 데이터 파일의 세그먼트를 수신하는 단계를 포함한다. 이 방법은 또한 데이터 파일의 세그먼트를 암호 해독하는 단계를 포함한다. 이 방법은 데이터 파일의 암호 해독된 세그먼트를 렌더링하는 단계를 더 포함한다.
다음의 기술에서, 설명을 위하여, 본 발명의 철저한 이해를 제공하기 위하여 다양한 구체적인 세부사항을 설명한다. 그러나, 당업자에게는 이들 구체적인 세부사항 없이도 본 발명을 실시할 수 있음은 자명할 것이다. 다른 예에서는 본 발명을 불명료하게 하는 것을 회피하기 위하여 구조 및 디바이스가 블록도 형태로 도시되었다.
본 명세서에서 "하나의 실시예" 또는 "일 실시예"에 대한 인용은 그 실시예에 관해 기술된 특정한 특성, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 본 명세서의 여러 곳에서 언급되는 "일 실시예에 있어서"라는 표현은 모두가 필수적으로 동일한 실시예를 인용하는 것은 아니고, 또한 별도의 또는 대체 가능한 실시예가 상호 다른 실시예를 배제하는 것도 아니다. 다양한 실시예의 특성 및 양상은 다른 실시예에 통합될 수 있고, 본 명세서에 도시된 실시예는 도시되거나 기술된 특성 또는 양상을 모두 갖지 않고도 구현될 수 있다.
실시예들은 위에서 확인된 많은 문제점을 해결할 수 있고, 확인된 요구사항의 전체는 아닐지라도 많은 부분을 충족시키는 시스템 및 구성성분을 제공할 수 있다. 또한, 이러한 시스템은 모든 이들 구성성분을, 임의의 미디어 소유자가 사용할 수 있고, 임의의 출구 상대(outlet partner)가 소비할 수 있고, 또한 임의의 최종 사용자가 필요한 어느 곳에서나 보고 주시할 수 있는 단일의 통일된 플랫폼 내에 제공할 수 있다. 따라서, 다양한 실시예는 사용자-권한 및 디지털 권한, 콘텐츠 관리, 화폐화된 신디케이션(monetized syndication), 고속의 "주문형"("on-demand") 격자 네트워크 전달, 및 휴대형 미디어 플레이어 기술을 엔코딩하고, 암호화하며, 구축하기 위한 종단간 플랫폼을 제공한다. 본 명세서의 목적을 위하여, 디지털 비디오는 본 발명의 시스템의 예시적인 예로서 사용될 것이지만, 본 발명이 이러한 예에 국한되는 것이 아님을 이해해야 한다. 다양한 실시예에 있어서, 디지털 음악, 서적, 소프트웨어, 컴퓨터 게임, 및 다른 미디어가 유포되거나 제공될 수 있다.
비디오 엔코딩을 위하여, 일부 실시예의 시스템은 기술자가 DVD 매체, 필름 매체 및 (VHS 테이프와 같은) 아날로그 매체를 사용하여 미디어를 저장 시스템에 "로딩"("load")할 수 있게 허용하는 자동화된 "작업설비"("harness")를 사용한다. 자동화된 엔코딩 컴퓨터는 휴지(idle) 상태일 때, 저장 시스템 상의 디렉토리를 판독하고, 엔코딩을 획득하고 시작하기 위한 새로운 미디어를 찾는다. 엔코딩 컴퓨터가 새로운 미디어 파일의 완전한 복제물을 가지고 있을 때, 이를 원하는 비디오 및 오디오 코덱으로의 엔코딩을 진행하여, 2-패스(two pass) 엔코딩 시스템에서 변화하는 비트 속도로 새로운 미디어 파일의 세트를 생성할 것이다. 미디어가 엔코딩된 이후, 고객에게 전달될 준비가 된 외부의 "발송" 저장 어레이("shipping" storage array)에 저장된다.
일부 실시예의 디지털 미디어 볼트(vault) 시스템은 엔코딩 시스템으로부터 엔코딩된 미디어를 취하여, 수백 테라바이트의 용량을 갖는 저장 어레이 내로 가져온다. 이 시스템이 디지털 미디어 파일을 가져옴에 따라, 미디어 파일을 더 적은 세그먼트(예컨대 일 실시예에서는 32KB-1MB "조각"("chunks"), 다른 실시예에서는 적어도 128 KB의 조각)로 분해하는데, 시스템은 이들 각각을 현재 군용 등급의 암호 프로토콜(128 비트 대칭 키 암호)인 최상의 사용 가능 암호를 사용하여 암호화한다. 세그먼트를 제공하기 위하여 다양한 형태의 암호와 다양한 크기의 조각을 사용할 수 있다. 다양한 실시예의 미디어 볼트는 "웹에서 사용가능(web enabled)"하며, 그에 따라 세부적인 각 미디어 파일의 도매 및 소매 원가를 포함하여, 각 미디어 파일에 대한 조직, 허락 및 디지털 권한을 인증된 사용자가 구성하는 것을 허용한다. 미디어 볼트는 신뢰하는 출구 상대(outlet partner)에 대한 그 목록의 일부 또는 전체의 공급을 신디케이트 하기 위하여 사용할 수 있다. 미디어 볼트는 또한 아래에서 논의되는 격자 네트워크(전형적으로 피어 투 피어 네트워크)의 "수퍼 노드"에 연결될 수 있다.
일부 실시예에서 수퍼 노드는 클라이언트 애플리케이션을 위한 "디렉토리"이고, 이는 클라이언트으로 하여금 미디어의 작은 세그먼트의 일부를 로컬 저장 유니트에 저장할 수 있는 다른 클라이언트를 찾는 것을 허용한다. 따라서, 일부 실시예에 있어서, 수퍼 노드는 클라이언트에게 정보를 제공하고, 이러한 정보는 클라이언트으로 하여금, 컴퓨팅 디바이스의 격자 상에서 이들 관련된 작은 세그먼트를 조합(assemble)하고, 정확하게 배열하고 연속된 영화, 서적, 오디오, 소프트웨어 또는 게임 애플리케이션 파일의 형태로 이들을 적절하게 다시 조합한다. 수퍼 노드는 또한, 만약 클라이언트 애플리케이션이 그 미디어를 시청할 허가를 가지고 있다면, 미디어를 잠금해제하기 위하여 적절한 암호 키를 통해 사용자를 인증할 수 있다.
다양한 실시예의 미디어 플레이어 애플리케이션은 출구 상대(웹 사이트, 셋톱 박스, 휴대전화 또는 개인용 컴퓨터 기반 애플리케이션)를 통해 론칭(launch)하기 위한 내장형 프로토콜을 가지고 있어, 수퍼 노드 디렉토리를 경유해서 격자 네트워크에 액세스한다. 플레이어 애플리케이션은 그 자체가 임의의 수의 컴퓨팅 디바이스에 이식이 가능할 것이다.
일 실시예에 따라, (웹포탈 및 온라인 상인과 같은) 출구 상대에 대한 신디케이션 공급부는 미디어 볼트에 의해 구성되고, 이러한 제공은 많은 다른 출구 상대가 고도로 제어되고 화폐화되며 안전한 미디어 전달 네트워크 상의 미디어 볼트 콘텐츠에 액세스할 수 있게 한다. 신디케이션의 흐름은 두 가지 방식이다: 출구 상대에 대한 미디어 목록의 제 1전달과, 출구 상대로부터 미디어 볼트 상의 미디어에 대한 액세스를 가져야 하는 인증된 사용자 리스트의 제 2의 전달.
일 실시예에 따라, 격자 전달 네트워크는, 미디어 파일 전달의 효과적으로 제어되고 고도로 암호화되며 가속화된 파이프라인을 통한 미디어 데이터의 세그먼트를 모두가 공유, 저장 및 소비하는 클라이언트 애플리케이션의 수천 또는 수백만(많은)의 집단이다. 이러한 격자는 고객(최종 사용자)에게 미디어에 대한 고속의 낮은 비용의 액세스를 보장하는데 핵심적인 역할을 한다.
본 발명은 첨부된 도면에서의 예를 통해 설명된다. 도면은 제한하는 것이 아니라 예시적인 것으로 이해해야 한다.
도 1은 격자 네트워크의 일 실시예를 도시하는 도면.
도 2는 미디어 볼트(vault)의 일 실시예를 도시하는 도면.
도 3은 코덱의 실시예를 도시하는 도면.
도 4는 신디케이션 공급부의 일 실시예를 도시하는 도면.
도 5는 전세계에 위치한 수퍼 노드의 일 실시예를 도시하는 도면.
도 6은 엔코딩 스튜디오의 일 실시예를 도시하는 도면.
도 7은 미디어 플레이어의 일 실시예를 도시하는 도면.
도 8은 클라이언트의 일 실시예를 도시하는 도면.
도 9는 수퍼 노드 프로토콜의 일 실시예를 도시하는 도면.
도 10은 격자 네트워크로부터의 영화 파일을 재생하기 위한 방법의 일 실시예를 도시하는 도면.
도 11은 격자 시스템의 실시예를 도시하는 도면.
도 12는 데이터 파일의 요청에 응답하여 사용된 패킷의 일 실시예를 도시하는 도면.
도 13은 작업 티켓의 일 실시예를 도시하는 도면.
도 14는 미디어 파일을 암호화하는 방법의 일 실시예를 도시하는 도면.
도 15는 암호화된 미디어 파일을 사용하는 방법의 일 실시예를 도시하는 도면.
도 16는 미디어 파일의 일 실시예를 도시하는 도면.
도 17a는 미디어 파일의 한 세그먼트의 일 실시예를 도시하는 도면.
도 17b는 미디어 파일의 해쉬 값의 일 실시예를 도시하는 도면.
도 18은 격자 네트워크의 일 실시예를 도시하는 도면.
도 19는 미디어 파일을 요청하는 방법의 일 실시예를 도시하는 도면.
도 20a는 미디어 파일에 대한 요청을 지원하는 방법의 일 실시예를 도시하는 도면.
도 20b는 개인 클라이언트가 공공 클라이언트를 지원하는 격자 네트워크의 일 실시예를 도시하는 도면.
도 21은 일 실시예에서 파일 세트를 도시하는 도면.
도 22는 일 실시예에서 파일을 원하는 포맷으로 제공하는 방법을 도시하는 도면.
도 23은 파일이 공유되는 시스템의 일 실시예를 도시하는 도면.
도 24는 일 실시예에서 파일 스트림을 수신하는 방법의 일 실시예를 도시하는 도면.
도 25는 긴급 표시의 일 실시예를 도시하는 도면.
도 26은 격자 네트워크의 일 실시예를 도시하는 도면.
도 27은 암호 보호의 일 실시예를 도시하는 도면.
도 28은 격자 네트워크의 일 실시예에서 클라이언트의 일 실시예를 도시하는 도면.
도 29는 격자 네트워크의 다른 실시예를 도시하는 도면.
도 30은 격자 네트워크의 인자를 제공하는 방법의 일 실시예를 도시하는 도 면.
도 31은 인자가 공급된 격자 네트워크의 일 실시예를 도시하는 도면.
도 32는 격자 네트워크를 구현하기 위하여 사용될 수 있는 네트워크의 일 실시예를 도시하는 도면.
도 33은 격자 네트워크에서 사용될 수 있는 머신의 일 실시예를 도시하는 도면.
도 34는 네트워크의 일 실시예에서 클라이언트의 일 실시예를 도시하는 도면.
도 35는 네트워크의 일 실시예에서 서버의 일 실시예를 도시하는 도면.
도 1은 격자 네트워크의 일 실시예를 제공한다. 스튜디오(110)는 엔코딩 스튜디오의 일 실시예를 제공한다. 엔코딩 스튜디오에 있어서, 디지털 미디어는 네트워크에 대한 디지털 마스터링을 위해 고객(미디어의 공급자 또는 미디어 소유자)에 의해 전달된다. 디지털 비디오는 예컨대, 전용 코덱을 통해 압축되고, 디지털 애플리케이션은 시험 연구실에서 시험되고, 체크되어 부적절한 것이 제거되고, 디지털 오디오는 MP3 포맷으로 마스터링되며, 디지털 텍스트 또는 데이터는 미디어 볼트에 운반되기 전에 부적절한 것이 제거되고 품질이 체크된다. 스튜디오는 다른 실시예에서 다른 방식으로 구현할 수도 있다.
미디어 볼트(130)는 미디어 볼트의 예시적인 실시예를 제공한다. 각 고객은 그들의 미디어 파일을 구성하고, 업로드하며 관리하기 위하여 안전하게 암호화된 인터페이스를 통해 자신의 안전한 미디어 볼트에 액세스한다. 미디어는 철저한 기록을 통해 자세히 기술된 사용, 디지털 권한, 가격책정 및 경비 제어, 분류의 다양한 레벨에 대해 구성될 수 있고, 영상은 미디어를 위한 시각 영상을 제공하기 위하여 업로드될 수 있다. 전체 (또는 오직 부분적인) 미디어 품목은 하나로부터 수천에 이르는 믿을 만한 출구 상대(outlet partner)로 신디케이트를 만들도록 구성될 수 있다. 미디어 볼트는 패스워드로 보호되고 SSL 암호화된 "SOAP 웹 서비스"를 사용하여 고도로 보안이 된 특별한 "출구 상대" 게이트웨이를 가질 수 있어, 믿을만한 출구 상대로 하여금, 그들의 사용자가 출구 상대의 계정으로 미디어를 다운로드하는 것을 허용하지 않거나 허용할 수 있게 한다. 미디어 볼트는 다음에 기술된 시스템의 실시예 상의 수퍼 노드를 통해 전세계에서 액세스할 수도 있다. 디지털 미디어를 가져올 때, 미디어 볼트는 격자 전달 네트워크에 걸친 분산을 위하여 데이터를 암호화된 작은 조각으로 분할한다. 미디어 볼트는 보안된 사용자, 보안된 출구 상대 및 보안된 수퍼 노드에 의하지 않고는 외부에 액세스할 수 없다.
수퍼 노드(140)는 전세계에 위치한 수퍼 노드의 일 실시예를 도시한다. 도시된 수퍼 노드는 격자 전달 네트워크(grid delivery network)에 걸쳐 분산을 위해 미디어 볼트로부터 디지털 미디어를 안전하게 다운로드하기 위하여 미디어 볼트와 상호 작용한다. 수퍼 노드는 세계에 걸쳐 단일 시스템에 위치하는데, 이 시스템 내에서 사용자는 아래에서 설명되는 관련 기술을 사용하여 지리적으로 사용자에 가장 가까운 수퍼 노드로 자동적으로 네비게이션할 것이다. 이것은 훨씬 빠른 인터넷 응답 시간과 더 짧아진 대기 시간을 잠재적으로 허용한다. 수퍼 노드는 미디어 볼트 로부터 사용자로의 메타-데이터를 포함하는 데이터의 전달을 관리한다. 수퍼 노드는 제어되는 짧은 시간 기간 동안 네트워크의 전역에 걸쳐 사용자를 인증하는 "작업 티켓"을 관리한다. 유효한 "작업 티켓"을 갖지 않는 클라이언트는 네트워크를 액세스하는 것이 허용되지 않는다. 수퍼 노드는 영화의 제 1세그먼트인 "시드(seeds)"의 격자 네트워크로의 밖으로의 전달을 관리할 수 있고, 수천 또는 수백만 클라이언트의 네트워크가 효과적으로 상호 작용하여 영화를 낮은 원가로 네트워크에 스트리밍할 수 있게 하기 위하여, 시드의 확산을 지적으로 관리할 수 있다. 수퍼 노드는, 영화를 시청하거나, 오디오를 청취하거나, 또는 소프트웨어 애플리케이션을 다운로딩하기 위한 목적으로 디지털 미디어의 세그먼트를 잠금 해제하기 위하여 인증과 디지털 키의 전달을 안전하게 처리한다. 수퍼 노드는 또한 보고의 목적으로 네트워크의 사용에 대한 클라이언트 애플리케이션으로부터 데이터의 보고를 처리한다. 수퍼 노드의 이러한 설명은 다른 실시예에서는 변할 수 있다.
볼트 인터페이스(120)는, 정기적으로 변경된 패스워드, IP(인터넷 프로토콜)에 기초한 클라이언트 인증 및 다른 복잡한 인증 기술을 갖는 믿을만한 사용자에 의해서만 액세스될 수 있는, 고도로 제어되고 고도로 안전한 "내부 네트워크"가 될 수 있는 그리드캐스트 볼트 인터페이스(gridcast vault interface)의 일 실시예를 도시한다. 전체 내부 네트워크는 일 실시예에서 하나의 마스터 "격자 제어(grid control)" 네트워크에 의해 제어되는데, 마스터 격자 제어 네트워크는 수퍼 노드 간에 그리고 수퍼 노드와 미디어 볼트 사이의 인증과, 격자 사용의 보고, 및 모든 중요한 시스템 간의 시스템 건전성을 관리한다.
공급부(150)는 신디케이션 공급부의 일 실시예를 도시하는데, 이는 자신의 데이터를 분산하기 위하여 믿을만한 집단과 협약한 고객의 구성시 생성된다. 믿을만한 집단은 "출구 상대"로 불릴 수도 있다. 신디케이티드 공급부(syndicated feeds)는 미디어 볼트 소유자에 의해 미디어 볼트 상에서 생성되어, FTP(파일 전달 프로토콜)를 통해 출구 상대로 밀려나간다. 출구 상대는 신디케이티드 공급부를 수용하는데, 이러한 공급부는 예컨대 웹사이트를 성공적으로 구축하기 위해 요구되는 모든 정보, 또는 셋톱 박스 애플리케이션, 또는 이들 디지털 파일을 위한 분산을 성공적으로 구축하기 위한 컴퓨터 애플리케이션을 포함할 수 있다. 신디케이티드 공급부는 XML을 통해 소비될 수 있고, 따라서 그들의 웹사이트 상에서 고객에게 제품을 진열하기 위하여 필요한 영상과 함께, XML 데이터를 디코딩하기 위하여 필요한 XML 구조를 포함할 수 있다. 출구 상대의 웹사이트 상에서 소비하기 위한 디지털 파일(예, 시청하기 위한 영화)을 최종 사용자가 선택할 때, 출구 상대는 아마 그 사용자가 미디어 볼트에서 그 데이터를 소비하는 것에 대한 허가를 먼저 구성할 것이다. 미디어 볼트 소유자는 수용된 파일의 각각에 대한 허락 및 가격책정을 설정할 수 있다. 따라서 출구 상대는 자신이 인증한 사용자 각각이 미디어 파일을 다운로드하는 것을 승낙하고, 출구 상대는 콘텐츠 소유자에 의해 이후에 청구서 제출에 대한 그 비용을 야기한다.
런치(Launch)(160)는 미디어 파일의 "웹 런치"의 일 실시예를 도시하는데, 이는 또한 '셋톱 박스 런치' 또는 'PC 애플리케이션에 기초한 런치'가 될 수 있고, 이는 소위 사용자가 출구 상대에서 소재의 목록을 브라우징한 후 다운로드할 영화 를 선택하는 것이다. 본 발명의 클라이언트 애플리케이션은 사용자가 주시할 디지털 파일을 선택할 때, 그 자체를 '런치' 또는 '실행'하기 위한 브라우징 디바이스를 구성한다. 클라이언트 애플리케이션은 런치 데이터를 디코드하고, 영화의 다운로드를 개시하기 위하여 네트워크에 접촉하기 시작한다.
네트워크(170)는 잠재적으로 수천 또는 수백만의 클라이언트 컴퓨터의 집합물인 "그리드캐스트" 즉 격자 전달 네트워크의 일 실시예를 나타내는데, 클라이언트 컴퓨터는, 아래에서 더욱 상세하게 설명하는 바와 같이, 상당히 복잡한 프로토콜에 따라 데이터의 상당히 복잡한 교환 시에 상호 연결되고 인터넷을 통해 계층화된 네트워크 상에서 통신한다. 단일 클라이언트 애플리케이션은 암호화된 디지털 파일을 다운로딩할 수 있고, 그와 동시에 배경에서 투명하게 다른 컴퓨터와 암호화된 디지털 파일을 공유할 수 있다. 클라이언트 애플리케이션이 필요로 하는 파일을 공유하고 있는 다른 클라이언트를 알기 위하여, 클라이언트 애플리케이션은, 디지털 파일의 상당한 부분을 저장할 클라이언트의 리스트인 '노드 리스트'를 위해 수퍼 노드 서버에 접촉하는데, 수퍼 노드 서버 역시 연결하기 위해 바람직한 속도를 갖는다. 리스트를 수신한 후, 클라이언트 애플리케이션은 데이터 교환을 개시하기 위하여 TCP/IP(주요 인터넷 데이터 송신 프로토콜)을 사용하여 다른 클라이언트와 접촉하기 시작한다. 클라이언트는 비록 능동적으로 디지털 파일을 다운로드하지 않는다 할지라도, 클럭 주위의 다른 클라이언트와 공유하도록 일반적으로 구성된다.
도 2는 일 실시예에서 미디어 볼트의 보다 상세한 도면이다. 볼트(220)는 미디어 볼트가 도시된 실시예에서 기능을 수행하기 위하여 연결된 외부 "그룹"의 3가 지 주된 그룹을 갖는 것으로 도시한다. 제 1그룹은 항목(240, 250 및 260)으로 도시되었다. 항목(240, 250 및 260)은 복잡한 SSL 및 HTTP DIGEST 패스워드 인증 절차를 통해 미디어 볼트에 연결된 인간 사용자를 나타낸다. 인증된 후, 사용자는 미디어 볼트(220)에 액세스하는 것이 허용된다. 최종 사용자는 다양한 허가 레벨을 미리 세트할 수 있어서, 그들이 행하도록 위임받은 특정 작업을 수행할 수 있게 하지만, 다른 사람은 그렇지 않다. 각 사용자는 다른 사용자가 행하지 못하는 일부 작업을 수행하도록 점진적으로 구성할 수 있다. 미디어 볼트 상의 각 기능은 이와 같이 구성할 수 있다. 3가지 주된 사용자 그룹은 회계사, 목록 관리자, 및 디지털 권한 관리자일 수 있다. 회계 사용자는 미디어 사용에 대해 출구 상대에게 청구하기 위하여 사용되는 사용 보고서를 작성하고, 네트워크의 경비를 감시하고, 네트워크에 관한 생생한 통계 정보를 얻기 위하여 미디어 볼트를 사용할 수 있다. 목록 관리자는 미디어 볼트 내의 미디어를 구성하고, 디지털 미디어의 모든 양상을 상세하게 기술하는 데이터를 입력하고, 디지털 미디어를 가져오고, 영상을 스캔하여 미디어 볼트에 업로드하고, 미디어에 일련번호를 할당하고, 다른 사용자를 위한 작업흐름(workflow)을 관리할 수 있다. 디지털 권한 관리자는 각 미디어 파일에 대한 가격과 경비에 관해 화폐화하고, 사용자에 의한 사용 권한을 관리하고, 구성 가능한 사용자 그룹에 의해 다운로드될 수 있는 미디어의 품질과 양을 분류할 수 있다.
엔코더(210)는 미디어 볼트에 디지털 미디어를 로드시키기 위하여 엔코딩 스튜디오의 "가져오는(importing)" 기능을 제공한다. 데이터 저장부(230)는 데이터가 있는 곳을 나타내는데, 이는 대형 저장 영역 네트워크에서 하드디스크의 배열이고, 이는 일 실시예에서 파국적인 디스크 고장을 늦추기 위하여 여분으로 연결되었다. 예컨대, 분산된 방식의 유사한 목적을 위하여 다른 저장 선택사항을 사용할 수 있다.
수퍼 노드(280)는 일 실시예에서 단일의 수퍼 노드와 미디어 볼트의 상호 작용을 나타낸다. 미디어 볼트는, 격자 제어 네트워크 디바이스를 통해 구성되거나 달리 준비될 수 있는 수십 개의 수퍼 노드, 심지어 수백 개의 수퍼 노드에 연결될 수 있다. 수퍼 노드는, 디지털 미디어 설명 기록을 다운로드하고, 네트워크에 "인자를 제공(seed)"하기 위하여 미디어의 암호화된 세그먼트를 다운로드하고, 이들 디지털 미디어 파일을 사용하는데 필요한 클라이언트 애플리케이션 암호해독 키를 안전하게 전달하기 위하여 사용자에 의한 인증을 유효하게 하기 위해, 미디어 볼트와 상호 작용하도록 구성된다. 인터페이스(270)는 일 실시예에서 미디어 볼트와의 상호 작용 서비스를 나타낸다. 인터페이스(270)는 밖으로 나가는 신디케이션 공급부와의 상호 작용을 허용하고, 미디어 출구 상대를 위해 들어오는 클라이언트 인증 게이트웨이를 제공한다.
도 3은 다양한 실시예에서 지원되는 많은 파일 형태 중 하나인 디지털 영화를 엔코딩하기 위한 코덱("코드/디코드") 모듈을 도시한다. 비디오 미디어는 가공되지 않은 상태에서 미디어가 너무 크기 때문에 변환 및 "압축"해야 한다. 광대역 인터넷 또는 다른 네트워크의 전역에 걸쳐 신속한 송신을 제공하기 위해 충분히 작은 파일로 "압축"하기 위하여 복잡한 알고리즘을 사용할 수 있다. 특별한 하나의 코덱에 대한 개념은 영화를 각기 8개 화상 프레임으로 된 연속적인 묶음으로 분할 하고, 각 묶음의 제 1프레임을 온전히 압축하는 것이다. 각 묶음에 대해, 제 1프레임으로부터 "변화된" 제 2프레임 데이터만이 엔코딩된다. 이전 프레임에서 변화된 데이터만을 압축하는 이러한 방법은 제 8프레임까지 반복된다. 최종 파일은 가공하지 않은 미디어 데이터보다 운반이 가능한 형태의 오디오 및 비디오 데이터의 혼합물이다. 후속하는 프레임에 대한 변화 또는 델타 정보는 예컨대 MPEG 엔코딩에서의 변화 정보와 유사할 수도 있다.
데이터를 엔코딩하기 위하여, 미디어 파일(310)이 제공되어, 비디오 스트림(320)과 오디오 스트림(330)으로 분할된다. 비디오 엔코더(350)는 엔코딩된(압축된) 비디오 데이터를 제공하고, 오디오 엔코더(340)는 엔코딩된(압축된) 오디오 데이터를 제공한다. 마무리 모듈(370)(finish module)은 엔코딩된 오디오 및 비디오 데이터를 단일의 엔코딩 파일로 결합시킨다. 클라이언트 애플리케이션(380)에서, 비디오는 실제 영화 파일로 "디코딩"되고, 이 영화 파일은 일 실시예에서 초당 대략 24 화상 프레임의 속도로 모니터, 텔레비전 세트, 휴대용 디바이스 또는 사용자(390)가 시청할 수 있는 다른 디스플레이 상에 표시된다. 이러한 모든 것이 잠재적으로 원격 위치에서 사용자(390)가 시청하도록 렌더링된 미디어 파일(360)의 운반 및 재생성을 허용한다.
도 4는 신디케이션 공급부의 세부사항을 도시하는데, 이는 미디어 볼트에서 구성되고, 일부 실시예에서 수퍼 노드(410)를 통해 액세스되는 미디어 볼트 상에 포함된 완전한 또는 부분 목록이 될 수 있다. 완전한 목록은 허가 레벨, 대여 형태, 미디어 형태, 목록(순환적으로 하위목록화되거나 되지 않은), 고객이 프로그램 한 다양한 필터링에 기초하여 "필터링"될 수 있다. XML 공급부(420)에서 XML 공급부가 파일 송신 프로토콜(FTP)을 사용하여 출구 상대 웹사이트로 전달되는 것을 볼 수 있다. 출구 상대 웹사이트(430)는 정기적인 스케쥴(역시 구성가능)로 FTP 서버 상의 파일을 수신하고, XML 데이터, XML 개요(schema), 및 포함된 영상을 사용하여, 웹사이트, 셋톱 박스, 핸드헬드 디바이스, 또는 PC 애플리케이션을 구축함으로써, 그들의 고객 사용자가 시청을 위해 신디케이티드 공급부 내의 미디어를 브라우징할 수 있도록 한다. 공급부 내의 일부 미디어는 허용 레벨을 위해 설정될 수 있고, 이 허용 레벨에서 주로 출구 상대에 의한 금융 수수료를 위한 교환시 사용자가 액세스를 필요로 할 것이다. 예컨대, 사용자가 출구 상대 웹사이트(430)에 수수료(450)를 지불한 후, 만약 필요하다면, 출구 웹사이트는 보안된 "SOAP 웹 서비스"(460)를 통해 미디어 볼트와 통신하는데, 이러한 웹 서비스는 이들 출구 상대가 이들 파일을 시청하는 것에 대한 허가를 사용자에게 부여할 수 있게 한다. 주로 미디어 볼트(410) 소유자는 그들의 콘텐츠의 사용에 대해 출구 상대(430)에 청구할 것이다. 다른 재무 장치 역시 가능하다. 예컨대, 사용자는 미디어 서비스를 액세스할 때마다 수수료를 공제함으로써, 줄어든 지불 계좌를 가질 수 있거나; 미디어를 액세스할 때마다 수수료가 청구되는 신용 계좌를 가질 수 있다. 다양한 장치가 다른 실시예에서 가능하다.
전달부(440)는 웹 런치를 나타내는데, 격자 배달 네트워크 전역에 걸쳐 이로부터 미디어 파일의 다운로딩을 시작하기 위하여 클라이언트 애플리케이션이 "실행"된다. 애플리케이션(470)은, 이와 관련해서 수퍼 노드(410)를 통해 미디어 볼트 에 대한 자신의 인증(480)을 체크하는 것으로 도시된 클라이언트 애플리케이션이다. 만약 (허용 레벨, 가입 상태, 또는 페이퍼뷰(pay per view) 권한에 기초하여) 인증이 부여되면, 사용자는 격자 배달 네트워크(피어 투 피어 연결(455, 465 및 475))로부터 다운로드되는 암호화된 세그먼트를 잠금해제하기 위한 인증 키(490)을 전달받고, 이후 영화(495)의 시청이 허용된다.
도 5는 수퍼 노드가 일 실시예에서 클라이언트 애플리케이션과 상호 작용하는 메커니즘을 도시한다. "웹 런치" 또는 유사한 이벤트 이후, 사용자(클라이언트)는 수퍼 노드 네트워크의 "도메인 네임을 결정하는 것"(520)을 요구 받는다. 잘 구축된 "도메인 네임 시스템"을 통해, 사용자에게 지리적으로 사용자에 가장 가까운 수퍼 노드의 IP 주소(540)가 배달되는데, 이는 사용자가 신속하고, 더 높은 속도의, 그리고 보다 응답성이 좋은 서버에 연결하는 것을 허용한다. 사용된 DNS 서버(530)는 이러한 희귀한 지리적인 검색을 수행하기 위하여 맞춤 프로그래밍된다. 수퍼 노드(550)의 이러한 사용자가 지리적인 영역에서 일본 동경의 수퍼 노드에 가장 가까운 것으로 결정되었다. 클라이언트(510)는 그후 메타 데이터의 다운로딩의 방법을 진행하여, "작업 티켓"을 얻고, 필요하다면 인자를 다운로딩하고, 암호해독 키를 인증 및 취득하고, 사용 데이터를 다시 수퍼 노드(방법 모듈 570)에 보고한다. 네트워크(580)에서, 사용자(클라이언트)는, 작업 요청이 응답된 그 시간에 발견되었던 격자 네트워크 클라이언트로부터 영화(560)를 다운로딩하는데, 이 작업 요청은 또한 현재 그 미디어 파일을 공유하는 모든 클라이언트의 완전한 노드 리스트를 포함한다.
네트워크 전역에 걸친 모든 파일이 일 실시예에서 160비트의 SHA1 요약 알고리즘을 이용하여 생성된 "마스터 해쉬"에 의해 기술되는 것을 주목해야 한다. 디지털 미디어 파일의 각 "세그먼트"는 유사한 160비트 방식으로 기술된다. 그러므로 모든 세그먼트와 모든 마스터 해쉬는 이들 실시예에서 다운로드를 위해 네트워크 상에서 고유한 "네임"이다. 이것은 또한 해쉬를 생성하는 요약 알고리즘이 그 세그먼트가 유효한지를 "확인"하기 위하여 사용될 수 있음을 의미한다.
도 6은 비디오, 오디오, 소프트웨어 및 데이터 미디어 파일을 디지털화하고, 격자 네트워크 상에서 사용하기 위해 이들 파일을 엔코딩하는 집중적인 임무를 담당하는 머신류와 소프트웨어 프로그램의 복잡한 배열인 엔코딩 스튜디오를 도시한다. 인터페이스(620, 630 및 640)에서, 비디오는 엔코딩 스튜디오 관리자에 의해 수신되고, 엔코딩 스튜디오 관리자는 먼저 영화를 검사한 후, 이들을 디지털화 워크스테이션(650)에 로드시킨다. 허용가능한 비디오 포맷은 DVD, VHS 및 35mm 미사용 영화 필름이다. 미디어를 디지털화하기 위한 상업적인 소프트웨어를 사용하여, "가공하지 않은 미디어 파일"은 "저장 서버"(660)로 전달되며, 이 서버는 엔코딩 컴퓨터에 의한 엔코딩 세션의 종료를 대기하는 데이터를 보관한다. 엔코더(670)가 하나의 작업으로 실행될 때, 엔코더는 즉각 저장 서버에 접촉하여 엔코딩되기를 대기하는 파일을 찾는다. 그후 엔코더는 전체 디지털 미디어 파일을 그 시스템으로 끌어들여, 네트워크를 통한 운송에 적합한 포맷(도 3)으로 영화를 엔코딩하는 복잡한 방법을 시작하는데, 이 방법은 2시간 분량의 영화 미디어 파일 당 최대 10시간이 걸릴 수 있다. 엔코더가 실행된 후, 최종 엔코딩된 미디어는 저장 서버(660)에 디지털로 복사된다. 저장 서버가 미디어 볼트로 운송되기를 대기하는 디지털 미디어 파일로 채워질 때, 기술자(680)는 엔코딩된 파일을 "스니커넷" 드라이브("sneakernet" drive)(690)에 복사하고, 이 드라이브는 필수적으로 사람, 자동차 또는 배달 서비스에 의해 고객 미디어 볼트로 운반하기 위한 여분의 디스크의 외부 배열이고, 고객 미디어 볼트는 이론적으로 세계 어느 곳에나 위치할 수 있다.
도 7은 일부 실시예에서 비디오 재생을 위해 격자 네트워크 클라이언트 기술에 통합되는 인터페이스의 전형적인 구현인, 플레이어의 일 실시예를 도시한다. 이들 그림은 최종 사용자의 시각으로부터 비디오 플레이어를 도시한다. 플레이어 애플리케이션 자체는 그 표현의 룩앤필(look and feel)에 대한 동적인 "스킨"("skin") 접근법을 사용한다. "스킨"(따라서 플레이어의 외관)의 선택은 판매자, 미디어 라이브러리, 및 영화를 시작할 때 플레이어에 주어진 미디어 메타데이터 내에 포함된 대상 언어 정보로부터 유도된다(아래의 "VSI 파일"을 참조). 이는 필요에 따라 판매자마다 및 지역마다 맞춤화를 허용한다. 클라이언트가 하나의 미디어 출구로부터 런치할 때, 다른 출구로부터 런치된 클라이언트와는 완전히 다르게 보일 수 있다. 예컨대, 도 7의 Flixz 스킨은 그 웹사이트로부터 런치된 영화를 위해 디스플레이될 것이다. 출구 상대는 고객 스킨을 필요로 할 수 있다. 만약 스킨이 클라이언트 컴퓨터 상에서 국부적으로 존재하지 않으면, 클라이언트는 이러한 스킨을 "페치"("fetches")하여, 사용을 위해 이를 다운로딩하고 설치한다. 도시된 인터페이스(700)는 상표(710), 윈도우 제어부(720), 제목(730), 미디어 디스플레이(740), 상태 바(750) 및 플레이어 제어부(760)를 포함한다.
도시된 비디오 플레이어는 전체화면 토글, 음량 및 묵음 선택, 및 비디오 재생의 플레이, 일시정지, 및 찾기 기능을 포함하는, 공통의 비디오 재생 조작 및 특성을 제공한다. 이들 특성의 대부분은 호스팅 비디오 시스템 기술에 의해 처리된다. 그러나, 재생, 일시정지, 및 찾기에 관한 특성은 하부의 격자 네트워크 구현에 관해 구현되는데, 왜냐하면 이들은 미디어의 배달을 재생과의 동기를 유지하기 위해 플레이어와 격자 네트워크 엔진(클라이언트) 사이의 통신을 필요로 하기 때문이다.
도면에서 도시된 구현이 비디오 재생의 개념에 관한 것이지만, 격자 네트워크 플랫폼에 대한 고유한 성분은 다른 유형의 미디어 및/또는 콘텐츠 프리젠테이션을 위해서도 대체로 동일하다. 이것은 오디오 포맷, 서적, 청사진, 사진 수집물 등과 같은 대형 포맷의 문서, 복사 매체의 생성을 위한 ISO CD/DVD 영상, 실행가능한 및/또는 설치가능한 소프트웨어 애플리케이션, 및 디지털 콘텐츠 및 프리젠테이션의 실질적으로 임의의 다른 형태 또는 포맷을 포함하지만, 이에 국한되는 것은 아니다. 필수 미디어 콘텐츠의 취득, 확인 및 배달을 위한 방법은 모든 미디어 형태에 대해 동일하다. 피어 투 피어 운반의 보안, 회계 및 효율의 장점은 미디어 형태에 관계없이 지속된다. 미디어 프리젠테이션의 다른 형태를 용이하게 하기 위하여, 최종-결과의 렌더링 하위시스템은 적절하게 인터페이스되는 것만을 필요로 한다(아래의 표현 인터페이스 성분을 참조). 오디오 및 비디오와 같은 시간-기반 미디어는 동기화와 시간에 민감한 배달을 위한 추가 서비스를 필요로 한다. 이들 서비스는 격자 네트워크 기술에 의해 제공된다.
도 8은 일부 실시예에서 비디오 스트리밍 플레이어 인터페이스에 대해 구현되는 격자 네트워크 클라이언트의 개념적인 개요를 도시한다. 이러한 개요가 이와 같은 시스템에서 발견될 수 있는 성분을 도시하지만, 이것은 이와 같은 시스템을 구현하기 위한 유일한 선택사항은 아니다-다른 실시예는 유사하거나 또는 다른 구현을 사용할 수도 있다. 격자 네트워크 클라이언트의 기본적인 성분은 다음과 같고, 도면에서 유사하게 부호가 붙여진 것을 볼 수 있을 것이다.
VSI 파일(805) : 각 미디어 콘텐츠 형태에 대해, 대응하는 메타데이터 파일이 존재한다. 이들 파일은 본 실시예의 전문어 내에서 "VSI" 파일로 알려진다. 이들 파일은 미디어(가령, 영화)의 특별한 조각에 관한 정보를 포함하고, 미디어 형태, 판매자 코드, 및 허가와 대여 형태에 관한 정보를 포함한다. 이들 파일은 또한 미디어가 사용될 수 있는 다양한 포맷을 포함한다. 이는 다른 다운로드 비트 속도 및 다른 언어에서 가능한 다수의 선택을 포함한다.
로컬 저장부(875) : "로컬 저장부"는 미디어 세그먼트를 보관하려고 준비해 둔 사용자의 하드디스크 저장부(클라이언트 로컬 저장부)의 일부이다. 미디어 세그먼트는 이들의 SHA1 해쉬의 이름 하에서 엔코딩되어 저장된다. 미디어의 특별한 조각을 구성하는 세그먼트는 그 미디어의 SHA1 해쉬(전체 미디어 파일의 해쉬) 이름 하에 기록된다. 이러한 로컬 저장부 영역은 모든 미디어 세그먼트의 전체 크기를 미리 결정된( 및 구성 가능한) 최대 저장 크기(본 실시예에서 전형적으로 2GB)로 "정리(pruned down)"되도록 하기 위하여, 일상적으로 유지된다.
멤큐(MemQueue)(870) : 멤큐(870)로 알려진 공유 메모리 부분은 두 가지 별 도의 기본 특성을 제공한다. 하나의 특성은, 효율 메커니즘으로서, 하나 이상의 세그먼트를 로컬 저장 디스크가 아닌 메모리에 보관하기 위한 캐쉬 메커니즘으로서 사용할 수 있다. 메모리를 공유하는 멤큐(870)의 다른 특성은 IPC(방법-간 통신) 메커니즘으로서 작용하는 것인데, 이 메커니즘에 의해 플레이어와 격자 네트워크 클라이언트의 별도의 방법에 관한 통신이 가능하다.
프리젠테이션 인터페이스 성분(VSISource.ax)(810) : 프리젠테이션 인터페이스 성분(810)은 격자 네트워크에 의해 배달된 미디어를 미디어-렌더링 엔진용으로 적합하게 사용할 수 있는 포맷으로 변환시키는 중간 성분이다. 도면을 참조하여 상세히 설명한 실시예에서, 이러한 변환은 Microsoft DirectShow Filter 성분(VSISource.ax)의 랩핑(wrapping) 내에서 이루어진다. 다른 운영체계 및/또는 다른 비디오 렌더링 하위시스템을 위한 구현은 필요한 동일한 격자 네트워크-지정 기능을 구현하기 위하여, 유사한 호스트-적절한 랩퍼(wrapper)를 사용할 수 있다.
요청과 보다 더 동일한 방식으로 미디어를 스트리밍하거나 그렇지 않을 경우 제공하기 위한 플레이어 요청 데이터는 파일로부터 데이터를 수신하기 위하여 운영체계에 대해 이루어질 것이다. 프리젠테이션 인터페이스 성분(810)이 렌더링 엔진과의 기본 인터페이스를 구성하는 것은 이 계층에서 이루어진다. 데이터에 대한 요청은 멤큐(870)를 경유하여 격자 네트워크 클라이언트에 대한 통신을 통해 충족되어, 로컬 저장부 내의 미디어 세그먼트 중 어느 것이 요청된 데이터 범위를 포함하는 지를 결정한다. 격자 네트워크 클라이언트에 의해 제공된 디지털 권한 관리(DRM) 엔코딩 키를 사용하여, 그 후 성분은 이들 세그먼트를 암호해독하고, 요청 된 데이터를 반환한다. 그 후의 렌더링 방법의 나머지는 로컬 파일로부터 데이터를 검색한 것처럼 지속되고, 미디어는 최종 사용자를 위하여 렌더링된다. 이와 같은 실시예에서 모든 시점에서 직접 렌더링되거나 또는 복사될 수 있는 파일은 클라이언트 시스템 상에 전혀 존재하지 않아, 잠재적으로 강화된 보안을 제공한다. 더욱이, 다른 래퍼와 코덱이 사용될 수 있어, 디스플레이 또는 사용을 위해 또는 저장을 위해 다른 포맷으로의 렌더링(예컨대, DVD 형태의 미디어로의 렌더링)은 단순히 사용 가능한 프리젠테이션 인터페이스 성분(810)에 기초한 선택사항이 될 수 있다.
작업(825) : 격자 네트워크의 "작업"은 미디어를 위해 확인된 요청이다. 격자 네트워크 클라이언트는, 제공된 VSI 파일(805)로부터 취득한 정보를 사용하여 도메인 네임 상에서 DNS 결정을 수행함으로써 적절한 서버의 인터넷 IP 주소를 획득한다. 지리적으로 네임을 찾는 서비스는 클라이언트에 가장 가까운 서버를 제공한다. 격자 네트워크 클라이언트는 그 후 이러한 서버에 접속하여, "작업 티켓"(830)과, 클라이언트와 공통으로 국부적인 피어 노드의 "노드 리스트"를 요청한다. 작업 티켓(830)은, 요청하고 있는 데이터의 수신에 대해 연결 피어가 인증을 받았는지를 확인하기 위하여 피어(peers)가 사용하는 시간 제한식 확인 및 키이다. 서버는 또한 클라이언트에 모든 세그먼트 해쉬의 리스트를 이 미디어 파일을 구성하는 순서로 제공한다. 세그먼트 해쉬의 이러한 리스트는 피어 사이에서 송신된 데이터를 요청하고 또한 확인하는데 사용된다.
활성 작업(845) : 작업은 큐(대기행렬)(840)에 입력되어 차례로 처리될 수 있거나, 또는 즉각적인 다운로드를 위하여 촉진될 수도 있다. 작업은 세그먼트의 수신 순서가 재생에 중요하지 않은 것을 의미하는 "비동기" 모드, 또는 세그먼트의 수신 순서가 재생에 중요한 것을 의미하는 "동기" 모드에서 다운로드되도록 설정할 수 있고, 렌더링 플레이어와 격자 네트워크 다운로드 엔진 사이의 추가적인 동기화를 요구한다. 디폴트로서 작업은 비동기 모드의 큐에 입력된다. 전형적인 주문형 비디오 요청에 관해, 새로 요청된 작업은 즉시 활성화되어 현재 활성 중인 임의의 작업을 지연시키고, 곧바로 재생을 위해 동기 모드에 놓이게 된다. 그러나 이러한 거동은 사용자와 배달 내용의 요구 및 희망에 따라 조정될 수 있다.
세그먼트 관리자(850), PeerXfer(865), 업로드 관리자(860), 다운로드 관리자(855) : 도면에서 부호가 붙여진 이들 성분은 핵심 피어 투 피어 전달 기능과, 필요한 경우 인자 제공 서버(seeding server)를 이용한 전달을 제공하기 위하여 함께 작동한다. 이 방법은 먼저 다른 피어와 접속함으로써 작동한다. 이것은 서버가 제공한 노드 리스트에서 피어를 찾고, 연결을 개시함으로써 발생하거나, 또는 다른 피어가 클라이언트와의 연결을 개시할 수 있다. 수 개의 동시 연결이 이루어질 수도 있다. 이루어질 수 있는 연결의 전체 수는 구성 가능한 값이지만, (예, 클라이언트 또는 사용자 프로파일에) 기록된 인터넷 연결의 최대 대역폭에 의해 역시 제한된다.
일단 통신이 구축되고 작업 확인이 승인되면, 연결된 상태로 유지하는데 따른 상호간의 이익이 더 이상 없을 때까지 피어는 세그먼트를 래핑하기 위하여 결합된다. 세그먼트 래핑 방법은 클라이언트가 필요한 특별한 세그먼트를 피어에 요청함과 동시에, 클라이언트가 가진 어떤 세그먼트가 사용 가능한 지를 통신하는 것(" 제공 리스트"로 알려짐)을 포함한다. 이에 대한 응답으로, 원격 피어는 (유용한 경우) 요청된 세그먼트의 헤더 정보를 공급된 제공 리스트로부터 자신의 요청과 함께 송신한다. 또한 자신의 현재의 제공 리스트를 통신한다. 이들 교환은 하나의 피어 또는 두 피어 모두가 서로에게 제공할 것을 더 이상 갖지 않을 때까지 피어 사이에서 지속된다.
하나의 피어가 이들 세그먼트를 아직 갖지 않은 다른 피어에 앞서 영화를 다운로드할 때 발생할 수 있는 일방 교환에 있어서, 선행 피어는 그러한 자세를 용이하게 채택하는 것이 자신의 재생 위치(playback position)보다 훨씬 앞서 있는 한 연결로부터 현재 이익을 얻지 못한다 할지라도, 연결을 종료하지 않도록 선택할 수 있다. 만약 두 피어 모두가 재생 위치보다 앞서 있다면, 세그먼트의 순서는 더 이상 순차적일 필요는 없고, 피어 사이의 교환은 훨씬 더 자유스러운 기반으로 발생할 수 있다. 원격 피어가 가진 세크먼트로서 "가장 희귀한(rarest)" 세그먼트를 연결된 모든 피어 중에서 요청하는 알고리즘을 사용하여, 연결된 피어 중에서 세그먼트의 보다 평탄한 분산이 촉진된다. 이는 격자 전역에 걸쳐 세그먼트의 균일한 분산을 보장하는 것을 돕고, 피어가 특별한 세그먼트에 대한 피어의 부족으로 인해 인자 제공 서버에 접속하는 것이 강제될 수 있는 상황을 더 줄이도록 작용한다.
세그먼트가 클라이언트에 도착할 때, 자신의 SHA1 해쉬가 주어진 세그먼트 네임과 동일한 지에 대한 확인이 처리된다. 이러한 확인은 데이터가 임의의 손상을 겪지 않았음을 보장한다. 프리젠테이션 인터페이스 성분(810)과 세그먼트 관리자(850) 사이의 상호-관계는 특별히 중요하다. 재생 도중에, 플레이어는 자신의 현 재 재생 위치를 계속적으로 알린다. 이로부터, 격자 네트워크는 세그먼트를 다운로드하는 순서 및 선호도에 관해 "긴급" 분별력을 결정할 수 있다. 만약 재생 위치로부터 멀지 않은 곳에 빈 세그먼트가 존재하면, 가능한 빨리 이들 세그먼트의 수신을 강조한다. 만약 이러한 거리가 너무 짧게 되거나, 및/또는 연결된 피어 중에서 사용가능한 다운로드 대역폭의 양이 제한되면, 영화의 재생을 중단시키지 않고도 목표 다운로드 속도를 유지하기 위하여 인자 제공 서버로의 연결이 개시될 수 있다.
만약 재생 위치가 빈 세그먼트에 대해 실행하는 것으로부터 단지 짧은 시간 벗어나 있다면, 격자 네트워크 클라이언트는 일시정지하라는 메시지를 플레이어에 전달하고, 지속하기 전에 충분한 버퍼링을 대기한다. 만약 재생 위치에 앞에 인접한 세그먼트의 충분한 거리가 있을 경우, 격자 네트워크 클라이언트는 자유로워, 다운로딩에 현재 관여되지 않은 로컬 저장부로부터의 세그먼트 요청에 응답하는 것을 포함하여, 자신에 앞서 다른 피어의 요구에 더 많이 응답한다. 이는 다른 영화를 시청하는 피어가, 동시에 동일한 영화를 꼭 시청하는 것은 아닌 클라이언트의 로컬 저장부로부터 이익을 얻을 수 있게 한다.
세그먼트 관리자(850)는 이와 같이 클라이언트 상에 국부적으로 저장된 세그먼트를 관리하고, 세그먼트의 재생에 관해 버퍼링되는 세그먼트의 상태를 결정하기 위하여 플레이어와 상호 작용한다. PeerXfer(865)는 데이터를 다른 피어에 전달하거나 이로부터 전달받을 수 있다. 업로드 관리자(860)는 필요에 따라 다른 피어로의 데이터의 업로드를 관리한다. 마찬가지로, 다운로드 관리자(855)는 필요에 따라 다른 피어로부터의 데이터의 다운로드를 관리한다. 따라서, 이들 4개 성분의 각각은 클라이언트에 대한 긴급 레벨 설정 및 긴급 레벨과의 상호 작용에 관련될 수 있다.
로컬 저장부(875)의 목록 및 유지보수. 로컬 저장부(875)는 주기적으로 목록이 만들어지고, 만약 가득 차기 시작하면, 크기를 정리한다. 이러한 목록은 또한 저장부 내의 사용 가능한 미디어의 상대적인 백분율을 서버에 보고하는데 사용할 수 있어, 사용 가능한 미디어 파일의 부분을 갖는 클라이언트의 추적이 이루어져, 지적인 방식으로 다른 피어에 분산된 노드 리스트를 생성하도록 명령받을 수 있다. 이러한 목록작성 임무는 격자 네트워크의 다른 기능과 병렬로 수행되어, 목록작성 회계와 유지보수가 빈번하게 갱신되도록 하지만, 전체로서 애플리케이션의 성능 지연 없이 이루어진다. 목록의 양은 정기적으로 계획된 보고 제출 도중에, 그리고 또한 새로운 작업에 대한 요청 도중에 보고된다.
보고(890) : 일정 간격(일부 실시예에서 구성가능한 시간이지만, 전형적으로 12시간 이상)으로 클라이언트는 다양한 요약 및 트랜잭션 통계에 대해 보고한다(890). 통계 데이터는 기본적으로 노드 성능을 결정하고, 격자에서 취약 지점을 분석하고, 강한 클라이언트 실행자가 아닌 노드에 대해 강한 클라이언트 실행자인 노드를 확인하기 위하여 사용된다. 이는 피어를 위해 최적의 노드 리스트를 제공하는 것을 돕는다. 데이터는 스케쥴 타이머(885)를 사용하여 슬레이브 서버(895)에 보고된다.
자동화된 갱신 : 격자 네트워크 클라이언트는 또한 하나의 설비를 제공하는 데, 이 설비를 통해 새로운 버전의 소프트웨어가 자동적으로 배달될 수 있고, 클라이언트가 자동적으로 갱신된다. 현재의 활동이 전혀 없고 애플리케이션이 휴지상태인 기간에, 현재의 버전과 호스트 플랫폼을 가정하여, 사용 가능한 새로운 버전이 있는지 확인하는 요청이 이루어진다. 만약 있다면, 이러한 새로운 버전에 대한 설치자 또는 수정부분(patch)이 다운로드되고, 조용히 설치되어 프로그램이 다시 시작된다. 교대로, 사용자는, 사용자가 실제 설치를 가능케 하는 새로운 갱신의 도착을 통지 받을 수 있다. 이러한 자동화된 메커니즘은 제품의 특성을 수반하는데 중요하고, 사용자가 제품으로부터 유사한 복잡성을 예측하게 되는 것에 특징이 있다.
격자 네트워크를 사용하여 주문형 비디오의 재생을 포함하는 전형적인 시나리오는 다음과 같이 발생할 것이다. 본 방법의 설명 도중에 도 8을 참조하면, 플레이어는 처리할 VSI 파일(805)을 제공받는다. 이것은 전형적으로 웹 브라우저(미도시)로부터의 핸드오프(handoff)를 통해 이루어지지만, 직접 파일 액세스 또는 다른 수단을 통할 수도 있다. VSI 파일(805)은 그 후 가장 가까운 서버로부터 작업을 요청하기 위하여 필요한 정보를 위해 분석된다. 반환된 노드 리스트와 작업 티켓은 영화의 일부 부분을 갖는다고 생각되는 네트워크 상의 다른 피어와 접속하기 위해 사용된다. 영화는 즉시 재생 모드로 놓이고, 따라서 스트리밍을 시작하여, 재생을 개시하기 위하여 필요한 데이터와 함께 시작한다.
가능할 때마다, 세그먼트는 사용 가능한 많은 피어 중 하나의 피어로부터 수신된다. 이러한 방식으로, 미디어 콘텐츠는 대역폭 비용 없이 기본 서버에 분산된다. 사용가능한 피어 중 어느 피어도 필요한 세그먼트를 갖지 않는 경우, 또는 클 라이언트가 최소 비트 속도를 유지하기에는 너무 적은 피어만이 존재하는 경우, 서버가 접속될 것이지만, 필요한 동안만 접속된다. 이러한 경우, 서버에 대한 의존도에서 벗어나기 위한 충분한 피어를 발견하는 것을 기대하여 새로운 노드 리스트는 주기적으로 요청된다.
대부분의 상황에서, 수퍼 노드 또는 인자 공급 서브로부터 직접 검색되는 콘텐츠는 적거나 전혀 없다. 그러나, 적게 사용되는 미디어에 대해, 또는 새롭게 방출된 미디어에 첫 번째로 들어오는 것에 대해, 서버는 다른 때보다 더 많이 의존할 것이다. 피어가 서로 세그먼트를 교환할 때, 다운로드된 세그먼트는 클라이언트의 로컬 저장부에 기록된다. 여기에서 플레이어는 프리젠테이션 인터페이스 성분(VSISource.ax)(810)을 통해 저장부로부터 데이터를 판독하는데, 저장부에서 데이터는 재생을 위해 암호해독되어 최종 형태로 제공된다. 사용자는 아마도 설명한 바와 같이 영화의 다른 부분을 보기 위해 재생 위치를 이동시킬 것이며, 따라서 "긴급" 및 그에 따라 격자 네트워크에 의해 요청된 세그먼트의 처리를 변화시키면서 영화를 즐긴다. 영화가 실행될 때, 격자 네트워크 클라이언트는 배경에서의 실행을 지속하고, 호출된 다른 피어에 대한 요청의 서비스를 지속하기 위하여 사용 가능하다. 주기적인 목록 작성과 보고 임무는 유지보수 임무와 보고 임무를 현재로 유지한다.
도 9는 일 실시예에서 슬레이브 서버, 클라이언트 및 피어 사이에서의 동작을 도시한다. 따라서, 도 8의 슬레이브 서버(895)는 클라이언트가 역시 피어(880)와 상호 작용하여 파일 세그먼트를 교환하는 동안 다수의 기능을 클라이언트(815) 에 제공할 수 있다. 시스템(900)의 슬레이브 서버(910)는 VSI 파일(915)(파일 식별자)을 다운로딩하고, 작업 티켓(920)을 취득하고, 인자(925)(인자로 제공된 세그먼트)를 다운로딩하고, 인증 요청(930)과 주기적인 보고(935)에 응답하는 것과 같은 기능을 제공할 수 있다. 클라이언트 프로그램(940)은, 다양한 방식으로 확장되거나 적용될 수 있는 HTTP 또는 SOAP 프로토콜을 사용하여, 슬레이브 서버(910)의 다양한 기능 및 관련 모듈과 인터페이스한다. 클라이언트 프로그램은 마찬가지로 교환을 위한 작업 티켓을 사용하고 일부 교환을 위해 인자로 제공된 파일 세그먼트를 사용하여 미디어 파일 세그먼트를 교환하기 위하여 피어(945)와 상호 작용한다. 클라이언트(940)는 그 상태를 주기적으로 보고하고, 새로운 파일의 다운로드를 개시하거나 또는 다른 피어의 작업 티켓을 확인하기 위하여 필요한 VSI 파일을 다운로드하거나 인증을 요청한다.
도 10은 격자 네트워크로부터 영화 파일을 재생하기 위한 방법의 일 실시예를 도시한다. 방법(1000)은 웹사이트로부터 영화 또는 유사한 미디어 파일을 요청하는 단계와, 파일을 위한 식별자를 수신하는 단계와, 파일을 위한 티켓을 요청하는 단계와, 지불 정보를 제공하는 단계와, 파일을 위한 티켓을 수신하는 단계와, 파일의 세그먼트를 찾는 단계와, 파일을 사용하는 단계를 포함한다. 방법(1000)은 영화 파일을 참조하여 특별히 기술되었지만, 다른 형태의 미디어 파일 또는 데이터 파일이 다른 실시예의 방법(1000)에 사용될 수 있다. 본 명세서의 방법(1000)과 다른 방법은 한 세트의 모듈로서 구현되는데, 이러한 모듈은 예컨대 방법 모듈 또는 동작, 관련 기능 또는 효과를 갖는 소프트웨어 모듈, 방법 동작을 충족시키도록 설 계된 하드웨어 모듈, 또는 다양한 형태의 모듈의 임의의 조합이 될 수 있다. 본 명세서에서 기술된 방법(1000)과 다른 방법의 모듈은 예컨대 병렬 또는 직렬 방식으로 재배치될 수 있고, 다양한 실시예에서 순서 재지정, 결합, 또는 세분될 수 있다.
영화 파일의 특정 예를 다시 참조하면, 영화 파일에 대한 요청은 예컨대 HTTP 제출을 통해 모듈(1010)에서 웹사이트에 제출될 수 있다. 이에 대한 응답으로, 영화 식별자는 모듈(1020)에서 웹사이트에 의해 제공된다. 일 실시예에서 영화 식별자는 완벽한 해쉬이거나 완벽한 해쉬와 유사한, 영화 파일을 위한 해쉬 값이다. 영화 식별자의 수신시, 영화 티켓(또는 작업 티켓)은 모듈(1030)에서 요청된다. 공급자 또는 웹사이트는 또한 작업 티켓을 생성하기 위하여 지불을 필요로 할 수 있고, 지불 정보는 예컨대 사용자 인터페이스를 통해 또는 사용자 프로파일을 경유하여 모듈(1040)에서 제공될 수 있다. 사용자가 가입을 진행중인 경우, 사용자 프로파일은 예컨대 이러한 상태를 나타낼 수 있다. 대안적으로 신용 카드 정보는, 예컨대 일부 형태의 프로파일로 저장되거나 구매 시에 제공된다.
수신된 지불과 선택된 제목과 함께, 영화 티켓은 모듈(1050)에서 수신된다. 영화 티켓은 예컨대 언제 유효한지, 어떤 영화에 대한 것인지, 관련 영화 파일이 어디에서 얻어질 수 있는지에 대한 정보를 포함한다. 예시적인 영화 티켓 실시예가 아래에서 추가로 논의된다. 모듈(1060)에서 영화 세그먼트를 찾는 방법이 개시된다. 티켓과 관련된 영화 파일의 세그먼트는, 세그먼트가 다양한 머신에서 발견되고 잠재적으로 순서가 정해지지 않은 방식으로 수신되는 상태로, 머신의 격자 네트워 크 내에서 찾아진다. 영화는 모듈(1070)에서 재생된다. 이는 모듈(1060)의 부분으로서 수신되는 영화의 충분히 이른 세그먼트에 응답하여 발생할 수 있어서, 영화가 모듈(1070)의 일부로서 재생되는 동안 추가 세그먼트의 수신을 허용한다. 따라서, 모듈(1060과 1070)은 병렬 방식으로, 잠재적으로는 다가오는 세그먼트가 사용 가능한지의 여부 또는 다가오는 어떤 세그먼트가 필요한지를 결정하기 위하여 상호 작용을 통해 동작한다.
다양한 시스템이 영화 티켓과 영화와 관련되어 또는 작업 티켓과 미디어 파일의 유사한 조합과 관련되어 사용될 수 있다. 도 11은 격자 시스템의 일 실시예를 도시한다. 시스템(1100)은 웹사이트, 수퍼 노드, 클라이언트(A 및 B), 및 네트워크를 포함한다. 추가 클라이언트와 수퍼 노드와 같은 추가 성분은 도시되지 않았다.
시스템(1100)은 영화에 대한 정보 또는 다른 미디어 제목이 얻어질 수 있는 웹사이트(1110)를 포함한다. 클라이언트 A(1130)는 (예컨대, 월드 와이드 웹이 될 수 있는) 네트워크(1150)을 통해 웹사이트(1110)에 액세스할 수 있다. 웹사이트(1110)에서 제목을 발견한 후, 클라이언트 A(1130)는 관련 영화를 요청하고, 그 영화에 대한 식별자를 웹사이트(1110)로부터 수신할 수 있다. 더욱이, 클라이언트 A(1130)는 예컨대 클라이언트 A(1130)에서 영화의 시청을 가능케 하는 영화에 대한 작업 티켓을 요청할 수 있다. 이는 웹사이트(1110)에 대한 지불 또는 지불 승인을 포함할 수 있다.
전형적으로, 작업 티켓은 수퍼 노드(1120)에 의해 발행되는데, 이 수퍼 노드는 일부 실시예에 있어서, 클라이언트 A(1130)에 상대적으로 가까운 위치에 지리적 으로 위치할 수 있다. 수퍼 노드(1120)는 예컨대 도 12에 도시된 것과 같은 패킷의 일부로서 작업 티켓을 발행할 수 있다. 도 12는 데이터 파일의 요청에 대한 응답으로 사용된 패킷의 일 실시예를 도시한다. 패킷(1200)은 세그먼트 리스트, 노드 리스트 및 실제 작업 티켓을 포함한다. 따라서, 세그먼트 리스트(1210)는 세그먼트 리스트를 제공할 수 있는데, 이러한 세그먼트 리스트는 예컨대 세그먼트의 전체 수에 대한 값과 함께 세그먼트의 해쉬로서 표현될 수 있다.
이러한 구조는 예컨대 세그먼트가 수신되었는지의 여부를 추적할 수 있게 한다. 더욱이, 구조는 예컨대 세그먼트에 대한 요청을 충족시키는 부분으로서 확인 체크를 허용한다(세그먼트에 대한 요청을 수신하는 클라이언트는 요청이 적절한 해쉬 값을 포함하는 지를 결정할 수 있다). 유사하게 해쉬 값은 정확한 세그먼트가 수신되었는 지를 확인하기 위하여 관련된 수신 세그먼트로부터 계산할 수 있다. 해쉬 값은 일부 실시예에서 SHA1 해쉬 값과 같이 160비트의 해쉬 값이 될 수 있다. 이러한 상황에서 많은 수의 해쉬 값은 거의 완벽한 해쉬를 허용한다(각 해쉬 값은 고유하게 관련 세그먼트를 식별한다). 더욱이, 그 세그먼트에 대한 해쉬 값은 일부 실시예에서 주변의 파일(예, 영화 파일)에 대한 해쉬 값과 쌍을 이룰 때 고유하도록 의도될 따름이다. 따라서, 세그먼트의 해쉬 값은, 각 세그먼트에 대해 320비트의 해쉬 엔코딩을 나타내는 영화 파일의 해쉬 값을 유효하게 포함한다.
유사하게, 노드 리스트(1220)가 포함될 수 있어, 예컨대 주제 영화 미디어 파일의 세그먼트를 갖는 노드 리스트를 제공한다. 더욱이, 노드 리스트는 주어진 노드에서 어떤 세그먼트가 제공되는 지에 관한 엔코딩된 데이터를 갖는 추가 필드 를 포함할 수 있다. 이러한 데이터는 수퍼 노드(1120)에 의해 유지될 수 있고, 클라이언트에 의해 제출된 데이터에 응답하여 갱신될 수 있다.
작업 티켓(1230)은 다수의 다른 필드를 포함할 수 있다. 수퍼 노드에 의해 발행된 작업 트랜잭션의 고유한 식별자, 유효 시간 프레임, 이들 두 조각의 정보를 인증하는 수퍼 노드에 의해 생성된 디지털 서명, 및 서명 인증서의 공통의 공개 키의 복사본은 일 실시예에서 새로운 작업의 요청시 클라이언트에게 주어진다. 도 13은 작업 티켓의 일 실시예를 도시한다. 식별자(1310)는 작업 요청을 고유하게 식별하는 원래의 수퍼 노드에 알려진 고유한 식별자이다. 시간 프레임(1320)은 이 작업상의 세그먼트가 피어 간에 또는 인자 공급 서버로부터의 거래를 인증할 수 있는 시간의 유효한 종료('to') 및 시작('from')을 포함할 수 있다. 수퍼 노드가 알고 있는 디지털 인증서(1350)는 식별자(1310)와 시간프레임(1320)에서 발견되는 정보의 디지털 서명을 생성하기 위하여 사용된다. 디지털 서명(1330)은 수퍼 노드가 작업 티켓을 발급하였음을 인증하기 위하여 인증서(1340)의 공통의 공개 키와 함께 사용될 수 있다. 피어에 연결될 때(파일을 요청할 때), 식별자(1310)와 시간 프레임(1320)은 디지털 서명(1330)과 함께 전송된다. 원격 피어 또는 인자 공급 서버는 수퍼 노드로부터 유래한 작업 티켓 정보를 인증할 수 있고, 따라서 요청 클라이언트와 세그먼트 정보를 거래하기 위해 인증 받는다.
인증된 작업 티켓(1230)에 대해, 클라이언트 A(1130)는 해당 영화 파일의 세그먼트를 찾을 수 있다. 노드(1220)의 리스트 상에 열거되는 클라이언트 B(1140)에 기초하여 세그먼트를 요청하기 위하여, 작업 티켓(1230)은 클라이언트 B(1140)에 제공될 수 있다. 클라이언트 B(1140)는 수퍼 노드(1120)를 통해 티켓을 확인할 수 있고, 그 후 적절한 세그먼트(들)을 클라이언트 A(1130)에 전달한다. 따라서, 클라이언트 A(1130)와 클라이언트 B(1140) 사이의 피어-투-피어(실질적으로 직접) 접속이 구축될 수 있다. 이러한 접속은 여전히 네트워크(1150) 전역에 걸친 실질적인 트래픽을 수반할 것이지만, 보다 더 직접적인 연결로서 도시될 수 있다. 더욱이 세그먼트는 일반적으로, 클라이언트 A(1130)가 더 이상 세그먼트를 필요로 하지 않는다는 신호를 발신할 때까지, 진행을 기초로 전달된다.
도 14는 미디어 파일을 암호화하는 방법의 일 실시예를 도시한다. 이 방법은 대체로 파일을 해싱하는(해쉬 값을 계산하는) 단계와, 이후 파일의 세그먼트를 암호화하는 단계를 포함한다. 방법(1400)은 데이터 파일을 수신하는 단계와, 데이터 파일의 해쉬 값을 계산하는 단계와, 데이터 파일의 세그먼트를 확인하는 단계와, 세그먼트를 암호화하는 단계와, 암호화된 세그먼트를 저장하는 단계를 포함한다. 암호화될 수 있는 파일의 형태는 영화, 음향, 애니메이션, 텍스트 및 다른 파일과 같은 다양한 형태의 미디어 파일을 포함한다.
방법(1400)은 모듈(1410)에서 암호화를 위해 데이터 파일의 수신을 통해 시작할 수 있다. 모듈(1420)에서, 파일을 위한 해쉬 값이 계산된다. 해쉬 값은 완벽한 해쉬 방법을 사용하여, 또는 완벽한 해쉬를 거의 시뮬레이션하도록 의도된 방법을 사용하여 계산할 수 있다. 예컨대, 일 실시예에서 160비트의 해쉬 값이 계산된다. 이 값이 꼭 완벽한 해쉬는 아니지만, 충분히 근접한 값일 수 있는데, 왜냐 하 면, 2160이 방대한 수의 고유 식별자를 제공하기 때문이다. 따라서, 이 해쉬 값은 모든 실제 목적을 위해, 파일을 위한 식별자로서 사용할 수 있다.
계산된 식별자를 통해 파일의 세그먼트는 모듈(1430)에서 확인된다. 이것은 파일의 크기를 미리 정해진 블록 크기로 나누고, 그 후 파일을 미리 정해진 블록 크기에 기초하여 분할하는 것만큼 단순할 수 있다. 대안적으로, 이는 바람직한 블록 크기를 결정하는 단계와, 이 후 파일을 나누는 단계를 포함할 수 있다. 모듈(1440)에서, 세그먼트는 암호화된다. 일 실시예에 있어서, 세그먼트는 체인-블록-블로우피쉬(chain-block-blowfish) 대칭 암호에 기초한 방법을 사용하여 암호화되는데, 각 블록은 이전 블록의 암호 형태에 기초하여 부분적으로 암호화된다. 암호화된 세그먼트를 통해 세그먼트는 이 후의 분산을 위해 모듈(1450)에 저장될 수 있다.
세그먼트를 저장하면, 암호해독된 형태의 세그먼트를 파일로 재조합하기 위하여 세그먼트를 요청할 수 있다. 도 15는 암호화된 미디어 파일을 사용하는 방법의 일 실시예를 도시한다. 이 방법은, 파일을 요청하는 단계, 세그먼트를 수신하는 단계, 첫 번째 세그먼트 및 그 후 후속 세그먼트를 암호해독하는 단계, 및 세그먼트의 수신 및 암호해독을 지속하는 단계를 포함한다.
프로세스(1500)는 모듈(1510)에서 식별자로서 해쉬 값을 사용하는 파일의 요청을 통해 시작한다. 모듈(1520)에서 파일의 세그먼트가 수신되며, 제 1세그먼트는 모듈(1520)에서 수신된다. 모듈(1530)에서 제 1세그먼트는 파일 내에서 순차적으로 암호해독된다. 이것은 파일의 해쉬 값을 포함할 수 있고, 또한 예컨대 일부 형태의 디지털 서명을 포함할 수 있다.
모듈(1540)에서 파일의 다음 세그먼트가 암호해독된다. 만약 이것이 제 1세그먼트의 암호해독 이후 곧바로 발생한다면, 다음 세그먼트는 제 2세그먼트이다. 그러나, 다음 세그먼트는 마지막 세그먼트 암호해독된 후 파일 내에서 순차적으로 다음 세그먼트인 것으로 예상할 수도 있다. 모듈(1550)에서 암호를 해독할 더 이상의 세그먼트가 존재하는지에 대한 결정이 이루어질 수 있다. 만약 존재한다면, 방법은 모듈(1560)로 이동하고, 이 곳에서 (필요하다면) 더 많은 세그먼트가 수신되어, 다음 세그먼트의 암호해독을 위해 모듈(1540)로 되돌아간다. 이러한 과정은 모듈(1550)에서 암호해독할 더 이상의 세그먼트가 존재하지 않다는 결정이 내려질 때까지 반복되고, 이 시점에서 방법은 모듈(1570)에서 종료된다. 방법은 예컨대, 파일의 마지막에 도달했기 때문에, 파일이 차단되었기(아마도 액세스할 수 없어서) 때문에, 또는 하나의 세그먼트가 수신되지 않았고 에러가 발생하였기 때문에, 종료될 수 있음을 주목해야 한다.
도 14와 도 15의 방법과 관련하여 다양한 구조가 사용될 수 있다. 도 16은 미디어 파일의 일 실시예를 도시한다. 미디어 파일(1600)은 세분된 파일로서 해쉬 값이 계산된 파일이다. 따라서, 해쉬 값(1610)이 전체 파일에 기초하여 도시되었다. 해쉬 값(1610)은 이와 같이 도 17b의 값(1750)과 같은 값(식별자로서 저장되고 송신될 수 있는 스칼라 값)이 될 수 있다. 세그먼트(1620)는 파일(1600) 내에서 순차적인 세그먼트로서 도시되었다. 따라서, 세그먼트(1620a)가 먼저 들어오고, 순차 적으로 세그먼트(1620b, 1620c, 1620d, 1620e)와 최종적으로는 세그먼트(1620m 및 1620n)가 뒤따른다. 파일(1600)의 세그먼트를 암호화할 때, 세그먼트(1620a)가 먼저 암호화되고, 그 후 세그먼트(1620b)는 부분적으로 세그먼트(1620a)에 기초하여 암호화되며, 이와 같이 진행된다.
암호화 이후, 세그먼트는 저장될 수 있다. 도 17a는 미디어 파일의 세그먼트의 일 실시예를 도시한다. 세그먼트(1700)는 헤더(1710), 데이터 페이로드(1720)(Data payload) 및 체크섬(1730)(checksum)을 포함한다. 세그먼트(1700)의 각 부분은 암호화 방법을 통해 생길 수 있다. 따라서, 헤더(1710)는 예컨대 미디어 파일 식별자 및 세그먼트 번호와 같은 식별 정보를 포함할 수 있다. 데이터 페이로드(1720)는 실제 암호화 데이터(잠재적으로는 세그먼트의 다른 부분과 상호 작용하는 데이터 또는 암호해독 방법 도중의 외부 데이터와 함께)를 포함할 수 있다. 체크섬(1730)은 일부 형태의 패리티 체크(parity check), 또는 세그먼트(1700) 자체가 본래대로 인지에 대한 보다 더 정교한 표시를 제공할 수 있다. 대조적으로 도 17b는 예컨대 스칼라 숫자 값과 같이 단순할 수 있는 미디어 파일의 해쉬 값의 일 실시예를 도시한다.
격자 네트워크 내에서, 일부 클라이언트는 공개적으로 액세스 가능하고, 일부 클라이언트는 방화벽 뒤에 숨겨진다. 도 18은 격자 네트워크의 일 실시예를 도시한다. 시스템(1800)은 (도시된 바와 같이) 제 1클라이언트 사이트(1810), 제 2클라이언트 사이트(1820) 및 이들 사이의 네트워크(1830)를 포함한다. 이것은 다수의 클라이언트가 다양한 형태의 서버와 함께 존재할 수 있는 격자 네트워크를 단순화 시킨 것이다. 클라이언트 사이트(1810 및 1820)는 논리적인 사이트이다(이들은 단일의 물리적인 위치를 나타내지는 않을 것이다).
클라이언트 사이트(1810)는 방화벽이 없는 공개 클라이언트(public client, 다른 클라이언트에 의해 상대적으로 쉽게 액세스될 수 있기 때문에 이와 같이 이름이 붙여졌다)이다. 클라이언트 사이트(1810)는 클라이언트(1840) 및 라우터(1850)를 포함하고, 이들은 네트워크(1830)에 접속된다. 한편, 클라이언트 사이트(1820)는 프라이빗 클라이언트(private client, 인증받지 않거나 초청 받지 않은 액세스를 차단하는 삽입 방화벽을 갖는다)이다. 클라이언트 사이트(1820)는 클라이언트(1860), 방화벽(1870) 및 라우터(1880)를 포함하고, 이들 모두 네트워크(1830)에 접속된다. 방화벽(1870)은 클라이언트(1860)에 대한 인증받지 않은 액세스를 차단한다.
인증받지 않거나 초청 받지 않은 액세스를 차단하는 것은 사전에 나간 요청에 응답하지 않는 모든 인입 요청을 차단하는 것을 포함할 수 있다(간혹 포함함). 따라서, 만약 클라이언트(1840)가 클라이언트(1860)로부터 파일 세그먼트를 요청하고, 클라이언트(1860)로부터 이전에 나간 어떠한 요청도 방화벽(1870)을 통과하는 경로를 구축하지 못했다면, 방화벽(1870)은 클라이언트(1840)로부터의 통신을 차단할 것이다. 이러한 점은 멀웨어(malware)에 대해 방어하는데 장점을 제공하면서, 허락 받지 않은 통신을 금한다. 잠재적으로 요구되는 것은 피어-투-피어 형태 또는 유사한 구조의 클라이언트(1840과 1860) 사이의 통신 채널이다.
클라이언트(1840)는 초기에 네트워크(1830)를 통해 미디어 파일을 요청할 수 있다. 도 19는 미디어 파일을 요청하는 방법의 일 실시예를 도시한다. 방법(1900)은 파일을 요청하는 단계, 세그먼트를 수신하는 단계, 갱신된 요청을 전달하는 단계, 및 프라이빗 클라이언트로부터 요청을 수신하는 단계를 포함한다.
모듈(1910)에서 방법(1900)은 파일 요청으로 시작한다. 다양한 피어에 전달된 요청으로, 세그먼트가 모듈(1920)에서 도달한다(요청자는 파일 부분을 수신하기 시작한다). 어느 부분이 도착하였는지에 기초하여, 요청자는 모듈(1930)에서 파일의 누락 부분에 대한 변형된 요청 또는 갱신된 요청을 전달할 수 있고, 무엇이 요청되었는지에 관하여 서버를 갱신할 수 있다. 더욱이, 요청자는 모듈(1940)에서 프라이빗 클라이언트로부터의 통신을 개시하기 위하여 요청을 수신할 수 있다. 이들 요청은 프라이빗 클라이언트가 파일에 대한 요청자의 부족을 통보 받았고, 프라이빗 클라이언트의 방화벽을 통한 통신을 초청하고 있음을 나타낼 수 있다.
공개 클라이언트가 파일을 요청하는 동안, 이번에는 프라이빗 클라이언트가, 다시 공개 클라이언트로부터 파일 요청을 위한 경로를 제공하기 위하여, 공개 클라이언트와의 통신을 요청한다. 도 20a는 미디어 파일의 요청을 지원하는 방법의 일 실시예를 도시한다. 방법(2000)은 서버를 통한 상태를 갱신하는 단계, 명령을 수신하는 단계, 공개 클라이언트에 접속하는 단계, 요청을 수신하는 단계, 및 세그먼트를 전달하는 단계를 포함한다.
방법(2000)은 모듈(2010)에서 상태 갱신으로 시작한다. 프라이빗 클라이언트는 그 상태를 서버에 전달하고, 세그먼트를 제공하기 위하여 사용 가능함을 나타낸다. 아마 서버는 프라이빗 클라이언트가 가진 세그먼트가 어떤 것인지에 대한 정보 로의 액세스를 갖고, 프라이빗 클라이언트가 세그먼트를 제공해야할 지의 여부를 결정할 수 있다. 이러한 정보에 기초하여, 프라이빗 클라이언트는 모듈(2020)에서 세그먼트를 제공하려 시도하기 위하여 다른 어떤 클라이언트에 접속해야 하는지에 대한 명령을 서버로부터 수신한다.
이들 명령을 통해, 프라이빗 클라이언트는 예컨대 공개 클라이언트에 의해 요청된 파일에 관련된 통신을 요청함으로써, 모듈(2030)에서 공개 클라이언트와의 통신을 개시한다. 모듈(2030)의 통신에 응답하여, 모듈(2040)에서 프라이빗 클라이언트는 지정된 파일의 세그먼트에 대한 공개 클라이언트로부터의 요청을 수신한다. 모듈(2050)에서, 프라이빗 클라이언트는 세그먼트를 공개 클라이언트에 전달하고, 방법은 그 후 적절할 때까지 반복할 수 있다. 이러한 방법은 세그먼트의 전달이 단일 방향 방식으로 발생하는 것을 제안한다. 그러나, 다시 공개 클라이언트로부터 프라이빗 클라이언트로 세그먼트 전달이 또한 발생할 수 있다. 이것은 예컨대 양방향에서 동일한 파일 또는 영화의 세그먼트를 포함할 수 있거나, 일방향 또는 양방향에서 다수 파일의 세그먼트를 포함할 수 있다. 필수적으로, 프라이빗 클라이언트를 공개 클라이언트와 접속시키는 방법은 통신의 구축을 돕는데, 그렇지 않을 경우 통신은 전혀 발생하지 않을 것이다.
이러한 지원 방법은 격자 네트워크 기능을 구성하는 유용한 부분이 될 수 있다. 격자 네트워크에서, 다수의 클라이언트는 세그먼트를 찾는 단일 클라이언트를 지원할 수 있다. 따라서, 단일 클라이언트는 하나의 클라이언트로부터 16개 또는 그 이상의 클라이언트 중 어떠한 곳이든지 이로부터 세그먼트를 수신할 수 있다. 그러나 많은 클라이언트가 방화벽 뒤에 놓일 수 있다. 따라서, 프라이빗 클라이언트로 불리는 이들 클라이언트는 대부분의 공개 클라이언트에게는 액세스될 수 없어서, 사용 가능한 격자 자원의 상당한 부분을 차단한다.
방화벽 뒤에 놓인 클라이언트 시스템(소위 프라이빗 클라이언트)은 세그먼트를 찾는 원격 피어로부터 직접 접속될 수 없다. 피어-투-피어 연결은 만약 요청 이전에 인증을 받지 않았다면 거부될 수 있다. 그러므로, 수퍼 노드는 연결 기회를 찾는 클라이언트에 광고되는 피어의 리스트 내에 이들 클라이언트를 열거하지 않을 것이다. 수퍼 노드에 의해 제공되는 노드 리스트는 전형적으로 공개 클라이언트 노드만을 포함한다. 그러나, 이것은 발견할 수 있는 자원 공유의 무거운 부담을 격자의 전체 노드 공간의 이러한 하위세트에 부가하여, 전혀 최적이 아닌 구성을 초래한다.
이러한 점에 대항하기 위하여, 지원 프로토콜이 사용될 수 있는데, 이 프로토콜은 프라이빗 클라이언트로 하여금, 그들의 자원에 관심이 있다고 생각되는 공개적으로 액세스 가능한 클라이언트와의 연결을 개시할 수 있도록 한다. 일단 연결이 구축되면, 연결된 클라이언트는 새로운 프라이빗 클라이언트를 위하여 기존의 공개 연결 중 하나의 연결을 제거하도록 선택될 수 있다. 이러한 방식으로, "지원"하기를 바라는 프라이빗 클라이언트로의 연결의 오프로딩은 네트워크에 걸쳐 공개 노드 상의 부담을 감소시키고, 잠재적으로는 전체 네트워크가 보다 효율적으로 기능하게 하도록 작용한다.
도 20b는 격자 네트워크에서 지원 방법의 일 실시예를 도시한다. 클라이언 트(2015)는 방화벽 뒤에 놓이고, 따라서 외부의 피어(프라이빗 클라이언트)에 의해 공개적으로 액세스되지 않는다. 클라이언트(2015)가 현재 다른 작업으로 사용중이 아니고, 공유하기에 유용할 수 있는 자원을 로컬 저장부에 가지고 있다고 결정한다면, 지원 서비스를 제공하기 위하여 수퍼 노드(2045)와의 접속을 개시한다.
지원 통지(2035)는 프라이빗 클라이언트가 효과적으로 공유할 수 있는 자산의 간단한 목록을 포함한다. 이것은 네트워크를 통해 수퍼 노드에 송신되는 패킷 또는 다른 유사한 데이터 구조 형태일 수 있다. 수퍼 노드(2045)는 그 후 이들 미디어 상의 능동적으로 거래하는 세그먼트인 것으로 알려진 공개 노드를 확인하고, 응답(2025)을 통해 이들 클라이언트의 리스트를 프라이빗 클라이언트(2015)에 반환한다.
프라이빗 클라이언트(2015)는 그 후 연결 요청(2055)을 통해 리스트 내의 하나 이상의 공개 노드와의 접속을 개시할 수 있다. 수신하는 공개 클라이언트(2065)는 연결 피어(2015)가 프라이빗 클라이언트임을 인식하고, 실제 이 피어(2015)가 현재 필요로 하는 자원을 제공하고 있다고 결정한 후, 연결을 수락한다. 그 후, 현재 연결된 공개 피어를 방출하도록 선택할 수 있다.
현재 연결된 공개 피어의 방출 결정은 연결된 피어의 전체적인 유효성과 세그먼트를 수신하기 위해 필요한 현재의 긴급에 기초한다. 만약 클라이언트가 새로 연결된 프라이빗 피어를 위해 공개 피어를 방출할 "여유"가 있다면, 방출할 것이다. 이러한 경우, 프라이빗 피어의 연결(2075)은 이전의 공개 연결(2085)을 대체하고, 공개 연결(2085)과의 통신이 정지된다. 수신 클라이언트(2065)가 현재 연결된 공개 노드를 대체할 여유가 있다고 결정하면(오직 적은 피어만이 현재 연결된 경우), 새로운 프라이빗 클라이언트(2015)와의 연결(2075)은 단순히 현재 연결된 피어의 리스트에 부가될 수 있다.
파일은 다양한 다른 포맷으로 제공될 수 있고, 격자 네트워크 상의 다른 클라이언트의 성능과 일관될 수 있다. 도 21은 일 실시예에서 파일의 한 세트을 도시한다. 파일의 그 세트는, 격자 내에서 사용된 많은 파일에 공통인 다른 특성을 공유하면서, 각각이 다른 포맷을 가질 수 있다. 따라서, 각 파일은 세그먼트(실제 데이터)와 함께, 제목, 포맷, 해쉬, 및 세그먼트의 리스트를 포함한다.
예컨대, 제 1파일(2110)은 영화("This is Spinal Tap")를 윈도우 미디어 포맷(마이크로소프트사에서 취득 가능)으로 엔코딩하는 파일일 수 있다. 따라서, 제목 필드(2140a)는 제목, "This is Spinal Tap"을 예컨대, 문자열로 또는 제목 테이블에 대한 색인으로 엔코딩할 것이다. 포맷 필드(2150a)는 예컨대 명칭(윈도우 미디어), 형태(wmv) 또는 파일 포맷의 테이블에 대한 색인과 같은 식별자를 통해 윈도우 미디어(또는 특정 코덱)를 위한 포맷을 엔코딩할 것이다. 해쉬 필드(2160a)는 예컨대 파일의 실제 데이터의 해쉬를 포함할 것이다. 리스트 필드(2170a)는 예컨대 세그먼트의 포장된 비트방식의 표현을 수반하는 세그먼트의 스칼라 수와 같은, 파일의 세그먼트 리스트를 포함할 것이다. 도시되지 않은 것은 실제 세그먼트이고, 이는 파일의 도시된 헤더에 이어진다.
제 2파일(2120)은 유사하게 영화, 잠재적으로 파일(2110)과 동일한 영화를 엔코딩할 수 있다. 그러나, 제 2파일(2120)은 예컨대 Apple사로부터 취득 가능한 Quicktime을 위해 영화를 엔코딩할 수 있다. 따라서, 제목(2140b)은 제목 "This is Spinal Tap"을 제목(2140a)과 유사하게 (잠재적으로는 동일하게) 엔코딩한다. 포맷(2150b)은 Quicktime, "mov" 또는 색인과 같은 포맷을 엔코딩할 것이다. 해쉬(2160b)는 파일(2120)의 해쉬를 포함할 것이고, 이는 엔코딩 차이로 인해 파일(2110)의 해쉬와는 다를 것이다. 리스트(2170b)는 리스트(2170a)와 유사하지만, 파일(2120)의 세그먼트와 상응하는 리스트를 제공할 것이다. 마찬가지로, 실제 세그먼트(미도시)가 뒤따를 것이다.
기대할 수 있는 바와 같이, 제 3파일(2130)이 역시 엔코딩될 수 있다. 파일(2130)은 완전히 다른 파일(예, "The Care Bears Adventure")이 될 수도 있거나, 또는 동일한 영화의 다른 포맷이 될 수도 있다. 이러한 설명은, 예컨대, Real Media Player를 위한 포맷의 또 다른 제 3포맷를 가정한다. 제목(2140c)은 제목(2140a 및 2140b)과 유사하거나 동일할 수 있다. 포맷(2150c)은 예컨대 RealMedia, "ram" 또는 색인의 엔코딩일 수 있다. 해쉬(2160c)는 다시 실제 파일의 해쉬가 될 수 있고, 따라서 해쉬(2160a 및 2160b)와는 다를 것이다. 유사하게 리스트(2170c)는 실제 파일을 수반하는 리스트(2170a 및 2170b)와 유사한 리스트일 것이다.
다른 파일 포맷에 대한 요구를 충족시키기 위하여 사용 가능한 다양한 다른 파일에 대해, 이들 파일을 제공하는 방법이 유용할 수 있다. 도 22는 일 실시예에서 파일을 원하는 포맷으로 제공하는 방법을 도시한다. 방법(2200)은 파일을 요청하는 단계, 사용 가능한 포맷 리스트를 수신하는 단계, 포맷을 선택하는 단계, 티 켓을 수신하는 단계, 세그먼트를 요청하는 단계, 및 파일의 세그먼트를 수신하는 단계를 포함한다. 따라서, 방법(2200)은 파일을 원하는 포맷으로 요청하고 수신하기 위한 클라이언트 측의 방법을 제공한다.
방법(2200)은 클라이언트가 제목(특정 포맷을 나타내지 않는 영화를 위한 식별자)을 요청할 때 모듈(2210)에서 시작한다. 문제의 제목을 위한 포맷 리스트는 모듈(2220)에서 클라이언트에 의해 수신된다. 모듈(2230)에서, 클라이언트는 희망하는 또는 필요한 포맷을 선택한다. 포맷의 선택은 예컨대 클라이언트와 서버 사이의 협상에 기초하거나(성능에 기초하여 포맷을 자동적으로 선택), 사용자의 선택에 기초하거나, 또는 이전에 이루어진 디폴트 선택에 기초할 수 있다.
포맷의 선택에 응답하여, 영화를 위한 티켓은 모듈(2240)에서 수신된다. 티켓은 예컨대 도 12를 참조하여 상술한 것과 같은 티켓일 수 있다. 따라서, 티켓은 해쉬 값, 티켓이 언제 유효한 지의 표시, 세그먼트의 리스트, 및 디지털 서명 또는 인증서를 포함할 것으로 기대할 수 있다. 티켓을 통해, 클라이언트는 모듈(2250)에서 파일의 세그먼트를 요청한다. 이에 대한 응답으로, 클라이언트는 모듈(2260)에서 세그먼트를 수신한다. 기대할 수 있는 바와 같이, 방법은 모듈(2250과 2260) 사이를 이동할 수 있는데, 모듈은 영화가 완전히 수신될 때까지 잠재적으로 병렬로 동작 또는 실행된다.
파일을 공유하는 예시적인 시스템에 대한 참조가 역시 유용할 수 있다. 도 23은 파일이 공유되는 시스템의 일 실시예를 도시한다. 시스템(2300)은 수퍼 노드, 인자 제공 서버, 클라이언트(A-D) 및 관련 저장부를 포함한다. 도시된 바와 같이, 단일 영화 파일이 공유되고, 예시로서 클라이언트 A(2330)는 세그먼트를 찾고 영화 파일을 재생하는 클라이언트일 수 있다. 따라서 클라이언트 A(2330)는 수퍼 노드(2310)로부터 인증과 작업 티켓을 수신할 것이다. 클라이언트 A(2330)는 그 상태를 주기적이지만 비교적 드물게(예컨대 일 실시예에서는 매 45분마다 1회) 수퍼 노드(2310)에 보고할 수 있다. 도시된 스냅샷에서, 클라이언트 A(2330)는 문제의 영화 파일의 20%를 로컬 저장부(2335)에 저장하고 있다.
클라이언트 A(2330)는 따라서 클라이언트 B(2340), 클라이언트 C(2350) 및 클라이언트 D(2360)로부터 세그먼트를 요청할 수 있다. 클라이언트 B(2340)는 문제의 영화 파일의 9%를 로컬 저장부(2345)에 가지고 있다. 클라이언트 C(2350)는 문제의 영화 파일의 81%를 로컬 저장부(2355)에 가지고 있다. 클라이언트 D(2360)는 문제의 영화 파일의 27%를 로컬 저장부(2335)에 가지고 있다. 세그먼트의 모든 통신, 작업 티켓, 또는 다른 통신은 네트워크(2370)를 따라 다양한 모드에서 발생한다. 따라서, 피어-투-피어 연결은 네트워크(2370)를 따라 구축될 수 있거나, 또는 방송 메시지는 네트워크(2370)를 따라 밖으로 나갈 수 있다. 특별히, 클라이언트 A(2330)는 (예컨대) 클라이언트 C(2350)와의 피어-투-피어 연결을 구축하여 세그먼트의 공유 또는 적어도 세그먼트의 수신을 시작할 수 있다.
만약 세그먼트가 액세스 가능한 어떠한 클라이언트에도 존재하지 않는다면, 세그먼트는 문제의 영화 파일의 100%를 로컬 저장부(2325)에 가지고 있는 인자 제공 서버(2320)로부터 요청될 수 있다. 이것은 바람직하게는 마지막 수단인데, 왜냐 하면 네트워크 상의 피어 간의 공유가 바람직하기 때문이다. 이러한 요청 또한 네 트워크(2370)를 따라 전달된다.
영화를 재생하는 것이 간혹 요구되지만, 영화가 어떻게 재생되는 지는 사용자에게 중요하지 않을 수 있다. 그러나, 콘텐츠 소유자는 영화 또는 긴 콘텐츠 파일이 완벽한 파일로 전송되기보다는 스트리밍되는 것을 선호할 수 있다. 부가적으로, 메모리 제약이 전체 파일의 저장을 어렵게 할 수 있다. 도 24는 일 실시예에서 파일 스트림을 수신하는 방법의 실시예를 도시한다. 방법(2400)은 파일을 요청하는 단계, 대응하는 작업 티켓을 수신하는 단계, 파일의 세그먼트를 요청하는 단계, 버퍼 세그먼트를 수신하는 단계, 파일을 재생하는 단계, 버퍼에 세그먼트 상에서 낮은 상태인지를 결정하는 단계, 낮은 세그먼트 상태에 대해 긴급을 상승시키는 단계, 세그먼트 수신을 지속하는 단계, 재생이 완료되었는지를 결정하는 단계, 및 세그먼트를 폐기하는 단계를 포함한다.
프로세스(2400)는 클라이언트가 모듈(2410)에서 파일 스트림 예컨대 영화 파일에 대한 요청을 제출할 때 시작한다. 작업 티켓이 도 12에 관해 기술된 바와 같이 예컨대 모듈(2420)에서 수신된다. 작업 티켓을 통해, 모듈(2430)에서 클라이언트 또는 사용자는 격자 네트워크를 통해 파일 스트림의 세그먼트를 요청한다. 초기에, 버퍼 세그먼트는 모듈(2440)에서 수신된다. 이들 버퍼 세그먼트는 순차적인 파일의 시작부를 구성하는 세그먼트를 포함할 것이지만, 필요할 때까지 유지될 수 있는 이후의 세그먼트 역시 포함할 수 있다.
충분한 버퍼 세그먼트가 존재할 경우, 모듈(2450)에서, 영화 파일은 재생된다(또는 다른 형태의 순차 파일이 처리된다). 따라서, 충분한 초기 버퍼를 적소에 구비한 후, 파일은 정상 스트리밍에서와 같이 재생을 시작한다. 그러나, 파일의 세그먼트는 예컨대 암호화되지 않은 단순한 패킷이기보다는 위에서 언급한 파일의 세그먼트에 대해 기술한 바와 같이, 암호화되어 구성된다. 재생되는 세그먼트는 적시(just-in-time) 형태의 암호해독 방법(재생할 시간이 되면 재생을 위해 세그먼트가 암호해독되는)과 유사한 방식으로 암호해독된다. 따라서, 암호해독된 세그먼트는 필수적으로 암호해독 방법을 통한 (영화를 위한)화면과 (파일 포맷을 위한)정상 렌더링을 위해 렌더링된다.
모듈(2455)에서, 버퍼가 낮게 동작하는 지(곧 파일의 재생을 지속할 세그먼트가 충분하지 않을 수 있다)에 대한 결정이 이루어진다. 만약 그렇다면, 모듈(2460)에서 긴급 레벨이 증가한다. 긴급 레벨은 예컨대 단순한 파일 요청 또는 파일의 인자 제공과 같은 다양한 설정으로 사용될 수 있다. 긴급 레벨은 세그먼트에 대해 또는 다른 목적으로 요청의 일부로서 전달될 수 있다. 긴급 레벨과는 상관없이, 모듈(2465)에서 방법은 세그먼트 수신을 지속한다. 기대할 수 있는 바와 같이, 방법의 스트리밍 특성이 주어진다면, 모듈(2470)에서 파일의 재생이 지속된다. 모듈(2480)에서 파일의 마지막에 도달하였는지에 대한 결정이 이루어진다. 도달하지 않았다면, 방법은 세그먼트 상태를 결정하기 위해 모듈(2455)로 되돌아가고 그 후 모듈(2465 및 2470)을 통해 지속된다. 만약 파일이 스트리밍됨에 따라 파일의 마지막에 도달하였다면, 방법은 모듈(2490)에서 종료된다. 자세하게 도시되지 않은 것은 렌더링된 세그먼트가 사용 후 거의 연속적으로 폐기된다는 것이다. 따라서, 암호화된 세그먼트는 남겨지지만, 암호화되지 않은 세그먼트는 문제의 세그먼트를 디스플레이(또는 사용)하기에 충분한 시간 동안만 존속된다.
긴급(urgency)은 일반적으로 세그먼트를 요청하기 위해, 그리고 특히 스트리밍하기 위한 강력한 도구를 제공한다. 도 25는 긴급 표현의 일 실시예를 도시한다. 긴급 레벨은 긴급 레벨의 스펙트럼 또는 범위(2500)를 따라 놓일 수 있다. 도시된 바와 같이, 낮은 긴급(2510)(low urgency)은 범위(2500)의 일 단부를 제공한다. 중간 긴급(2520)(medium urgency)은 범위(2500)의 중간 부분을 제공한다. 높은 긴급(2530)(high urgency)은 범위(2500)의 다른 단부를 제공한다. 실제 긴급 레벨은 스칼라 값(긴급 값(2550))으로 엔코딩될 수 있다.
일 실시예에서, 긴급 레벨이 요청을 수신하는 클라이언트에 의해 여전히 서비스하는데 하나의 요인으로 포함되지만, 낮은 긴급은 일반적으로 처리의 정상 진로에서 서비스되는 요청에 대응한다. 이러한 실시예에서, 중간 긴급 요청은 낮은 긴급 요청에 앞서 서비스되고, 예컨대 큐내에서 선호되는 위치에 삽입될 수 있다. 더욱이, 중간 긴급 요청은 범위의 높은 단부 근처에서 예컨대 부가적인 특별한 처리를 수신할 수 있고, 격자 네트워크 내에서 감시될 수 있다. 높은 긴급 요청은 일반적이지 않은 또는 특별한 거동을 유발할 수 있다. 예컨대 격자 네트워크 내의 인자 제공 서버(seed servers)는 예컨대 높은 긴급 요청의 서비스와, 버퍼 언더런(buffer underrun) 조건의 회피를 시작할 수 있다. 더욱이 더 높은 긴급 레벨은 예컨대 더 많은 지원 트랜잭션이 더 높은 긴급 레벨을 통해 클라이언트에게 향하도록 하기 위한 서비스를 유발할 수 있다.
파일의 긴급 및 스트리밍은 예컨대 예시적인 격자 네트워크 실시예를 참조하 여 이해될 수 있다. 도 26은 격자 네트워크의 일 실시예를 도시한다. 네트워크(2600)는 전체적인 네트워크, 인자 제공 서버, 수퍼 노드, 및 클라이언트 A, B 및 C를 포함한다. 네트워크(2600)는 다양한 격자 네트워크를 나타내지만, 이러한 네트워크의 모든 세부사항을 제공하지는 않는다.
전체적인 네트워크(2610)는 예컨대 인터넷 또는 인트라넷과 같은 네트워크이다. 격자 네트워크(2600)를 위한 제어 노드가 될 수 있는 수퍼 노드(2620)가 네트워크(2610)에 접속된다. 다양한 파일의 세그먼트를 제공할 수 있고 네트워크(2600) 상의 세그먼트를 위한 저장부로서 작용할 수 있는 인자 제공 서버(2630)가 또한 네트워크(2610)에 접속된다. 추가로, 클라이언트 A(2640), 클라이언트 B(2660) 및 클라이언트 C(2680)이 네트워크(2610)에 접속된다. 클라이언트 A(2640)에는 세그먼트(2650)가 접속되는데, 이 세그먼트는 로컬 저장부 상에서 클라이언트 A(2640)에 의해 액세스 가능한 세그먼트의 로컬 복제물이다. 유사하게 클라이언트 B(2660)에는 저장부 상에서 클라이언트 B(2660)가 액세스할 수 있는 세그먼트(2670)가 접속된다. 추가적으로, 클라이언트 C(2680)에는 클라이언트 C(2680)가 액세스할 수 있는 로컬 저장부에 저장된 세그먼트(2690)가 접속된다.
따라서, 클라이언트 A(2640)는 스트리밍을 위한 파일을 요청할 수 있다. 파의 세그먼트는 많은 위치 중에서 클라이언트 B(2660)와 클라이언트 C(2680)에 위치할 수 있다. 초기에 클라이언트 A(2640)는 낮은 레벨의 긴급으로 세그먼트를 요청하여, 클라이언트 B(2660)와 클라이언트 C(2680)로부터 다시 세그먼트를 수신할 수 있다. 파일의 재생 도중에 클라이언트 A(2640)가 세그먼트 상에서 낮게 동작한다 면, 그 긴급 레벨을 증가시키고, 세그먼트 요청을 지속할 수 있다. 더 높은 긴급 레벨을 통해, 클라이언트 B(2660)와 클라이언트 C(2680)는 클라이언트 A(2640)로부터의 요청에 더 높은 우선 순위를 부여할 수 있다. 클라이언트 A(2640)가 잠재적인 버퍼 언더런 문제를 계속 갖는다면, 클라이언트 A(2640)는 그 긴급 레벨을 더 증가시킬 수 있다. 이것은 인자 제공 서버(2630)가 클라이언트 A(2640)에 직접 세그먼트를 제공하는 결과를 가져올 수 있다. 더욱이 수퍼 노드(2620)는 예컨대 방법이 시작할 때 사용 가능한 세그먼트의 전체적인 랜드스케이프(landscape)에 따라, 잠재적으로 지원 노력을 클라이언트 A(2640)에 향하게 할 수 있고, 또한 잠재적으로 인자 제공 서버(2630)가 응답하도록 감독할 수 있다.
격자 네트워크가 스트리밍되거나 복제된 파일에 사용될 수 있지만, 두 경우에 있어서 파일의 암호화가 중요할 수 있다. 도 27은 암호화 보호의 일 실시예를 도시한다. 운반, 세그먼트, 로컬 및 플레이어 암호를 포함하는, 보호의 4개 레벨이 잠재적으로 사용 가능하다. 암호 스택(2700)은 암호의 다양한 레벨 또는 계층을 나타내는데, 이들 중 일부 또는 전부가 주어진 파일을 위해 사용할 수 있다.
암호의 각 계층을 차례로 참조하면, 운반 암호(2710)는 운반(예컨대 한 가지 또는 다른 형태의 디지털 인증서 또는 디지털 서명을 통해)시의 세그먼트 또는 패킷의 암호를 나타낸다. 따라서, 임의의 형태의 각 세그먼트는 네트워크를 통해 송신될 때 암호화될 수 있다. 세그먼트 암호(2720)는 예컨대 도 14 및 도 15에 관해 위에서 언급한 바와 같이 파일 내의 다양한 세그먼트의 암호를 언급한다. 따라서, 세그먼트는 통합된 전체 파일의 일부로서 암호화될 수 있어서, 세그먼트를 전체 파 일 없이는 사용하기 힘들게 만든다.
로컬 암호 계층(2730)은 로컬 저장부 내의 암호를 언급한다. 따라서, 세그먼트는 도 28에서 인용하는 로컬 저장부에 저장될 수 있고, 저장부의 저장은 임의의 다른 암호 이외의 암호 단계를 수반할 수 있다. 플레이어 암호 계층(2740)은 다양한 미디어 포맷 또는 플레이어로부터 사용 가능한 암호 선택사항을 언급한다. 따라서, 미디어 플레이어는, 예컨대 그 플레이어가 특정 포맷을 암호해독 할 수 있는 상태에서, 그 특정 포맷의 일부 파일 또는 모든 파일을 자동적으로 암호화할 수 있다. 인증된 미디어 플레이어가 없다면, 이러한 파일을 암호 해독하기는 어려울 것이다. 미디어 플레이어에 의해 구현되는 DRM 즉 디지털 권한 관리는 예컨대 이러한 플레이어를 제공할 수 있다.
암호화되었는지의 여부에 상관없이 세그먼트는 사용 도중에 어딘가에 저장되어야 한다. 일부의 면에서, 클라이언트의 격자 네트워크는 파일을 분산된 방식으로 네트워크를 통해 부분적으로 저장하는 대형 저장 네트워크로서 기능할 수 있다. 도 28은 격자 네트워크의 일 실시예에서 클라이언트의 일 실시예를 도시한다. 각 클라이언트(2800)는 실행가능 부분과 세그먼트 저장부 부분(segment repository)을 포함하고, 로컬 저장부의 사용을 기대할 수 있다. 실행가능 부분(2810)은, 프로세서 또는 머신에 의해 실행될 때 그 방법을 구현하고 그 기능을 수행하는, 클라이언트 내에 포함된 코드의 실행 가능 부분일 수 있다.
세그먼트 저장부(2820)는, 파일 재생시 사용하기 위해, 그리고 다른 클라이언트와의 교환을 위해 세그먼트를 저장하는 로컬 저장부 내에서 클라이언트에 의해 구현되는 저장부가 될 수 있다. 일 실시예에서 세그먼트 저장부(2820)는 의미 있는 방식으로 클라이언트(2800)에 의해서만 액세스될 수 있도록 의도되는 암호화된 데이터의 저장부이다. 따라서, 세그먼트는 세그먼트 저장부(2820)에 저장될 수 있지만, 의미 있는 방식으로 실행 가능한 부분(2810)에 의해서만 검색될 수 있다. 세그먼트 저장부(2820)에 저장된 대부분의 세그먼트에 대해, 이러한 점은 전체 저장부의 암호화 때문에 누군가가 세그먼트에 대해 인증 받지 못한 액세스를 획득하는 것을 어렵게 만든다. 더욱이, 적은 세그먼트가 로컬 저장부(2830)(세그먼트 저장부(2820) 이외에)에 저장될 수 있다. 이것은 메모리 캐싱으로 언급된다(일부 세그먼트를 다른 메모리(꼭 특정 고속 메모리는 아님)에 유지). 적은 세그먼트를 저장부 밖에 유지함으로써, (이것은 단순히 저장부를 복사한다는 것이 전체 파일이 복사되는 것을 의미하지 않는다) 간격이 존재한다. 더욱이, 저장부와 개별 세그먼트 모두의 암호화로 인해, 이러한 상황은, 조각의 형상이 열악하게 정의되고 따라서 어느 퍼즐 조각이 사용 가능한 지의 결정이 특별히 도전적인 것이 될 수 있는, 퍼즐과 공통점이 있을 수 있다. 그러나, 메모리 캐싱이 본 시스템에서 구현될 필요는 없음을 주목해야 한다.
실제 격자 네트워크 실시예의 고려는 네트워크와 그 클라이언트의 일부 관련 양상을 더 도시할 수 있다. 도 29는 격자 네트워크의 다른 실시예를 도시한다. 격자 네트워크(2900)는 수퍼 노드, 인자 제공 서버 및 클라이언트의 모음을 갖는 것으로 도시되었다. 네트워크(2990)는 다양한 클라이언트와 서버를 접속시키는 인터넷 또는 다른 네트워크와 같은 네트워크이다.
수퍼 노드(2910)는 네트워크(2990)에 접속된 네트워크(2900) 내의 수퍼 노드이다. 수퍼 노드(2910)는 격자 네트워크(2900)의 일부 동작을 감독하고, 격자 네트워크(2900)의 다른 부분을 위한 일부 프로파일 정보를 유지한다. 따라서, 수퍼 노드(2910)는 격자 네트워크 상의 다양한 클라이언트에 관한 프로파일 정보를 유지할 수 있고, 격자 네트워크 상의 파일에 관한 프로파일 정보를 또한 유지할 수 있다. 클라이언트를 위한 프로파일 정보는 클라이언트가 어떤 정보를 저장하는지, 클라이언트가 네트워크(2990)에 연결한 연결 형태가 어떤 형태인지 그리고 클라이언트가 네트워크 상의 어느 곳에 (대략) 위치하는지를 나타낼 수 있다. 파일에 관련된 프로파일 정보는 예컨대 어느 노드가 어떠한 파일의 세그먼트, 파일 형태, 파일 세그먼트의 수를 갖는 지에 대한 정보를 포함할 수 있다. 수퍼 노드(2910)는 이들 프로파일과 다른 관리 데이터가 저장될 수 있는 로컬 저장부(2913)를 갖는 것으로 도시되었다. 또한 네트워크(2990)에 접속되는 것은 각각이 유사한 서비스를 제공할 수 있는 수퍼 노드(2930)와 수퍼 노드(2950)이다.
수퍼 노드와 함께 인자 제공 서버(2920)가 또한 네트워크(2990)에 접속된다. 인자 제공 서버(2920)는 파일의 세그먼트를 로컬 저장부(2923)에 유지할 수 있다. 더욱이, 인자 제공 서버(2920)는 파일로부터의 세그먼트를 다양한 클라이언트에 전달함으로써 이들 세그먼트의 인자를 네트워크에 제공한다. 이러한 인자 제공은, 파일의 복제물을 네트워크 내에서 분산된 형태로 생성하기 위하여, 파일 세그먼트를 주도적으로 밖으로 전달함으로써 처리될 수 있다. 더욱이 파일로부터의 세그먼트는 일부 상황에서 클라이언트로부터의 요청에 응답하여 인자 제공 서버에 의해 제공될 수 있다. 그러나, 인자 제공 서버에 의한 제공은 세그먼트의 네트워크 관리 거래 및 클라이언트 사이의 세그먼트의 교환을 가지려는 노력으로 인해, 싫어하는 선택사항이 될 수 있다. 또한 네트워크(2990)에 접속된 것은 로컬 저장부(2943 및 2963)를 갖는 인자 제공 서버(2940 및 2960)이다.
네트워크(2990)에 추가로 접속된 것은 클라이언트(2915, 2925, 2965 및 2975)이다. 클라이언트 A(2925)는 로컬 저장부(2918)를 갖는 것으로 도시된 반면에, 클라이언트 B(2915)는 로컬 저장부(2918)를 갖고, 클라이언트 C(2965)는 로컬 저장부(2968)를 갖고, 클라이언트 D(2975)는 로컬 저장부(2978)를 갖는다. 각 클라이언트는 로컬 저장부에 저장된 다수의 파일로부터 일부 세그먼트를 갖도록 예정될 수 있다. 하나의 클라이언트가 파일을 위한 세그먼트를 찾고 있을 때, 수퍼 노드는 해당 세그먼트를 저장하는 클라이언트의 리스트를 제공할 수 있고, 찾고 있는 클라이언트는 이러한 세그먼트를 요청할 수 있다.
도시된 네트워크 토폴로지가 주어질 경우, 클라이언트는 세그먼트의 피어-투-피어 전달에 개입할 수 있다. 네트워크를 감시하기 위하여, 수퍼 노드(2910)는 클라이언트(2915, 2925, 2965 및 2975)로부터 주기적인 갱신을 요청할 수 있다. 이러한 갱신은 다양한 클라이언트의 주기적인 핑잉(pinging)을 필요로하지 않으면서 네트워크 상태의 유지보수를 가능케 한다. 부가적으로, 서버(2920)와 같은 인자 제공 서버는 피어-투-피어 방식으로 네트워크에 인자를 제공할 수 있다. 유사하게, 인자 제공 서버(2920)는 필요한 경우 클라이언트로부터의 세그먼트를 위한 긴급 요청을 서비스할 수 있다. 더욱이, 요청 서비스는 알려진 서비스를 사용하여 알려진 방식 으로 이루어진 가장 가까운 노드 결정에 기초할 수 있다(따라서 너무 많은 네트워크 혼잡을 회피한다). 그러므로, 수퍼 노드는 클라이언트에게 어느 클라이언트가 어느 세그먼트를 갖는지의 리스트뿐만 아니라, 특별한 클라이언트에 기초하여 각 클라이언트가 얼마나 가까운지에 대한 표시도 제공할 수 있다. 만약 클라이언트 A(2925)가 네트워크 상에서 클라이언트 B(2915)에 인접하고, 클라이언트 C(2965) 및 클라이언트 D(2975)로부터 더 멀리 떨어져 있다면, 클라이언트 B(2915)에 대한 요청이 선호될 것이다. 유사하게, 만약 클라이언트 A(2925)가 네트워크 상에서 인자 제공 서버(2920)에 인접해 있고, 인자 제공 서버(2960)로부터 멀리 있다면, 예컨대 클라이언트 A는 인자 제공 서버(2960)보다는 인자 제공 서버(2920)로부터 인자를 제공받을 것이다.
인자 제공 서버는 잠재적으로 어느 곳에나 제공될 수 있다-인자 제공 서버는 (네트워크 홉(hop)으로 측정할 때) 네트워크 상에 논리적으로 근접해 있는 하나의 머신에 물리적으로 가까이 있을 필요는 없다. 따라서, 인자 제공 서버는 많은 클라이언트에 근접성을 달성하도록 유리하게 위치할 수 있다. 부가적으로, 대부분의 주요 네트워크는 네트워크 내의 대역폭(하나의 네트워크 상의 한 곳으로부터 동일한 네트워크 상의 다른 곳으로)이 상대적으로 값싸지만, 네트워크 밖의 대역폭(다른 네트워크 상의 위치에 또는 이로부터의 연결을 허용하는)은 값이 비싸다는 원칙에 따라 동작한다. 이러한 점은 네트워크 교환이 주요 네트워크 사이에서 어떻게 처리되고 가격이 메겨지는 지의 결과이다.
따라서, 인자 제공 서버를 많은 다른 네트워크 상에 제공하는 것이 유리할 수 있다. 이는 주어진 네트워크 상의 인자 제공 서버가 주어진 동일한 네트워크 상의 클라이언트로부터의 요청에 서비스할 수 있도록 한다. 부가적으로, 각 네트워크 상의 다수의 인자 제공 서버를 통해, 부하-균형 조정(load-balancing) 및 고장-방지(fault-tolerance)가 각 네트워크의 인자 제공 서버 내에서 구현될 수 있다. 따라서, 격자 네트워크 운영자는 인자 제공 서버를 다양한 네트워크 상에 위치시켜, 네트워크 운영자에게 격자 네트워크의 대역폭이 다양한 네트워크에 기본적으로 또는 배타적으로 국부적임을 통보할 수 있다. 이것은 잠재적으로 격자 네트워크 운영자와 하부의 네트워크 운영자를 위한 비용 절감을 허용한다. 흥미롭게도 예컨대 캘리포니아주의 산호세와 워싱톤주의 시애틀에서 네트워크가 모이는 곳과 같은 일부 물리적인 위치는 작은 물리적인 공간 내에서 많은 다른 네트워크 상에 서버를 위치시키는 것을 허용한다.
격자 네트워크에 인자를 제공하는 것은 초기에 파일이 공유될 때 훌륭한 결과를 제공할 수 있다. 예컨대, 인자 제공 없이 격자 네트워크에 대한 영화의 방출은 파일 세그먼트에 대한 액세스에 인자 제공 서버만이 사용 가능하기 때문에, 영화에 대한 요구에서 잠재적이고 즉각적인 스파이크(spike)를 수반할 것이다. 도 30은 격자 네트워크에 인자를 제공하는 방법의 일 실시예를 도시한다. 파일의 복제물을 가진 네트워크에 예상된 스파이크에 앞서 인자를 제공할 수 있다(파일을 시청하기 위한 초기 인증과 같은). 프로세스(3000)는 파일을 수신하는 단계, 분산을 예측하는 단계, 선택된 인자 제공 서버에 파일을 유포하는 단계, 파일을 선택된 클라이언트에 유포하는 단계, 및 네트워크 내의 관련 프로파일을 갱신하는 단계를 포함한 다.
파일이 모듈(3010)에서 수신될 때, 파일은 방출되거나 또는 이 후 곧 방출을 위해 인증되도록 예정될 수 있다. 그러나, 모듈(3020)에서 파일의 분산에 대한 예측이 이루어질 수 있다. 이러한 예측은 분산이 얼마나 자주 있는 지에 대한 템플릿(예, 공상과학물은 하나의 알려진 방식으로 분산될 수 있고, 역사 다큐멘터리는 다른 알려진 방식으로 분산될 수 있다)에 기초할 수 있다. 대안적으로, 이러한 예측은 예컨대 미디어 소유자가 무엇이 발생하기를 원하는 지(무엇에 대해 지불하려 하는 지)에 기초할 수 있다. 따라서, 예측은 인자 제공 또는 사전방출을 위해 파일이 어느 곳에 유포되어야 하는지를 포함할 수 있다.
모듈(3030)에서, 파일은 인자 제공 서버에 인자가 제공된다(모듈(3020)의 예측된 분산과 관련하여 확인된 서버에 복사된다). 이것은 지리적인 (실제 또는 논리적인) 위치, 서버의 대역폭 및 다른 고려사항에 기초할 수 있다. 유사하게, 모듈(3040)에서, 파일은 선택된 클라이언트에 전체적으로 또는 부분적으로 유포된다. 이것은 유사하게 예컨대 네트워크 내의 위치에 기초할 수 있다. 더욱이, 이것은 관련 영화를 시청하는 기호, 대역폭 및 연결 특성, 인자 제공 클라이언트로서 동작하기 위한 자발성, 현재 저장된 파일의 혼합물, 및 다른 고려사항과 같은 클라이언트의 관찰된 활동에 기초할 수 있다. 두 인자 제공 서버에서 그리고 클라이언트에서 인자가 제공된 파일에 대해, 네트워크 내의 프로파일(수퍼 노드에서와 같은)이 갱신된다. 이것은 인자 제공의 완료가 관찰된 이후 발생할 파일의 실제 방출 또는 인증을 허용한다. 이러한 프로파일의 갱신으로 인해, 수퍼 노드에서 프로파일을 단순 히 재조사함으로써 인자 제공이 감시될 수 있어서, 예컨대 상태에 대해 각 클라이언트를 핑잉함이 없이, (연속적인 프로파일 갱신으로 인해) 상대적으로 최신 인자 제공 방법의 스냅샷(snapshot)을 허용함을 주목해야 한다.
인자 제공을 더 이해하기 위하여, 네트워크의 다른 예시적인 실시예가 도움이 된다. 도 31은 인자 제공된 격자 네트워크의 일 실시예를 도시한다. 시스템(3100)은 클라이언트, 인자 제공 서버, 그리고 두 편의 다른 영화의 인자를 제공 받은 수퍼 노드의 네트워크이다. 예컨대, 본 실시예에서 "This is Spinal Tap"의 복사본과 "Barney's Big Adventure"의 복사본으로 인자가 제공될 수 있다.
네트워크(3110)는 인터넷과 같은 네트워크이다. 감독과 관리 기능을 제공하는 수퍼 노드(3120)가 네트워크(3110)에 접속된다. 또한 인자 제공 서버(3130)와 관련 저장부(3135)가 네트워크(3110)에 접속된다. 도시된 바와 같이, 인자 제공 서버(3130)는 저장부(3135)에 각 영화의 복사본(각 세그먼트의 100%)을 구비한다.
클라이언트 1(3140)이 네트워크(3110)에 접속되며, 저장부(3145)를 구비한다. 저장부(3145)는 제 1영화 세그먼트의 6%와 제 2영화 세그먼트의 20%를 구비한다. 클라이언트 2(3150)는 마찬가지로 네트워크(3110)에 접속되고, 제 1영화의 30%와 제 2영화의 10%를 가진 저장부(3155)를 구비한다. 클라이언트 3(3160)은 마찬가지로 네트워크(3110)에 접속되고, 제 1영화의 70%와 제 2영화의 15%를 가진 저장부(3165)를 구비한다. 마지막으로 클라이언트 4(3170)는 마찬가지로 저장부(3175)를 구비하고 네트워크(3110)에 접속된다. 저장부(3175)는 제 1영화의 9%와 제 2영화의 45%를 구비한다.
수퍼 노드(3120)의 저장부(3125)는 각 클라이언트(1-4)에 어떤 세그먼트가 있는지에 대한 정보를 추적한다. 일 실시예에서, 모든 클라이언트는 그들의 암호화된 세그먼트 데이터 저장부의 콘텐츠에 대한 정보를 포함하여 그들의 상태에 대해 주기적으로 보고한다. 일 실시예에서 이러한 보고는 매 45분마다 발생하지만, 다른 타이머 간격이 사용될 수도 있다. 각 영화의 백분율이 각 클라이언트에 대해 도시되었지만, 어느 세그먼트인지는 도시되지 않았다. 각 클라이언트에서 파일의 백분율은 각 클라이언트를 위해 저장부(3125)에 저장될 수 있다. 더욱이, 예시 목적을 위하여, 각 영화 파일은 각 클라이언트 저장부(3145, 3155, 3165 및 3175)에 동일한 순서로 저장되었다고 간주한다. 꼭 이러할 필요는 없는데, 왜냐 하면 랜덤 액세스 저장부가 구현될 수 있기(그리고 바람직할 수 있기) 때문이다. 두 파일을 위한 세그먼트 공유가 발생할 때, 클라이언트 3은 "This is Spinal Tap"에 대해 훌륭한 소스이고, "Barney's Big Adventure"에 대해 결함이 있는 소스일 수 있다. 클라이언트 4에 대해선 그 반대일 수 있다.
"Barney's Big Adventure"의 완전한 복사가 꼭 제공되는 것은 아니며, 반면에 "This is Spinal Tap"에 대한 일부 복사가 각 영화의 백분율에 기초하여 필요함을 역시 주목해야 한다. 그러나, 세그먼트는 네트워크의 인자 제공 선호도와 용도에 의존하여, 네트워크 전체에 걸쳐 복사될 수 있거나, 또는 인자 제공 서버에만 출현할 수 있다. 또한, 도면이 네트워크의 스냅샷을 도시하고, 세그먼트의 전달이 이러한 스냅샷 이후 발생할 수 있어서, 후속하는 스냅샷 이후 다른 네트워크 상태를 초래함을 주목해야 한다.
도 32는 격자 네트워크를 구현하기 위해 사용할 수 있는 네트워크 일 실시예를 도시한다. 도 33은 격자 네트워크에 사용될 수 있는 머신의 일 실시예를 도시한다. 도 32 및 도 33의 다음 설명은 위에서 그리고 아래에서 설명되는 본 발명의 방법을 수행하는데 적절한 디바이스 하드웨어와 다른 운영 성분의 개요를 제공하기 위한 것이지만, 적용 가능한 환경을 제한하려는 것은 아니다. 유사하게, 하드웨어 및 다른 운영 성분은 상술한 장치의 일부로서 적합할 수 있다. 본 발명은 개인용 컴퓨터, 멀티프로세서 시스템, 프로그램 가능한 가전 제품에 기초한 마이크로프로세서, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 시스템 구성으로도 실시될 수 있다. 본 발명은 또한 임무가 통신 네트워크를 통해 연결된 원격 처리 디바이스에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다.
도 32는 인터넷과 같은 네트워크(3205)를 통해 서로 접속된 수 개의 컴퓨터 시스템과 함께 셀룰러 네트워크와 관련 셀룰러 디바이스를 도시한다. 본 명세서에서 사용되는 "인터넷"이라는 용어는 TCP/IP 프로토콜과 같은 특정 프로토콜, 혹은 월드와이드웹(web)을 구성하는 하이퍼텍스트 생성 언어(HTML) 문서를 위한 하이퍼텍스트 전송 프로토콜(HTTP)과 같은 다른 프로토콜을 사용하는 네트워크의 네트워크를 지칭한다. 인터넷의 물리적인 연결과 인터넷의 프로토콜 및 통신 절차는 당업자에게 잘 알려져 있다.
인터넷(3205)에 대한 액세스는 ISP(3210 및 3215)와 같은 인터넷 서비스 제공자(ISP)에 의해 제공된다. 클라이언트 컴퓨터 시스템(3230, 3250 및 3260)과 같은 클라이언트 시스템 상의 사용자는 ISP(3210 및 3215)와 같은 인터넷 서비스 제 공자를 통해 인터넷에 대한 액세스를 획득한다. 인터넷에 대한 액세스는 클라이언트 컴퓨터 시스템의 사용자가 정보를 교환하고, 이-메일을 수신 및 송신하고, HTML 포맷으로 준비된 문서와 같은 문서를 보는 것을 허용한다. 이들 문서는 간혹 인터넷 상에 있는 것으로 간주되는 웹 서버(3220)와 같은 웹 서버에 의해 제공된다. 간혹 이들 웹 서버는, 비록 컴퓨터 시스템이 역시 ISP인 시스템 없이도 설정되어 인터넷에 연결될 수 있다할지라도, ISP(3210)와 같은 ISP에 의해 제공된다.
웹 서버(3220)는 전형적으로 적어도 하나의 컴퓨터 시스템인데, 이 시스템은 서버 컴퓨터 시스템으로서 동작하고, 월드 와이드 웹의 프로토콜로서 동작하도록 구성되고, 인터넷에 접속된다. 선택적으로, 웹 서버(3220)는 클라이언트 시스템을 위해 인터넷에 대한 액세스를 제공하는 ISP의 일부가 될 수 있다. 웹 서버(3220)는 그 자체가 웹 콘텐츠(3295)에 접속된 서버 컴퓨터 시스템(3225)에 접속된 것으로 도시되었고, 이러한 웹 콘텐츠는 미디어 데이터베이스의 한 형태로 간주될 수 있다. 도 32에 두 개의 컴퓨터 시스템(3220 및 3225)이 도시되었지만, 웹 서버 시스템(3220)과 서버 컴퓨터 시스템(3225)은 웹 서버 기능과, 서버 컴퓨터 시스템(3225)에 의해 제공되고 이하에서 더 설명되는 서버 기능을 제공하는 다른 소프트웨어 성분을 갖는 하나의 컴퓨터 시스템일 수 있다.
셀룰러 네트워크 인터페이스(3243)는 셀룰러 네트워크와, 한쪽에서는 대응하는 셀룰러 디바이스(3244, 3246 및 3248) 사이, 다른 쪽에서는 네트워크(3205) 사이의 인터페이스를 제공한다. 휴대전화, 양방향 페이저, PDA 또는 유사한 디바이스를 포함하는 개인용 디바이스일 수 있는 셀룰러 디바이스(3244, 3246 및 3248)는 네트워크(3205)와 연결되어, 예컨대 이메일, 콘텐츠, 또는 HTTP-포맷 데이터와 같은 정보를 교환할 수 있다. 셀룰러 네트워크 인터페이스(3243)는 컴퓨터(3240)에 접속되고, 이 컴퓨터는 모뎀 인터페이스(3245)를 통해 네트워크(3205)와 통신한다. 컴퓨터(3240)는 개인용 컴퓨터, 서버 컴퓨터 등이 될 수 있고, 게이트웨이로서 작용한다. 따라서, 컴퓨터(3240)는 예컨대 클라이언트 컴퓨터(3250 및 3260) 또는 게이트웨이 컴퓨터(3275)와 유사할 수 있다. 소프트웨어 또는 콘텐츠는 인터페이스(3243), 컴퓨터(3240) 및 모뎀(3245)에 의해 제공된 연결을 통해 업로드되거나 다운로드될 수 있다.
클라이언트 컴퓨터 시스템(3230, 3250 및 3260)은 각각 적절한 웹 브라우징 소프트웨어와 함께 웹 서버(3220)가 제공한 HTML 페이지를 볼 수 있다. ISP(3210)는 클라이언트 컴퓨터 시스템(3230)의 일부분으로서 고려될 수 있는 모뎀 인터페이스(3235)를 통해 클라이언트 컴퓨터 시스템(3230)에 인터넷 연결을 제공한다. 클라이언트 컴퓨터 시스템은 개인용 컴퓨터 시스템, 네트워크 컴퓨터, 웹 tv 시스템 또는 다른 컴퓨터 시스템이 될 수 있다.
유사하게 ISP(3215)는, 비록 도 32에 도시된 바와 같이, 보다 더 직접적으로 연결된 컴퓨터 시스템과 동일하게 연결되어 있지 않다 해도, 클라이언트 시스템(3250 및 3260)을 위한 인터넷 연결을 제공한다. 클라이언트 컴퓨터 시스템(3250 및 3260)은 게이트웨이 컴퓨터(3275)를 통해 연결된 LAN의 일부이다. 도 32가 인터페이스(3235 및 3245)를 일반적으로 "모뎀"으로서 도시하지만, 이들 인터페이스 각각은 아날로그 모뎀, ISDN 모뎀, 케이블 모뎀, 위성 송신 인터페이스(예, "직접 PC"), 또는 컴퓨터 시스템을 다른 컴퓨터 시스템에 접속시키는 다른 인터페이스가 될 수 있다.
클라이언트 컴퓨터 시스템(3250 및 3260)은 네트워크 인터페이스(3255 및 3265)를 통해 LAN(3270)에 접속되는데, 이들 네트워크 인터페이스는 이더넷 네트워크 또는 다른 네트워크 인터페이스일 수 있다. LAN(3270)은 또한 LAN을 위해 방화벽과 다른 인터넷 관련 서비스를 제공할 수 있는 게이트웨이 컴퓨터 시스템(3275)에 접속된다. 이러한 게이트웨이 컴퓨터 시스템(3275)은 클라이언트 컴퓨터 시스템(3250 및 3260)에 인터넷 연결을 제공하기 위하여 ISP(3215)에 접속된다. 게이트웨이 컴퓨터 시스템(3275)은 종래의 서버 컴퓨터 시스템이 될 수 있다. 또한 웹 서버 시스템(3220)은 종래의 서버 컴퓨터 시스템이 될 수 있다.
대안적으로, 서버 컴퓨터 시스템(3280)은, 게이트웨이 시스템(3275)을 통해 인터넷에 연결될 필요 없이 클라이언트(3250, 3260)에 파일(3290)과 다른 서비스를 제공하기 위하여, 네트워크 인터페이스(3285)를 통해 LAN(3270)에 직접 접속될 수 있다. 도 33은 휴대전화(3244, 3246 또는 3248) 또는 유사한 개인용 디바이스로서 사용될 수 있는 개인용 디바이스의 일 예를 도시한다. 이러한 디바이스는 전화 통신, 양방향 페이저 통신, 개인이 조직하는, 또는 유사한 기능과 같은 구현에 따라 많은 기능을 수행하는데 사용될 수 있다. 도 33의 시스템(3300)은 개인용 컴퓨터, 네트워크 컴퓨터, 또는 다른 유사한 시스템과 같은 다른 디바이스를 구현하는데 사용될 수도 있다. 컴퓨터 시스템(3300)은 통신 인터페이스(3320)를 통해 외부 시스템에 인터페이스한다. 휴대전화에 있어서, 이러한 인터페이스는 전형적으로 셀룰러 네트워크와의 통신을 위한 무선 인터페이스이고, 즉시 사용 가능한 개인용 컴퓨터와 함께 사용하기 위한 유선 인터페이스의 일부 형태를 포함할 수도 있다. 양방향 페이저에 있어서, 통신 인터페이스(3320)는 전형적으로 데이터 송신 네트워크와 통신하기 위한 무선 인터페이스이지만, 유사하게 유선 또는 크래들형(cradled) 인터페이스를 역시 포함할 수 있다. PDA에 있어서, 통신 인터페이스(3320)는 전형적으로 크래들형 또는 유선 인터페이스를 포함하고, 예컨대 블루투스 또는 802.11 인터페이스와 같은 무선 인터페이스, 또는 셀룰러 무선 인터페이스의 일부 형태를 포함할 수 있다.
컴퓨터 시스템(3300)은, 인텔사의 펜티엄 프로세서 또는 모토롤라사의 파워 PC 마이크로프로세서, 텍사스 인스트루먼트사의 디지털 신호 프로세서과 같은 종래의 마이크로프로세서, 또는 두 가지 형태 또는 프로세서의 조합이 될 수 있는 프로세서(3310)를 포함한다. 메모리(3340)는 버스(3370)를 통해 프로세서(3310)에 접속된다. 메모리(3340)는 동적인 랜덤 액세스 메모리(DRAM)가 될 수 있고, 정적인 RAM(SRAM)도 포함할 수 있거나, 또는 FLASH EEPROM 역시 포함할 수 있다. 버스(3370)는 프로세서(3310)를 메모리(3340)에, 또한 비휘발성 저장부(3350)에, 디스플레이 제어기(3330)에, 그리고 입출력(I/O) 제어기(3360)에 접속시킨다. 디스플레이 제어기(3330)와 I/O 제어기(3360)는 함께 집적될 수 있고, 디스플레이 역시 입력을 제공할 수 있다.
디스플레이 제어기(3330)는 종래의 방식으로 디스플레이 디바이스(3335) 상에서 디스플레이를 제어하는데, 이러한 디스플레이 디바이스는 전형적으로 액정 디 스플레이(LCD) 또는 유사한 평판의 소형 폼팩터(small form factor) 디스플레이이다. 입출력 디바이스(3355)는 키보드, 또는 스타일러스 및 터치 스크린을 포함할 수 있고, 간혹 디스크 드라이브, 프린터, 스캐너, 및 마우스 또는 다른 포인팅 디바이스를 포함하는 다른 입력 및 출력 디바이스를 포함하도록 확장될 수 있다. 디스플레이 제어기(3330)와 I/O 제어기(3360)는 종래의 잘 알려진 기술을 통해 구현될 수 있다. 디지털 영상 입력 디바이스(3365)는 디지털 카메라가 될 수 있고, 디지털 카메라는 디지털 카메라의 영상을 디바이스(3300)에 입력하기 위하여 I/O 제어기(3360)에 접속된다.
비휘발성 저장부(3350)는 간혹 FLASH 메모리 또는 ROM, 또는 이들의 조합이다. 대용량 데이터를 위한 자기 하드디스크, 광 디스크 또는 다른 형태의 저장부 역시, 이들 디바이스의 폼팩터가 디바이스(3300)의 영구적인 구성성분으로서의 설치는 배제하지만, 일부 실시예에서 사용될 수 있다. 오히려, 다른 컴퓨터 상의 대용량 디바이스는 디바이스(3300)의 보다 더 제한된 저장과 관련하여 전형적으로 사용된다. 이러한 데이터의 일부는 간혹 직접 메모리 액세스 과정을 통해 디바이스(3300)에서 소프트웨어의 실행 도중에 메모리(3340)에 기록된다. 당업자는 즉각적으로 "머신 판독형 매체" 또는 "컴퓨터 판독 가능한 매체"라는 용어가 프로세서(3310)에 의해 액세스 가능한 임의의 형태의 저장 디바이스를 포함하고, 디지털 신호를 엔코딩하는 반송파를 포함함을 인식할 것이다.
디바이스(3300)는 다른 구조를 갖는 가능한 많은 디바이스 중에서 하나의 예이다. 예컨대, 인텔사의 마이크로프로세서에 기반한 디바이스는 간혹 다수의 버스 를 갖고, 이중에서 하나는 주변장치를 위한 입출력(I/O) 버스 및 프로세서(3310)와 메모리(3340)를 직접 연결하는 버스(간혹 메모리 버스로 지칭)가 될 수 있다. 버스는 다른 버스 프로토콜로 인해 임의의 필요한 변환을 수행하는 브리지 성분을 통해 서로 연결된다.
덧붙여, 디바이스(3300)는 운영체계 소프웨어에 의해 제어되고, 운영체계 소프웨어는 운영체계 소프웨어의 일부인 디스크 운영체계와 같은 파일 관리 시스템을 포함한다. 관련 파일 관리 시스템 소프트웨어를 구비한 운영체계 소프웨어의 일 예는 워싱톤주 레드먼드에 소재하는 마이크로소프트사의 Windows CE®와 Windows®으로 알려진 운영체계군과 관련된 파일 관리 시스템이다. 관련 파일 관리 시스템 소프트웨어를 구비한 운영체계 소프웨어의 다른 예는 Palm® 운영체계와 관련된 파일 관리 시스템이다. 파일 관리 시스템은 전형적으로 비휘발성 저장부(3350)에 저장되어 프로세서(3310)가 파일을 비휘발성 저장부(3350)에 저장하는 것을 포함하여, 데이터를 입출력하고 데이터를 메모리에 저장하기 위하여 운영체계가 필요로 하는 다양한 동작을 실행하게 한다. 다른 운영체계는 디바이스의 제조자에 의해 제공되고, 이들 운영체계는 유사한 디바이스 상의 유사한 운영체계의 부분이 아닌 디바이스 특정 특성을 가질 것이다. 유사하게 WinCE®와 Palm® 운영체계는 특정 디바이스 성능을 위하여 특정 디바이스에 응용할 수 있다.
디바이스(3300)는 일부 실시예에서 단일 칩 또는 칩 세트에 집적될 수 있고, 전형적으로 개인용 디바이스로서의 사용을 위해 소형 폼팩터에 꼭 맞게 만들어진 다. 따라서, 프로세서, 버스, 온보드 메모리 및 디스플레이/I-O 제어기가 모두 단일 칩에 집적되는 것은 드문 일이 아니다. 대안적으로, 기능들이 점대점 상호연결을 갖는 수 개의 칩에 분할될 수 있고, 이 경우 버스는 실제 디바이스 또는 관련 개략도의 검사로부터 논리적으로 명백하지만 물리적으로는 명백하지 않게 한다.
상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 동작 알고리즘과 상징적 표현에 관해 제공되었다. 이들 알고리즘에 관한 설명과 표현은 작업의 요지를 다른 당업자에게 가장 효과적으로 전달하기 위하여 데이터 처리 분야의 당업자가 사용하는 수단이다. 본 명세서에서 알고리즘은 일반적으로 원하는 결과를 야기하는 자기모순이 없는 동작의 시퀀스인 것으로 생각된다. 동작은 물리적인 양의 물리적인 조작을 필요로 하는 것이다. 필수적인 것은 아니지만, 주로 이들 양은 저장, 전달, 결합, 비교 및 달리 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이들 신호를 비트, 값, 요소, 심벌, 문자, 기간, 숫자 등으로 인용하는 것이 기본적으로는 일반적인 사용으로 인해 때때로 편리한 것으로 증명되었다.
그러나, 이들 및 유사한 용어 모두가 적절한 물리적인 양과 관련될 것이고, 이들 양에 부가되는 단순히 편리한 부호임을 명심해야 한다. 다음의 논의로부터 명백하듯이 특별히 달리 언급하지 않는 한, 명세서 전체에 걸쳐 "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "디스플레이하는" 등의 용어를 사용하는 논의는, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적인(전자적인) 양으로 표현된 데이터를 조작하여 컴퓨터 시스템의 레지스터 또는 메모리 또는 정보 저장, 송신 또는 디스플레이 디바이스와 같은 다른 것 내의 물리적인 양으로서 유사하게 표현 된 다른 데이터로 변환시키는, 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 또는 방법을 언급한다.
본 발명은 일부 실시예에서 본 명세서의 동작을 수행하는 장치에 관한 것이다. 본 장치는 필요한 목적을 위하여 특별히 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 동작하거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 플로피 디스크, 광 디스크, CD-ROM, 및 광-자기 디스크를 포함하는 임의 형태의 디스크, 판독전용메모리(ROM), 랜덤액세스메모리(RAM), EPROM, EEPROM, 자기 또는 광 카드, 또는 전자 명령을 저장하기에 적합하고 각각이 컴퓨터 시스템 버스에 접속된 임의 형태의 미디어와 같은 컴퓨터 판독 가능한 저장 매체에 저장될 수 있지만 이에 국한되는 것은 아니다.
본 명세서에서 제공된 알고리즘 및 디스플레이는 고유하게 임의의 특정 컴퓨터 또는 다른 장치에 관한 것은 아니다. 다양한 범용 시스템은 본 명세서의 가르침에 따라 프로그램과 함께 사용될 수 있다, 즉 필요한 방법 단계를 수행하기 위하여 보다 특별한 장치를 구성하는 것이 편리한 것으로 증명될 수 있다. 다양한 이들 시스템의 필요한 구조는 아래의 설명으로부터 볼 수 있다. 덧붙여, 본 발명은 임의의 특정 프로그래밍 언어를 참조하여 기술되지 않았고, 따라서 다양한 실시예는 다양한 프로그래밍 언어를 사용하여 실현될 수 있다.
네트워크 및 관련 머신 성분의 다양한 다른 구현이 사용될 수 있지만, 예시적인 구현이 도움이 되는 것으로 밝혀졌다. 도 34는 네트워크의 일 실시예에서 클라이언트의 일 실시예를 도시한다. 시스템(3400)은 사용자 I/O와 함께 클라이언 트(3405), 비디오 및 오디오 제어장치, 로컬 저장부 및 네트워크 인터페이스를 포함한다.
클라이언트(3405)는 제어 모듈(3440), 네트워크 인터페이스(3410), 로컬 저장 인터페이스(3415), 렌더링 인터페이스(3420), 암호화 엔진(3425) 및 사용자 인터페이스(3430)를 포함한다. 네트워크 인터페이스(3410)는 격자 네트워크와 접속하기 위하여 네트워크 포트(3490)와 함께 동작한다. 로컬 저장 인터페이스(3415)는 로컬 저장부(local storage(repository)))(3450)의 데이터를 저장 및 검색한다.
렌더링 인터페이스(3420)는 파일의 세그먼트를, 디스플레이되거나, 재생되거나(음향), 저장될 수 있는 것과 같이 사용 가능한 포맷으로 렌더링한다. 렌더링 인터페이스(3420)는 예컨대 디스플레이(3465)와 스피커(3475)를 작동시키기 위하여 비디오 제어기(3460)(video controller) 및 오디오 제어기(3470)(audio controller)와 상호 작용한다. 더욱이, 렌더링 인터페이스(3420)는 렌더링된 세그먼트를 로컬 저장 인터페이스(3415)를 통해 로컬에 기록되게 한다. 암호화 엔진(3425)은 세그먼트와 관련 데이터를 암호해독(필요하다면 암호화)한다. 사용자 인터페이스(3430)는 I/O 제어기(3480)와 상호 작용한다. 사용자 I/O 제어기(3480)는 예컨대 사용자 입력 디바이스(들)(3485), 비디오 제어기(3460) 및 오디오 제어기(3470)와 상호 작용할 수 있다. 제어 모듈(3440)은 클라이언트(3405)의 다른 성분을 제어한다.
유사하게, 다양한 서버 구현이 사용될 수 있고, 예시적인 구현이 도움이 될 수 있다. 도 35는 네트워크의 일 실시예에서 서버의 일 실시예를 도시한다. 서 버(3500)는 네트워크 인터페이스, 네트워크 제어 모듈, 저장 인터페이스, 암호화 엔진, 사용자 인터페이스 및 제어 모듈을 포함한다. 네트워크 인터페이스(3510)는 격자 네트워크와 임의의 하부 네트워크와 상호 작용한다. 네트워크 제어 모듈(3520)은 제어 기능을 제공할 수 있고, 격자 네트워크를 위한 제어 신호를 제공할 수 있다. 이러한 제어 신호와 기능은 예컨대 작업 티켓을 발행하고, 악의적이거나(malicious) 기능하지 않는 클라이언트를 차단하고, 다른 클라이언트를 지원하기 위하여 클라이언트를 감독할 수 있다.
저장 인터페이스(3540)는 네트워크와 그 안의 클라이언트에 관한 정보를 저장하고 검색하면서 로컬 저장부(3560)와 상호 작용한다. 암호화 엔진(3560)은 예컨대 클라이언트로부터 패킷의 신빙성을 확인할 때, 데이터를 암호화하고 암호해독한다. 사용자 인터페이스(3550)는 예컨대 통계 검사 또는 구성의 오버라이드(override)를 허용하기 위하여, 서버(3500)와의 사용자의 상호작용을 허용한다. 제어 모듈(3530)은 서버(3500)의 다른 성분을 제어하고, 그들 사이의 통신을 용이하게 한다.
본 발명에 의하면, 파일 분산을 위한 격자(grid) 네트워크를 위한 시스템, 방법 및 장치가 제공된다.
당업자라면, 시스템 및 방법의 특정 예와 실시예가 예시 목적으로 기술되었지만, 다양한 변경이 본 발명을 벗어나지 않고도 이루어질 수 있음을 인식할 것이다. 예컨대, 본 발명의 실시예는 많은 다른 형태의 데이터베이스, 시스템 및 애플 리케이션 프로그램에 적용될 수 있다. 더욱이, 일 실시예의 특징은, 심지어 이들 특징이 본 명세서 내에서 단일 실시예에 함께 기술되지 않은 곳에라도, 다른 실시예에 통합될 수 있다.

Claims (22)

  1. 네트워크에 접속된 인증 기능을 갖는 제 1서버 노드와,
    상기 네트워크에 접속된 완전한 파일의 저장부(repositories)를 갖는 제 2서버 노드와,
    상기 네트워크에 접속된 파일용 로컬 저장부(local repositories)를 갖는 한 세트의 클라이언트 노드로서, 상기 네트워크를 통해 피어-투-피어(peer-to-peer) 기반으로 완전한 파일의 세그먼트를 공유하도록 구성된, 한 세트의 클라이언트 노드를 포함하는 시스템.
  2. 제 1항에 있어서, 상기 세트의 클라이언트 노드 중 한 클라이언트 노드는, 세그먼트가 상기 세트의 클라이언트 노드 중 다른 클라이언트 노드로부터 효과적으로 복구될 수 없다고 상기 클라이언트 노드가 결정할 때에만, 제 2서버 노드로부터 세그먼트를 요청하는 것을 특징으로 하는 시스템.
  3. 제 2항에 있어서, 상기 완전한 파일은 디지털 영화의 데이터를 엔코드(encode)한 것을 특징으로 하는 시스템.
  4. 제 2항에 있어서, 상기 완전한 파일은 디지털 전자서적의 데이터를 엔코드한 것을 특징으로 하는 시스템.
  5. 제 2항에 있어서, 상기 완전한 파일은 데이터베이스의 데이터를 엔코드한 것을 특징으로 하는 시스템.
  6. 제 2항에 있어서, 상기 세트의 클라이언트 노드중 클라이언트 노드는 상기 네트워크에 걸쳐 세그먼트를 교환하기 전에 제 1서버 노드로부터 인증을 요청하여 수신하는 것을 특징으로 하는 시스템.
  7. 네트워크 인터페이스, 저장부(repository) 인터페이스, 렌더링(rendering) 인터페이스, 암호 엔진, 사용자 인터페이스 및 제어 모듈을 포함하는 로컬 클라이언트, 및
    로컬 저장부(local repository)를 포함하되,
    상기 로컬 클라이언트는,
    파일 액세스를 위한 인증을 수신하기 위하여 상기 네트워크 인터페이스를 통해 네트워크 상의 서버와 상호 작용하고,
    인증된 피어-투-피어 연결을 사용하여, 상기 로컬 저장부에 및 이로부터, 그리고 다른 시스템 상의 다른 로컬 클라이언트에 및 이로부터 파일의 세그먼트를 전달하는 시스템.
  8. 제 7항에 있어서, 상기 로컬 클라이언트는 디스플레이를 통한 사용자와의 상 호 작용에 유용한 포맷으로 상기 세그먼트를 렌더링하는 것을 특징으로 하는 시스템.
  9. 제 7항에 있어서, 상기 로컬 클라이언트는 상기 로컬 저장부로부터의 세그먼트를 암호해독하는 것을 특징으로 하는 시스템.
  10. 제 7항에 있어서, 디스플레이를 더 포함하는 것을 특징으로 하는 시스템.
  11. 제 7항에 있어서, 상기 디스플레이와 상기 로컬 저장부에 접속되고, 상기 로컬 클라이언트를 실행하는 프로세서를 더 포함하는 것을 특징으로 하는 시스템.
  12. 제 7항에 있어서, 상기 로컬 저장부는 파일 세그먼트의 암호화된 저장부를 포함하는 것을 특징으로 하는 시스템.
  13. 제 12항에 있어서, 상기 파일 세그먼트는 복수의 미디어 파일로부터의 세그먼트인 것을 특징으로 하는 시스템.
  14. 제 13항에 있어서, 상기 미디어 파일은 영화 파일인 것을 특징으로 하는 시스템.
  15. 제 7항에 있어서, 비디오 데이터를 디스플레이하기 위한 수단을 더 포함하는 것을 특징으로 하는 시스템.
  16. 피어-투-피어 연결을 통해 제 1클라이언트로부터 미디어 파일의 세그먼트를 요청하는 단계와,
    상기 요청 시 제 1 인증된 작업 티켓을 제공하는 단계와,
    상기 제 1 인증된 작업 티켓이 유효하게 남아 있는 한, 피어-투-피어 연결을 통해 상기 제 1클라이언트로부터 상기 미디어 파일의 상기 세그먼트를 수신하는 단계를 포함하는 방법.
  17. 제 16항에 있어서, 피어-투-피어 연결을 통해 제 2 인증된 작업 티켓으로 제 2 클라이언트로부터 상기 영화 파일의 상기 세그먼트에 대한 요청을 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 17항에 있어서,
    서버를 통해 상기 제 2 인증된 작업 티켓의 신빙성을 확인함으로써, 상기 영화 파일의 세그먼트에 대한 상기 요청에 응답하는 단계와,
    피어-투-피어 연결을 통해 상기 제 2클라이언트에 세그먼트를 전달함으로써, 상기 영화 파일의 세그먼트에 대한 상기 요청에 추가로 응답하는 단계를 더 포함하는 것을 특징으로 하는 것을 특징으로 하는 방법.
  19. 제 16항에 있어서,
    피어-투-피어 연결을 위해 방화벽을 통해 네트워크와 연결된 제 3클라이언트로부터 특정 요청을 수신하는 단계와,
    상기 제 3클라이언트로부터의 상기 특정 요청에 응답하여 피어-투-피어 연결을 구축하는 단계와,
    상기 제 3클라이언트와 파일 세그먼트를 교환하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 제 16항에 있어서,
    상기 영화 파일의 세그먼트를 암호해독하는 단계와,
    사용자에 대한 디스플레이를 위해 상기 영화 파일의 암호해독된 세그먼트를 렌더링하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  21. 제 16항에 있어서,
    상기 영화 파일의 세그먼트를 암호해독하는 단계와,
    상기 영화 파일의 암호해독된 세그먼트를 상기 로컬 저장부의 로컬 파일 내에 저장하는 단계와,
    사용자에 대한 디스플레이를 위해 상기 로컬 파일의 상기 암호해독된 세그먼트를 렌더링하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 제 16항에 있어서,
    상기 방법은 기계 판독형 매체(machine-readable medium)에서 구체화되고 프로세스에 의해 실행되는 것으로서 상기 프로세서가 상기 방법을 수행하게 하는 한 세트의 명령(instructions)으로 구현되는 것을 특징으로 하는 방법.
KR1020077029815A 2005-05-20 2006-05-22 파일 분산을 위한 격자 네트워크 KR20080038088A (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US68312905P 2005-05-20 2005-05-20
US60/683,129 2005-05-20
US11/419,483 2006-05-19
US11/419,484 US20060265436A1 (en) 2005-05-20 2006-05-19 Grid network for distribution of files
US11/419,484 2006-05-19
US11/419,486 US20060265371A1 (en) 2005-05-20 2006-05-19 Grid network for distribution of files
US11/419,482 2006-05-19
US11/419,486 2006-05-19
US11/419,483 US20060265402A1 (en) 2005-05-20 2006-05-19 Grid network for distribution of files
US11/419,482 US20060265401A1 (en) 2005-05-20 2006-05-19 Grid network for distribution of files

Publications (1)

Publication Number Publication Date
KR20080038088A true KR20080038088A (ko) 2008-05-02

Family

ID=37432214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077029815A KR20080038088A (ko) 2005-05-20 2006-05-22 파일 분산을 위한 격자 네트워크

Country Status (7)

Country Link
EP (1) EP1891541A2 (ko)
JP (1) JP2008546065A (ko)
KR (1) KR20080038088A (ko)
AU (1) AU2006246717A1 (ko)
CA (1) CA2608587A1 (ko)
IL (1) IL187468A0 (ko)
WO (1) WO2006125225A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8676882B2 (en) * 2007-02-27 2014-03-18 Sony Corporation System and method for preloading content segments to client devices in an electronic network
EP1944944A1 (en) * 2007-01-12 2008-07-16 Thomson Licensing System and method for combining pull and push modes
US20080270594A1 (en) * 2007-04-27 2008-10-30 Mcjilton Charles M Method and system of separate file storage locations as unified file storage
US8005993B2 (en) 2007-04-30 2011-08-23 Hewlett-Packard Development Company, L.P. System and method of a storage expansion unit for a network attached storage device
GB2469034A (en) * 2009-03-30 2010-10-06 Sony Corp Distribution system and method of distributing content files
EP3103264B1 (en) * 2014-02-03 2021-04-07 Telefonaktiebolaget LM Ericsson (publ) Methods and apparatus for naming video content chunks
EP3120566A1 (en) 2014-03-17 2017-01-25 Telefonaktiebolaget LM Ericsson (publ) Improved network pvr
WO2019051628A1 (zh) 2017-09-12 2019-03-21 网宿科技股份有限公司 一种文件分发、下载方法、分发服务器、客户端及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002076003A2 (en) * 2001-03-19 2002-09-26 Imesh Ltd. System and method for peer-to-peer file exchange mechanism from multiple sources
US7793326B2 (en) * 2001-08-03 2010-09-07 Comcast Ip Holdings I, Llc Video and digital multimedia aggregator
KR100991982B1 (ko) * 2003-07-14 2010-11-04 소니 주식회사 통신방법
JP4306365B2 (ja) * 2003-08-07 2009-07-29 ソニー株式会社 サーバ及びコンテンツ受信装置

Also Published As

Publication number Publication date
CA2608587A1 (en) 2006-11-23
WO2006125225A3 (en) 2007-09-27
EP1891541A2 (en) 2008-02-27
JP2008546065A (ja) 2008-12-18
IL187468A0 (en) 2008-03-20
WO2006125225A2 (en) 2006-11-23
AU2006246717A1 (en) 2006-11-23

Similar Documents

Publication Publication Date Title
US20060265436A1 (en) Grid network for distribution of files
US20050177624A1 (en) Distributed System and Methodology for Delivery of Media Content to Clients having Peer-to-peer Connectivity
US20050177853A1 (en) System and Methodology for Distributed Delivery of Online Content in Response to Client Selections from an Online Catalog
US20050177745A1 (en) Distributed System and Methodology for Delivery of Media Content
US9332287B2 (en) System and method for session management of streaming media
US7165050B2 (en) Media on demand via peering
US7711647B2 (en) Digital rights management in a distributed network
US20070055743A1 (en) Remote control media player
KR20080038088A (ko) 파일 분산을 위한 격자 네트워크
US20100250704A1 (en) Peer-to-peer content distribution with digital rights management
US20040078575A1 (en) Method and system for end to end securing of content for video on demand
US20060123484A1 (en) Method of clearing and delivering digital rights management licenses to devices connected by IP networks
US20050262573A1 (en) Content presentation
US20060010074A1 (en) Delivery and storage system for secured content library
US8087089B2 (en) System for a digital content distributing service and the method thereof
JP5552176B2 (ja) 相互運用キー収納箱
CN103959302A (zh) 用于安全分布式存储的系统与方法
JP2010176684A (ja) コンテンツ配信システムにおける複数のコンテンツのピースを伴うメディア・ストレージ構造の使用
MXPA04012326A (es) Sistema de gestion de clave y control de acceso para medios de flujo continuo.
WO2007025998A2 (en) Method and system for resource encryption and decryption
EP1782343A1 (en) Distributed system and methodology for delivery of media content
KR102485722B1 (ko) 분산 스토리지를 기반으로 적응형 스트리밍 서비스를 제공하기 위한 장치, 방법, 및 시스템
US20050108361A1 (en) Method and system for content delivery
WO2023170194A1 (en) Method and system for managing content data access

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application