KR101322947B1 - 네트워크에서의 파일의 분산 캐싱 - Google Patents

네트워크에서의 파일의 분산 캐싱 Download PDF

Info

Publication number
KR101322947B1
KR101322947B1 KR1020087003133A KR20087003133A KR101322947B1 KR 101322947 B1 KR101322947 B1 KR 101322947B1 KR 1020087003133 A KR1020087003133 A KR 1020087003133A KR 20087003133 A KR20087003133 A KR 20087003133A KR 101322947 B1 KR101322947 B1 KR 101322947B1
Authority
KR
South Korea
Prior art keywords
file
peer
computer
potential
computer system
Prior art date
Application number
KR1020087003133A
Other languages
English (en)
Other versions
KR20080047353A (ko
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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080047353A publication Critical patent/KR20080047353A/ko
Application granted granted Critical
Publication of KR101322947B1 publication Critical patent/KR101322947B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • 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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1072Discovery involving ranked list compilation of candidate peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access

Abstract

파일의 분산 캐싱 및 다운로드에 관한 것이다. 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적 피어 서버들의 목록을 포함하는 피어 목록을 구축하는 것을 포함하는 방법이 설명된다. 피어 목록은 미리 결정된 수 이하의 잠재적 피어 서버들만을 포함한다. 피어 목록의 잠재적 피어 서버들은 파일 또는 파일의 부분에 대해 쿼리된다. 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있음을 나타내는 메시지가 피어 목록의 피어 서버로부터 수신된다. 컴퓨터 시스템은 그 피어 서버로부터 파일 또는 파일의 부분을 다운로드한다.
캐싱, 파일 공유, 네트워크, 피어 서버

Description

네트워크에서의 파일의 분산 캐싱{DISTRIBUTED CACHING OF FILES IN A NETWORK}
네트워크 컴퓨팅은 컴퓨터가 서버들로부터 소프트웨어 및 파일 컨텐트를 요청하고 수신하여 컴퓨터에 설치 및/또는 저장할 수 있도록 한다. 파일 컨텐트는, 예를 들어, 텍스트 파일, 비디오 파일, 데이터 파일, 이미지 파일 등을 포함할 수 있다. 소프트웨어는 시스템 소프트웨어 업데이트, 애플리케이션 소프트웨어 업데이트, 및 데이터 파일 업데이트를 포함하는 여러 목적을 위해 요청되고 다운로드될 수 있다. 예를 들어, 컴퓨터 시스템에 대한 공격을 막거나 제거하도록 운영 체제를 업데이트하기 위해 보안 패치가 다운로드될 수 있다. 또한, 컴퓨터에 새로운 애플리케이션을 설치하기 위해 소프트웨어가 다운로드될 수 있다. 한 예시적인 시스템에서, 소프트웨어는 후선(background)에서 다운로드되어, 컴퓨터 및 컴퓨터 사용자가 다른 태스크를 수행하는 동안 소프트웨어가 다운로드될 수 있다. 이 기능을 가진 한 예시적인 서비스가 BITS(Background Intelligent Service)이다.
종종, 소프트웨어가 게시되어 서버로부터의 다운로드가 가능할 때, 이 소프트웨어를 동시에 또는 매우 짧은 시간 내에 획득하고자 하는 다수의 컴퓨터들이 네트워크에 존재한다. 예를 들어, 소프트웨어가 보안 패치일 경우, 컴퓨터 또는 네트워크에 대한 악성 공격을 막기 위해서 이 소프트웨어를 가능한 한 짧은 시간 내 에 가능한 많은 컴퓨터들에게 전달하고자 하는 요구가 있다. 소프트웨어가 기업 캠퍼스(corporate campus) 내의 시스템 광역 배포(system wide distribution)를 위한 새로운 애플리케이션일 경우, 짧은 시간 내에 소프트웨어 시스템을 배포하고자 하는 요구가 있을 수 있다. 소프트웨어가 매우 기대되는 릴리스인 경우, 이 소프트웨어를 처음으로 사용하는 사람들 중 하나가 되기 위해 다수의 사용자들이 소프트웨어를 다운로드하고자 할 수 있다. 소프트웨어를 대규모로 배포하는 것은 다량의 서버 및 네트워크 용량을 필요로 할 수 있다. 다수의 지점(branch office)이 기업 본점의 엔터프라이즈 허브(enterprise hub)와 연결된 네트워크 환경에서 특히 이러한 대규모 다운로드가 어려울 수 있다. 이 예에서, 소프트웨어가 엔터프라이즈 허브로부터 배포될 때, 엔터프라이즈 허브의 서버가 지점의 여러 또는 모든 컴퓨터에 소프트웨어를 제공하기에 충분한 기능을 가지고 있을 때에도, 엔터프라이즈 허브와 지점 간의 네트워크 연결은 특정 시간에 업데이트될 수 있는 컴퓨터의 수를 제한할 수 있다.
대규모 다운로드의 작업 부하(workload)를 분산하기 위해 사용된 여러 방법들이 있다. 예를 들어, 기업 환경에서, 새로운 소프트웨어를 배포하는 것은 주어진 시간에 네트워크 상의 제한된 수의 컴퓨터들에게만 소프트웨어를 배포함으로써 이루어질 수 있다. 대안적으로, 네트워크의 컴퓨터들의 부분집합에 소프트웨어를 배포하기 위해서 네트워크 내에 캐싱 프록시가 놓일 수 있다. 이러한 해결책들은 둘 다 구현을 위해 세심한 계획이 필요하다. 이에 더해, 캐싱 프록시의 경우에, 추가적인 컴퓨터 하드웨어가 네트워크에 추가되어 네트워크의 비용을 증가시킨다.
배경기술에서 다양한 논점들이 확인되었지만, 아래에 청구되는 본 발명은 반드시 어떤 또는 모든 확인된 논점을 다루지는 않는다. 이 배경기술은 단순히 여기에 설명되는 실시예들이 실행될 수 있는 한 예시적인 환경에 대한 배경을 제공하기 위한 것이다.
<발명의 개요>
여기에 설명된 한 실시예는 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 이 방법은 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적인 피어 서버들의 목록을 포함하는 피어 목록을 구축하는 것을 포함한다. 피어 목록은 미리 결정된 수(predetermined number) 이하의 잠재적 피어 서버들만을 포함한다. 피어 목록의 잠재적 피어 서버들은 파일 또는 파일의 부분에 대해 쿼리된다. 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있음을 나타내는 메시지가 피어 목록의 한 피어 서버로부터 수신된다. 컴퓨터 시스템이 그 피어 서버로부터 파일 또는 파일의 부분을 다운로드한다.
여기에 설명된 또 다른 실시예가 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 이 방법은 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것을 포함한다. 컴퓨터 시스템은 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있는지를 알아내기 위한 요청을 수신한다. 컴퓨터 시스템은 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신한다. 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 것은 동적 옵트-인(opt-in)/옵트-아웃(opt-out) 규칙에 기초하여 수행된다. 컴퓨터 시스템은 파일을 다운로드하기 위한 요청을 수신한다. 컴퓨터 시스템은 요청하는 시스템으로 파일을 송신한다.
여기에 설명된 또 다른 실시예가 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 컴퓨터 시스템이 잠재적인 피어를 발견하기 위해 서브넷 상의 컴퓨터 시스템들에게 브로드캐스트 신호를 송신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터 유니캐스트, 또는 대안적으로 멀티캐스트 신호를 수신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나를 피어 목록에 추가한다. 피어 목록은 미리 결정된 수 이하의 피어들만을 포함한다. 컴퓨터 시스템은 컴퓨터 시스템 중 상기 하나가 다운로드할 수 있는 파일 또는 파일의 부분을 가지고 있는지 알아내기 위해 서브넷의 컴퓨터 시스템 중 상기 하나에 유니캐스트 신호를 송신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나가 다운로드될 수 있는 파일 또는 파일의 부분을 가지고 있음을 나타내는 유니캐스트 신호를 컴퓨터 시스템 중 상기 하나로부터 수신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나로부터 파일 또는 파일의 부분을 다운로드한다.
이 발명의 개요는 아래의 실시예에서 더 상세히 설명되는 개념들의 선택을 간략한 형태로 소개하기 위해 제공된 것이다. 이 발명의 개요는 청구된 본 발명의 주요 특징 또는 본질적 특징들을 식별하기 위한 것이 아니며, 또한 청구된 본 발명의 범위를 결정하는 보조로 사용되도록 의도된 것이 아니다.
위에서 언급된 수단 및 기타 특징들을 얻을 수 있도록, 첨부된 도면에 도시된 특정한 실시예를 참조하여 더 구체적인 설명이 제시될 것이다. 이 도면은 단지 전형적인 실시예를 도시하며 따라서 범위를 제한하는 것으로 고려되어서는 안된다는 것을 이해해야 하며, 실시예들은 첨부된 도면의 사용을 통해 추가적인 특수성 및 세부 사항들로 묘사되고 설명될 것이다.
도 1은 예시적인 네트워크의 블록도이다.
도 2는 클라이언트 관점에서 파일을 캐싱 및 공유하기 위한 방법을 설명하는 흐름도를 도시한다.
도 3은 피어 서버 관점에서 파일을 캐싱 및 공유하기 위한 방법을 설명하는 흐름도를 도시한다.
여기에 설명된 한 실시예는 중앙화된(centralized) 파일 서버로부터 벗어나서 파일 배포를 가능하게 하는 향상된 파일 배포 시스템을 포함한다. 이 예에서, 파일 분산 및 캐싱은 네트워크의 가장자리(edge)로 옮겨진다. 이것은 중앙화된 파일 서버들에 대한 로드를 감소시키고, 몇몇 중앙화된 네트워크 연결들에 네트워크 트래픽이 집중되는 것과 반대로, 네트워크 트래픽을 네트워크 전체에 걸쳐 분산하 도록 돕는다. 구체적으로, 한 실시예에서 컴퓨터들은 피어 투 피어 시스템을 이용하여 파일을 캐싱하고 공유한다. 컴퓨터 시스템은 먼저, 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적 피어 서버들의 목록을 포함하는 피어 목록을 구축한다. 이 실시예에서, 피어 목록은 미리 결정된 수 이하의 피어들로 제한된다. 다음, 시스템은 피어 목록의 피어들을 인증(authenticate)할 수 있다. 다음, 시스템은 컴퓨터 시스템이 필요로 하는 파일 또는 파일의 부분을 포함하는 피어를 찾기 위해 피어 목록의 피어들을 쿼리할 수 있다. 피어 목록의 한 피어가 사용가능한 파일 또는 파일의 부분을 가지고 있다고 응답하면, 이를 나타내는 피어로부터 파일 또는 파일의 부분을 다운로드할 수 있다. 파일 또는 파일의 부분을 가지고 있다고 응답하는 피어가 없으면, 파일을 요청하는 시스템은 중앙 파일 서버로부터 파일을 다운로드하고, 다운로드할 수 있는 파일 또는 파일의 부분을 자신이 가지고 있음을 다른 컴퓨터 시스템들에게 나타낼 수 있다. 다운로드할 수 있는 파일 또는 파일의 부분을 가지고 있음을 나타낸 것에 대한 응답으로, 다른 컴퓨터 시스템들은 자신의 잠재적 피어 서버들의 목록을 포함하는 피어 목록에 이 컴퓨터 시스템을 추가할 수 있으며, 이는 아래에 더 상세히 설명된다. 특히, 다른 피어 시스템들은, 파일 또는 파일의 부분을 포함하는 피어를 찾기 위한 쿼리에 대한 응답으로, 쿼리하는 컴퓨터 시스템을 자신의 피어 목록에 추가할 수 있다.
한 예시적인 실시예에서, 컴퓨터 시스템은 중앙 엔터프라이즈 서버 또는 허브에 의해 상호 연결되지 않은 컴퓨터들로부터 피어 그룹을 생성할 수 있다. 케이블 모뎀 연결, 및 이와 유사한 것 등과 같은 값비싼 연결을 통한 피어 연결을 제거 하기 위해, 예를 들어, 피어 그룹은 엔터프라이즈 네트워크의 지점, 공통 허브 또는 라우터의 컴퓨터들에서 형성될 수 있다. 이러한 방식으로, 파일이 캐싱 및 다운로드될 수 있는 피어 그룹들에게로 파일을 배포하는 데 더 적은 양의 네트워크 트래픽 및 서버 리소스가 필요하다. 이 방식으로, 소프트웨어 및 업데이트를 배포하기 위해 필요한 프로세싱 및 네트워크 기능들은 네트워크의 중앙화된 위치에서 네트워크의 가장자리로 이동되며, 따라서 컴퓨팅 및 네트워크 요구 사항들이 더 고르게 분배된다.
이제 도 1을 참조하면, 예시적인 토폴로지(100)가 도시된다. 토폴로지(100)는 다수의 컴퓨터 시스템(102, 104, 106, 108, 110)을 포함한다. 컴퓨터 시스템들(102-110)은 다수의 상호 연결 수단 중 임의의 것을 통해 상호 연결될 수 있다. 예를 들어, 컴퓨터 시스템(102-110)은 IEEE 802.3을 따르는 이더넷 네트워크, IEEE 802.11을 따르는 것들과 같은 무선 이더넷 연결, 블루투스 무선 네트워크, 다이얼 업(dial up) 네트워킹 연결, 케이블 모뎀 연결 등과 같은 네트워크 연결을 통해 상호 연결될 수 있다. 도시된 실시예에서, 컴퓨터 시스템(102-110)은 상호 연결되어 피어 그룹(112)을 형성한다. 이 예에서, 피어 그룹(112)은, 랩톱 컴퓨터 시스템(106)과 같은 컴퓨터 시스템을 위한 잠재적인 피어 서버들의 한 그룹이다. 한 실시예에서, 각 컴퓨터 시스템은, 컴퓨터 시스템이 파일을 다운로드할 수 있는 잠재적인 피어 서버들의 목록을 포함하는 피어 목록을 유지한다. 피어 그룹의 형성은 아래에서 더 상세히 논의될 것이다.
도 1은 또한 피어 그룹(112)이 중앙 파일 서버(114)에 연결되었음을 도시한 다. 중앙 파일 서버(114)로의 연결이 단일 연결로 도시되었지만, 대안적인 실시예에서, 컴퓨터(102-110) 각각이 중앙 파일 서버(114)에 대한 액세스를 가지거나, 다른 구성으로 다양한 연결들이 사용될 수 있다. 예를 들어, 피어 그룹은 기업 엔터프라이즈의 지점에서 형성될 수 있으며, 여기서 지점은 엔터프라이즈 허브에 있는 중앙 파일 서버(114)와 연결된다. 다양한 다른 상호 연결들 또한 구현될 수 있다.
도시된 예에서, 파일 서버는 파일(116) 또는 파일의 부분을 저장할 수 있다. 파일(116)은, 예를 들어, 소프트웨어 업데이트, 운영 체제를 위한 보안 패치, 애플리케이션, 데이터 파일, 또는 기타 소프트웨어일 수 있다. 파일(116)은 컴퓨터 시스템(108)과 같은 컴퓨터들 중 하나에 의해 다운로드되거나 컴퓨터들 중 하나로 푸시될 수 있다. 다음, 컴퓨터 시스템(108)은 파일(116)의 캐싱된 카피(cached copy)를 가진 잠재적 피어 서버로 동작할 수 있다. 그러면 다른 컴퓨터 시스템(102, 104, 106, 110)들은 잠재적 피어 서버 시스템(108)으로부터 파일(116)을 요청할 수 있다. 이러한 방식으로, 몇몇 실시예에서, 파일 서버와 피어 그룹(112) 사이의 연결(118) 상의 네트워크 트래픽이 감소될 수 있다. 또한, 중앙 파일 서버(114)에 의한 프로세싱이 감소될 수 있다.
앞서 언급된 것과 같이, 도 1은 컴퓨터 시스템들 중 하나가 랩톱 컴퓨터 시스템(106)이고, 랩톱 컴퓨터 시스템(106)에 의해 유지되는 잠재적 피어 서버들의 목록 내에 피어 그룹(112)이 있음을 도시한다. 랩톱 컴퓨터 및 핸드-헬드 장치, PDA, 휴대 전화 등과 같은 기타 휴대용 컴퓨터들은, 본래의 성질에 따라 휴대가능하며, 따라서 네트워크의 물리적 및 논리적으로 다른 부분들에 위치할 수 있다. 랩톱 컴퓨터(106)는, 예를 들어, 랩톱 컴퓨터(106)가 피어 그룹(112)으로부터 파일을 다운로드하기에 실용적이지 않은 위치로 논리적 또는 물리적으로 이동될 수 있다. 예를 들어, 랩톱 컴퓨터(106)는 피어 그룹(112)이 아닌 다른 서브넷으로 논리적으로 이동될 수 있다. 대안적으로, 랩톱 컴퓨터(106)는, 랩톱 컴퓨터(106)가 피어 그룹(112)의 다른 구성원들과 통신하도록 하는 데 과도한 양의 네트워크 트래픽을 필요로 하는 위치로 물리적으로 이동될 수 있다. 도 1에 도시된 실시예에서, 랩톱 컴퓨터(106)는 도 1에 도시된 피어 그룹(120)과 같은 또 다른 피어 그룹을 생성한다. 랩톱(106)은 제1 피어 그룹(112) 및 제2 피어 그룹(120)에 대한 정보를 유지하여, 제1 피어 그룹(112) 또는 제2 피어 그룹(120) 또는 랩톱(106)의 피어 목록에 있는 다른 임의의 피어 그룹과 연결되면 랩톱(106)이 파일을 수신할 수 있다.
피어 그룹(112) 내의 컴퓨터 시스템이 파일(116)을 수신하면, 컴퓨터 시스템은 파일이 정확한 파일이며 손상되지 않았음을 확인해야한다. 파일이 정확한 파일이며 손상되지 않았음을 결정하는 것은, 예를 들어, 파일 이름, 파일 크기, 해시 값 등을 비교함으로써 이루어질 수 있다. 예를 들어, 컴퓨터 시스템은 파일 이름, 파일 크기, 및 파일의 해시 값에 관한 정보를 수신할 수 있다. 해시 값은, 어떤 다른 데이터가 같은 해시 값을 생성할 가능성이 극히 드문 방식으로 값을 생성하기 위해서, 파일 내의 데이터를 이용하여 계산된 값들이다. 컴퓨터 시스템은 파일 이름, 파일 크기 및/또는 해시 값을 비교함으로써 정확한 파일이 수신되고 있다고 결정할 수 있다. 또한, 해시 값은 파일이 손상되거나, 악성으로 변경되지 않았음을 보장하기 위해 사용될 수 있다.
정확한 파일이 사용가능하지 않거나, 파일이 손상되었거나, 파일이 악성으로 변경되었음을 컴퓨터 시스템이 검출하면, 컴퓨터 시스템은 중앙 파일 서버(114)로부터 직접 파일(116)을 요청할 수 있다. 다음, 중앙 파일 서버(114)로부터 파일(116)을 직접 요청하는 컴퓨터 시스템은 자신을 파일(116)을 포함하는 잠재적 저장 시스템으로 알릴 수 있다.
특히, 한 실시예에서, 피어 그룹은 상술된 것과 같이 유지되며 각 컴퓨터 시스템에 대해 특정(specific)하다. 따라서, 피어 그룹 관리는 중앙 제어가 없이 시스템을 사용하여 중앙 위치로부터 이동된다. 이것은 전체 네트워크에 대해서 단일 지점 실패(single point failure) 지점을 제거한다. 다시 말해, 하나의 피어 목록 또는 피어 목록을 가진 하나의 시스템의 손실은 전체 시스템으로 하여금 파일 분산 및 캐싱을 할 수 없도록 하지 않으며, 전체 시스템이 사용 불가능하게 되는 것은 피어 그룹을 관리하는 데 하나의 중앙화된 서버가 사용될 때 발생한다.
이제 도 2를 참조하면, 파일을 캐싱 및 공유하기 위한 방법(200)이 도시된다. 방법은 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 수행될 수 있다.
도 2는 피어 목록을 구축하는 동작을 도시한다(단계 202). 피어 목록은 도 1에 도시된 컴퓨터 시스템(102-110)들과 같은, 네트워크로 연결된 컴퓨터의 그룹 중에서 잠재적인 피어 서버들의 목록을 포함한다. 피어 목록은 미리 결정된 수 이하의 잠재적 피어 서버들만을 포함할 수 있다. 예를 들어, 피어 목록은 100개 이하의 잠재적 피어 서버들만 피어 목록에 포함되도록 설계될 수 있다. 또한, 피어 그룹 내의 컴퓨터 시스템(102-110)들은 네트워킹 관점에서 가까워야할 필요가 있다. 예를 들어, 피어 그룹(112)의 컴퓨터 시스템(102-110)은 엔터프라이즈 네트워크의 동일한 지점에 위치할 것이 요구될 수 있다. 대안적인 실시예에서, 피어 그룹(112)의 컴퓨터 시스템(102-110)이 공통 허브, 라우터, 또는 스위치에 위치할 것이 요구될 수 있다. 몇몇 대안적인 실시예에서, 어떤 피어도 케이블 모뎀들 간의 연결 또는 고(high) 트래픽 연결과 같은 고가(expensive)의 연결을 통해 상호 연결되지 않도록 요구될 수 있다. 또한, 다른 논리적으로 가까운 구성들이 구현될 수 있다. 예를 들어, 한 실시예에서, 컴퓨터 시스템은 컴퓨터들이 가까운 정도(nearness)를 결정하기 위해 타이밍 방법(timing method)을 이용할 수 있다. 피어 목록을 구축하기 위해(202) 단독으로 또는 공동으로 사용될 수 있는 여러 방법들이 있다. 이 방법들의 예는 아래에 설명될 것이다.
피어 목록을 구축하는 한 방법(202)은 통신 유도 요청(solicitation request)을 송신하고 컴퓨터들로부터 응답을 수신하는 것을 포함한다. 응답하는 잠재적 피어들의 수를 제한하기 위해, 통신 유도 요청은 예를 들어, 단일 서브넷에 대해 응답을 받기 위해 서브넷 브로드캐스트 또는 멀티캐스트일 수 있다. 하지만, 단일 서브넷의 컴퓨터들만 응답하더라도, 응답의 수가 여전히 과도할 수 있다. 따라서, 응답의 수를 더욱 제한하기 위해, 통신 유도 요청을 송신하는 컴퓨터 시스템은 요구되는 피어의 수에 대한 지시를 통신 유도 요청 내에 포함시킬 수 있다. 잠재적 피어들은 무작위의 짧은 간격(random short interval) 후에 멀티캐스트를 사용하여 응답하고 다른 컴퓨터들의 멀티캐스트 응답을 듣도록 구성될 수 있다. 다 른 잠재적 피어들로부터의 응답의 수가 요구되는 피어의 수에 대한 지시에 이미 도달했음이 검출되면 잠재적 피어는 응답하지 않는다. 다시 말해, 요구되는 수의 피어들이 이미 응답한 경우 잠재적 피어는 응답하지 않는다.
무작위의 짧은 간격을 생성하기 위해 여러 방법들이 사용될 수 있다. 예를 들어, 가장 간단한 실시예에서, 통신 유도 요청에 응답하기 전에 얼마의 시간을 대기해야 할지를 결정하기 위해서, 균등한 무작위 분포(uniform random distribution)가 각 잠재적 피어에 의해 사용될 수 있다. 대안적인 방법은 초기에 더 적은 수의 잠재적 피어가 응답하고 지연이 길어질수록 더 많은 수의 잠재적 피어가 응답하는 비선형 분포를 포함한다. 예를 들어, 비선형 지연(non-linear delay)을 통합하는 한 방법은 0 내지 1 사이의 난수(random number)를 생성하는 것을 포함할 수 있다. 그러면 지연은 다음의 식에 의해 정의될 수 있다.
DELAY = MAX_DELAY*Log(C*X+1)/Log(C+1)
DELAY는 응답하기 전의 지연이고, MAX_DELAY는 응답을 수신하는 데 주어진 시간의 최대 양(amount), X는 난수, 및 C는 256과 같은 임의의 수이다. 다른 비선형 무작위 지연(non-linear random delay)들 또한 사용될 수 있다.
다른 예에서, 시스템은 지연 없이 응답할 수 있고, 컴퓨터 시스템은 피어 목록을 채울 정도로 충분한 피어들이 있을 때까지 피어 목록에 피어를 추가할 수 있다. 이 예에서, 가장 빨리 응답하는 피어는 통신 유도 요청을 송신하는 컴퓨터 시스템과 논리적으로 가장 가까운 것들일 수 있다. 이 예에서, 컴퓨터 시스템은 잠재적 피어들이 얼마나 빨리 응답하는지를 보기 위해 시간을 잴 수 있다. 가장 빨 리 응답하는 잠재적 피어들만이 피어 목록에 추가된다. 따라서, 컴퓨터 시스템은 논리적으로 가장 가깝거나 가장 빨리 응답할 수 있는 피어들을 받아들임으로써, 피어 그룹에 가장 적합한 피어들을 선택할 수 있다.
통신 유도 요청은 또한 트러스트 그룹(trust group)과 같은 그룹을 포함할 수 있다. 잠재적 피어들은 다른 트러스트 그룹과 관련된 요청들을 무시한다. 트러스트 그룹이 통신 유도 요청에 사용될 때에도, 여전히 아래에 상세히 설명되는 것과 같이 피어를 인증해야할 필요가 있을 수 있다. 트러스트 그룹은 동일한 서브넷 내의 다른 트러스트 그룹들로부터의 응답을 추려내어, 서브넷 내의 중복된 통신 유도 요청이 서로 저촉하지 않게 하는 방법으로서 사용된다. 한 실시예에서, 통신 유도 요청은 컴퓨터 시스템에 의해 요구되는 컨텐트의 식별정보(identification)를 포함할 수 있다. 아래에 설명되는 것과 같이, 잠재적 피어들은 자신이 그 식별정보의 컨텐트를 가지고 있고 다른 옵트-인 제약 조건(constraint)을 만족하면 응답한다. 이것은 하나의 컨텐트 요청이 모든 잠재적 호스트에 도달하기 때문에 컨텐트 검색을 더 효과적으로 만든다. 이 실시예는 덜 개인적(private)일 수 있는데, 이는 인증되지 않은 호스트들이 어느 컨텐트가 요청되는지를 볼 수 있기 때문이다. 이 실시예에서 프라이버시(privacy)를 향상시키기 위해 URL의 일방향 해시, 또는 컨텐트 해시를 요청하는 것이 사용될 수 있다.
다른 실시예에서, 피어 목록을 구축하는 것은 컴퓨터 시스템이 잠재적 피어로부터 멀티캐스트 패킷과 함께 자기-알림(self-announcement)을 수신하는 것을 포함할 수 있다. 자기-알림은 잠재적 피어들이 네트워크의 컴퓨터들에게 제공될 수 있는 파일 또는 파일의 부분들을 갖고 있다는 표시를 포함한다. 이러한 알림이 수신되면, 컴퓨터 시스템은 잠재적 피어를 자신의 피어 목록에 추가할 수 있다. 자기-알림은 한 대안적인 실시예에서 규칙적으로 이루어질 수 있다. 한 예에서, 알림은 시간당 한번, 또는 하루에 여러 번 이루어질 수 있다.
컴퓨터 시스템들은 공유할 파일을 가지고 있을 때, 그리고 하드웨어 특성, 현재의 프로세싱 로드, 또는 다른 특성들이, 컴퓨터 시스템으로 하여금 피어 서버로서 동작할 수 있도록 할 때 자기-알림을 할 수 있다. 알리는 컴퓨터 시스템들은 중앙 파일 서버(114) 또는 피어 그룹(112) 내의 다른 피어로부터 파일(116)을 수신할 수 있다. 컴퓨터 시스템은 자기-알림을 하지 않을 특정 파일들을 가지고 있을 수 있다. 이것은 컴퓨터 시스템으로 하여금 특정 파일을 보호할 수 있도록 한다.
대안적인 실시예에서, 잠재적 피어는, 예를 들어, 멀티캐스트를 통해 네트워크에 추가되었을 때와 같이, 네트워크에 추가되었을 때 알릴(announce) 수 있다. 다음, 피어 목록에 피어가 필요하면, 컴퓨터는 이 새로운 컴퓨터를 자신의 피어 목록에 추가할 수 있다. 이와 유사하게, 컴퓨터 시스템은 다른 유형의 멀티캐스트 알림 및 응답을 수신할 때 피어를 피어 목록에 추가할 수 있다. 예를 들어, 상술된 무작위 시간 지연 응답 실시예와 관련된 응답을 듣는 컴퓨터 시스템은 본래의 통신 유도에 응답하는 임의의 컴퓨터 시스템들을 자신의 피어 목록에 추가할 수 있다. 마찬가지로, 피어 목록의 잠재적 피어로서 사용가능한 컴퓨터들을 결정하는 데 있어 거의 모든 임의의 응답 또는 알림이 사용될 수 있다.
피어 목록의 컴퓨터들은 검증되었거나 검증되지 않은 것일 수 있다. 검증된 컴퓨터 시스템은 아래에 약술된(outlined) 것과 같이 인증을 통과한 것들이다. 피어 목록의 피어는 피어 목록에 추가되고 난 후 즉시 검증될 필요가 없고, 오히려, 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리하는 것과 근접한 시간에 검증될 수 있으며(단계 206), 이는 아래에 더 상세히 논의된다. 하지만, 피어 목록의 피어가 검증되고 나면, 컴퓨터 시스템과 피어는 키(key)를 공유하여 이어지는 파일 쿼리들에 대해 검증이 수행될 필요가 없도록 한다.
피어 목록을 구축하는 프로세스의 일부는, 오래된(outdated) 항목을 제거하거나, 더 이상 유효하지 않은 항목들을 제거하기 위해 피어 목록을 업데이트하는 것을 포함할 수 있다. 예를 들어, 항목들이 미리 정해진 기간 동안 피어 목록에 존재한 후에 컴퓨터 시스템은 항목들을 피어 목록으로부터 제거할 수 있다. 이것은 오래된 항목들이 제한된 수명(lifespan)을 갖도록 보장한다. 다른 대안적인 실시예에서, 피어가 네트워크를 떠날 때, 피어에 의해 송신된 멀티캐스트에 대한 응답으로 피어 항목들이 제거될 수 있다. 예를 들어, 피어가 네트워크를 떠날 준비를 할 때 "바이(Bye)" 멀티캐스트 일방향 메시지는 최선 노력 알림(best effort notification)으로써 다른 피어들에게 송신된다. "바이" 메시지가 컴퓨터 시스템에 의해 검출되면, "바이" 메시지를 송신하는 피어가 피어 목록으로부터 제거될 수 있다. "바이" 메시지는 덜 바람직할 수 있는데, 이는 악성 컴퓨터가 "바이" 요청을 사용하여 다른 컴퓨터들이 피어 목록으로부터 제거되도록 하고, 따라서 더 많은 컴퓨터들로 하여금 중앙 파일 서버에 요청을 하도록 만들 수 있기 때문이다. 다른 예에서, 파일에 대해 피어를 쿼리하는 시도가 이루어졌을 때, 피어가 더 이상 네트 워크에 없음을 나타내는 에러가 수신되면 피어가 피어 목록으로부터 제거될 수 있다. 한 실시예에서, 피어 목록의 서로 다른 피어들로의 다수의 쿼리가 에러 메시지를 가져오면 컴퓨터 시스템은 피어 목록 전체의 모든 항목을 폐기할 수 있다. 이것은 컴퓨터 시스템이 액세스하고자 하는 네트워크의 부분이 더 이상 사용가능하지 않다는 표시일 수 있다. 다른 실시예에서, 피어가 검증되지 못하면 피어 목록으로부터 제거될 수 있다. 이것은 아래에 더 상세히 설명될 것이지만, 간단히 말하자면, 피어가 검증되지 못하면, 이것은 피어가 신뢰될 수 없다는 표시이다. 이와 유사하게, 피어로부터 수신된 파일들이 해시 비교와 같은 특정 보안 검사를 통과하지 못하면 피어는 피어 목록으로부터 제거될 수 있다. 이것 또한 아래에 더 상세히 논의될 것이다.
충분한 수의 피어들이 피어 목록으로부터 제거되면, 상술된 피어 목록을 구축하기 위한 단계들이 반복될 수 있다. 특히, 상술된 단계들은 단독으로 또는 함께 사용될 수 있다.
컴퓨터 시스템은 하나 이상의 피어 목록을 유지할 수 있다. 예를 들어, 도 1에서, 랩톱 컴퓨터 시스템(106)의 예가 도시된다. 설명된 것과 같이, 랩톱 컴퓨터 시스템(106)은 물리적 및/또는 논리적으로 재배치(relocate)될 수 있다. 한 실시예에서, 랩톱 컴퓨터(106)는 논리적으로 재배치되어 제1 피어 그룹(112)과는 다른 서브넷에 존재할 수 있다. 랩톱 컴퓨터 시스템(106)은 자신이 새로운 서브넷으로 이동하였음을 검출할 수 있고, 새로운 서브넷으로 이동하였음을 검출한 것에 대한 응답으로, 랩톱 컴퓨터 시스템(106)은 새로운 서브넷에 대한 새로운 피어 목록 을 구축하기 위해서, 피어 목록을 구축하기 위한 상술된 단계들을 수행할 수 있다. 랩톱 컴퓨터 시스템(106)이 규칙적으로 특정 서브넷들의 구성원이면, 랩톱 컴퓨터 시스템(106)은 서브넷들과 연결할 때마다 피어 목록을 구축하는 단계들을 수행해야할 필요를 피하기 위해서 이 서브넷들에 대한 피어 목록을 유지할 수 있다. 컴퓨터 시스템이 유지하는 서로 다른 피어 목록들의 수는 정적으로 정의된(statically defined) 수일 수 있고, 또는 대안적으로 그 수는 사용자 또는 네트워크 관리자가 구성할 수 있는(configurable) 수일 수 있다.
특히, 컴퓨터 시스템이 새로운 서브넷으로 이동하지만, 새로운 피어 그룹을 형성하지 않는 상황이 있을 수 있다. 예를 들어, 랩톱 컴퓨터가 인터넷 카페로 이동하면, 랩톱 컴퓨터는 아마도 새로운 피어 그룹을 형성하지 않는다. 사용가능한 피어들과의 통신은 이것 및 다른 상황들에서 너무 위험(risky)할 수 있다.
컴퓨터 시스템은 또한 처음 네트워크에 추가될 때 피어 목록을 구축하도록 구성될 수 있다. 이것은 임의의 새로운 컴퓨터 시스템에 의해 이루어질 수 있으며, 랩톱 시스템에 제한되는 것이 아니다.
다시 도 2를 참조하면, 피어 목록의 컴퓨터를 인증하는 동작(단계 204)이 도시된다. 인증은 피어가 신뢰된 기계임을 검증하는 것을 포함한다. 한 실시예에서, 컴퓨터 시스템은 피어가 특정 보안 그룹의 구성원임을 검증할 수 있다. 검증은, 예를 들어, 프로토콜을 사용하여, 컴퓨터 시스템과 피어 모두 상호-인증(mutual-authentication)을 수행하도록 할 수 있다. 이러한 방식으로, 컴퓨터 시스템 및 피어 둘 다의 ID를 검증함으로써, 컴퓨터 시스템 또는 피어 목록의 피어 가 같은 보안 그룹에 있다고 믿도록 서로를 "속이는(spoofing)" 것을 막는다. 이 상호 인증을 위한 한 프로토콜이 커베로스(Kerberos)일 수 있다. 피어가 검증에 실패하면, 피어는 피어 목록으로부터 제거될 수 있다.
피어가 검증되고 나면, 컴퓨터 시스템과 피어는 키를 공유함으로써, 이어지는 쿼리들에 앞서, 이어지는 검증들이 수행될 필요가 없도록 한다. 키는 트러스트 검증을 효과적으로 만들기 위해 만료 기간을 가질 수 있다. 이러한 만료 기간은 예를 들어, 하루일 수 있다.
피어가 검증되고 난 후, 도 2는 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리하는 동작(단계 204)을 도시한다. 피어 목록의 피어를 쿼리하는 것은, 한 예시적인 실시예에서, 피어들 중 하나가 컴퓨터 시스템이 찾고 있는 파일 또는 파일의 부분을 가지고 있다고 응답할 때까지, 피어 목록의 각 피어들에게 유니캐스트 메시지를 송신하는 것을 포함한다. 여기에 사용된바, 유니케스트는 특정 컴퓨터로의 네트워크 쿼리임을 주의해야 한다. 여기에 설명된 유니캐스트는 반드시 데이터그램 프로토콜의 사용을 요구하지 않으며, TCP 및 기타 프로토콜과 같은 다른 프로토콜을 사용할 수 있다. 한 대안적인 실시예에서, 컴퓨터 시스템은 중복(overlapping)된 유니캐스트 메시지의 집합을 송신할 수 있다. 예를 들어, 컴퓨터 시스템은 이전에 유니캐스트 메시지를 보낸 피어들로부터 응답을 수신하기 전에 피어 목록의 피어들에게 유니캐스트 메시지를 송신할 수 있다.
쿼리하는 단계에서 송신한 메시지는 컴퓨터 시스템이 필요로 하는 파일을 식별하기 위한 다양한 매개변수를 포함할 수 있다. 예를 들어, 메시지는 파일 이름, 파일 크기, 파일 생성 날짜, 및/또는 파일의 해시 중 하나 이상을 포함할 수 있다. 구체적으로, 파일의 해시를 사용함으로써, 시스템은 정확한 파일이 사용가능함을 검출할 수 있다. 해시를 사용하여, 컴퓨터 시스템은 사용가능한 파일이 업데이트된 파일인지, 다른 파일의 중복 이름인지 등을 검출할 수 있다.
컴퓨터 시스템이 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리한 후(단계 206), 도 2에 도시된 방법은, 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있다는 메시지를 피어 목록의 피어로부터 수신하는 동작(단계 208)을 도시한다.
피어가 피어 서버로서 동작할지 결정할 때, 피어는 다양한 정책 규칙(policy rule)을 참조할 수 있다. 추가적으로, 피어가 사용가능한 파일을 가지고 있을 때에도, 그 피어는 정책 규칙에 따라 피어 서버로서 동작하지 않기로 선택할 수 있다. 이러한 정책 규칙은 컴퓨터 시스템의 처리 능력(processing power)을 고려할 수 있다. 예를 들어, 강력한(powerful) 데스크톱 또는 서버 클래스 컴퓨터는 더 많은 피어들, 예를 들어, 랩톱 컴퓨터 시스템(106)과 같은 랩톱 컴퓨터에 대해 피어 서버로서 동작하도록 허락하는 정책 규칙을 포함할 수 있다. 다른 규칙들은 사용가능한 기계 리소스의 양과 관련될 수 있다. 예를 들어, 정책 규칙은 컴퓨터 시스템 리소스의 10% 이상이 사용될 때, 컴퓨터 시스템의 피어 서버로서 동작하는 능력을 제한할 수 있다. 시스템 리소스는 시스템의 CPU 로드 및 디스크 입/출력 로드 중 더 큰 것의 측정값일 수 있다. 또한, 랩톱 컴퓨터는, 랩톱 컴퓨터 시스템(106)의 동작 상태에 기초하여, 랩톱 컴퓨터 시스템(106)이 피어 서버로서 동작 하는 피어의 수를 조정하는 정책을 참조할 수 있다. 예를 들어, 랩톱 컴퓨터 시스템(106)이 도킹 스테이션과 연결되면, 랩톱 컴퓨터는 도킹 스테이션과 연결되지 않았을 때보다 더 많은 피어들을 상대하도록 구성될 수 있다. 더 나아가, 랩톱 컴퓨터 시스템(106)이 유선 연결을 통해 연결되었을 때, 랩톱 컴퓨터 시스템(106)은 무선 방식으로 피어 컴퓨터들과 연결되었을 때보다 더 많은 피어들을 상대할 수 있다. 또한 다른 예에서, 랩톱 컴퓨터 시스템(106)과 연결되도록 허락되는 피어의 수는 배터리 레벨과 관련된 정책에 의해 정의될 수 있다. 예를 들어, 랩톱이 배터리로 실행되고 있고 전력이 50% 보다 적을 때, 랩톱 컴퓨터 시스템(106)은 더 이상의 피어 컴퓨터 연결을 허락하지 않는 정책을 따를 수 있다.
피어가 피어 서버로서 동작하기로 결정하면, 피어 서버는 다시 컴퓨터 시스템으로 메시지를 송신하며, 이는 컴퓨터 시스템에 의해 수신(단계 208)된다.
컴퓨터 시스템이 피어 목록의 잠재적 피어 서버로부터, 다운로드 가능한 파일 또는 파일의 부분을 잠재적 피어 서버가 가지고 있음을 나타내는 메시지를 수신한 후, 컴퓨터 시스템은 파일 또는 파일의 부분을 다운로드(단계 210)한다. 다운로드는 임의의 적절한 방식으로 이루어질 수 있다. 특히, 여기에 암시된 바와 같이, 컴퓨터 시스템은 전체 파일이 아닌 파일의 부분을 다운로드할 수 있다. 파일의 다른 부분들은 다른 피어 서버로부터 획득될 수 있다. 몇몇 환경에서, 이것은 대용량 파일이 다운로드되는 속도를 증가시킬 수 있다.
한 실시예에서, 방법(200)은 파일 또는 파일의 부분을 검증하는 것(단계 212)을 더 포함한다. 검증은 파일이 정확한 파일이고, 파일이 악성으로 변경되지 않았고/거나 파일이 손상되지 않았음을 확인한다. 이것은, 예를 들어, 파일 또는 파일의 부분의 해시를 계산함으로써 이루어질 수 있다. 계산된 해시 값이 기대되는 해시 값에 부합하지 않으면, 컴퓨터 시스템은 파일 또는 파일의 부분을 폐기한다. 추가적으로, 컴퓨터 시스템은 파일을 제공한 피어 서버를, 피어 서버가 용의자(suspect)라는 것을 나타내는 격리 목록(quarantine list)에 놓을 수 있다. 대안적인 실시예에서, 피어 서버는 피어 목록 전체로부터 제거될 수 있다. 다음, 컴퓨터 시스템은 파일을 피어 목록의 다른 피어 또는 중앙 파일 서버로부터 가져오기 위한 시도를 할 수 있다. 컴퓨터 시스템은 또한 파일에 문제가 있음을 파일을 제공한 피어 서버에 알릴 수 있다. 이것은 피어 서버가 파일을 폐기하도록 한다. 다른 컴퓨터 시스템들 또한 파일의 의심되는 성질에 대해 통지될 수 있다.
이제 도 3을 참조하면, 잠재적 피어 서버의 관점에서 파일을 캐싱 및 공유하기 위한 방법(300)을 보여주는 실시예가 도시된다. 도 3에 도시된 방법은 네트워크의 컴퓨터 시스템에서 실행될 수 있으며, 여기서 네트워크는 네트워크로 연결된 하나 이상의 컴퓨터를 포함한다.
방법(300)은 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 동작(단계 302)을 포함한다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)은, 컴퓨터 시스템이 공유할 파일을 가지고 있을 때, 서브넷 상의 멀티캐스트를 이용하여 수행될 수 있다. 대안적인 실시예에서, 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것은, 피어 컴퓨터를 찾는 시스템으로부터 통신 유도 요청을 수신한 것에 대한 응답으로, 멀티캐스트 또는 유니캐 스트를 이용하여 수행될 수 있다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)이 통신 유도 요청을 수신한 것에 대한 응답으로 수행될 때, 컴퓨터 시스템은 도 2의 기술과 함께 상술된 절차를 사용하여 무작위 지연(random delay)을 이용하여 응답할 수 있다.
방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있는지 발견하기 위한 요청을 수신하는 동작을 포함한다(단계 304). 수신된 메시지는 자신의 피어 목록에 컴퓨터 시스템을 포함하는 시스템으로부터의 유니캐스트 요청일 수 있다. 대안적인 실시예에서, 요청은 상술된 것과 같이 중복된 유니캐스트일 수 있다. 파일에 대한 보안이 요구되지 않을 때 멀티캐스트 요청 또한 사용될 수 있다.
방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 동작을 포함한다(단계 304). 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 것(단계 304)은 동적 옵트-인/옵트-아웃 규칙에 기초하여 수행된다. 예를 들어 한 실시예에서, 정책 규칙은 컴퓨터 시스템의 처리 능력을 고려할 수 있다. 강력한 데스크톱 또는 서버 클래스 컴퓨터는 다른 덜 강력한 시스템들보다 많은 피어들에게 피어로서 동작할 수 있도록 해주는 정책 규칙을 가질 수 있다. 다른 규칙들은 사용가능한 기계 리소스의 양과 관련될 수 있다. 예를 들어, 정책 규칙은 10% 이상의 컴퓨터 시스템 리소스가 사용될 때, 피어 서버로서 동작하는 컴퓨터 시스템의 능력을 제한할 수 있다. 시스템 리소스는 시스템의 CPU 로드 및 디스크 입/출력 로드 중 더 큰 것의 측정값일 수 있다. 랩톱 컴퓨터와 관련된 대안적인 실시예에서, 랩톱 컴퓨터는, 랩톱 컴퓨터 시스템(106)의 동작 상태에 기초하여, 랩톱 컴퓨터 시스템(106)이 피어 서버로서 동작하는 피어의 수를 조정하는 정책을 참조할 수 있다. 예를 들어, 랩톱 컴퓨터 시스템(106)이 도킹 스테이션과 연결되면, 랩톱 컴퓨터는 도킹 스테이션과 연결되지 않았을 때보다 더 많은 피어들을 상대하도록 구성될 수 있다. 더 나아가, 랩톱 컴퓨터 시스템(106)이 유선 연결을 통해 연결되었을 때, 랩톱 컴퓨터 시스템(106)은 무선 방식으로 피어 컴퓨터들과 연결되었을 때보다 더 많은 피어들을 상대할 수 있다. 또한 다른 예에서, 랩톱 컴퓨터 시스템(106)과 연결되도록 허락되는 피어의 수는 배터리 레벨과 관련된 정책에 의해 정의될 수 있다. 예를 들어, 랩톱이 배터리로 실행되고 있고 전력이 50% 보다 적을 때, 랩톱 컴퓨터 시스템(106)은 더 이상의 피어 컴퓨터 연결을 허락하지 않는 정책을 따를 수 있다.
방법(300)은 또한, 파일을 다운로드하기 위한 요청을 수신하는 동작을 포함한다(단계 308). 더 나아가, 방법(300)은 요청하는 시스템으로 파일을 송신하는 동작을 포함한다(단계 310). 이것은 네트워크의 다른 시스템들에게 피어 서버로 동작하는 컴퓨터 시스템에 의해 수행될 수 있다.
이제 도 4를 참조하면, 다양한 메시징 포맷을 포함하는, 파일을 캐싱 및 공유하기 위한 방법(400)을 나타내는 실시예가 도시된다. 도 4에 도시된 방법은 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 네트워크의 컴퓨터 시스템에서 실행될 수 있다.
방법은 컴퓨터 시스템이 잠재적 피어를 발견하기 위해 서브넷의 컴퓨터 시스 템들에게 브로드캐스트 신호를 송신하는 동작을 포함한다(단계 402). 브로드캐스트 신호는 미리 결정된 수의 응답에 대한 요구를 나타낼 수 있다. 대안적인 실시예에서, 브로드캐스트는 다양한 매개변수를 포함하여 컴퓨터 시스템이 브로드캐스트 신호에 대한 임의의 응답을 산정하도록 할 수 있다. 예를 들어, 매개변수들은 응답의 타이밍(timing), 응답하는 시스템의 하드웨어 특성의 평가 등을 허락할 수 있다.
다음, 컴퓨터 시스템은 서브넷의 컴퓨터 중 하나로부터 신호를 수신한다(단계 404). 신호는 제공될 수 있는 파일의 목록, 신호를 송신하는 시스템의 특성 등을 포함할 수 있다. 신호는 멀티캐스트 신호, 또는 몇몇 경우에서, 유니캐스트 신호일 수 있다.
컴퓨터 시스템은 서브넷의 컴퓨터 중 상기 하나를 피어 목록에 추가한다(단계 406). 피어 목록은 미리 결정된 수 이하의 피어들만을 포함한다. 예를 들어, 피어 목록은 100개 이하의 피어만을 포함할 수 있다. 이것은 다운로드하기 위한 파일 또는 파일의 부분을 찾는 데 필요한 프로세싱의 양 및 네트워크 사용량을 컴퓨터 시스템이 제한할 수 있도록 한다.
컴퓨터 시스템은 컴퓨터 시스템 중 하나가 다운로드 가능한 파일 또는 파일의 부분을 갖고 있는지 발견하기 위해, 서브넷의 컴퓨터 시스템 중 하나에 유니캐스트 신호를 송신한다(단계 408). 컴퓨터 시스템은 다른 컴퓨터 시스템들에 대해서도 이 과정을 반복하여 파일 또는 파일의 부분이 위치한 곳을 찾을 수 있다. 특히, 유니캐스트 신호들은 중복되어, 동일한 컴퓨터 시스템으로부터 동시에 유니캐 스트가 발생할 수 있다.
컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터, 서브넷의 컴퓨터 시스템 중 하나가 다운로드 가능한 파일 또는 파일의 부분을 가지고 있음을 나타내는 유니캐스트 신호를 수신한다(단계 410).
다음, 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터 파일 또는 파일의 부분을 다운로드할 수 있다(단계 412).
당업자들은 본 발명이 개인용 컴퓨터, 핸드-헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 유형의 컴퓨터 시스템 구성을 통해 네트워크 컴퓨팅 환경에서 실행될 수 있음을 이해할 것이다. 본 발명은 또한 (배선 연결(hardwired link), 무선 연결, 또는 배선 및 무선연결의 조합에 의해) 통신 네트워크를 통해 연결되어 있는 로컬 및 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.
본 발명의 범위 내에 있는 실시예들은 또한, 컴퓨터 실행가능 명령어들을 지니거나 저장하기 위한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 사용가능한 매체일 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광학 디스크 저장소, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 필요한 프로그램 코드 수단을 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 지 니거나 저장하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체들을 포함하지만, 이에 제한되지는 않는다. 네트워크 또는 다른 통신 연결(배선, 무선, 또는 배선 또는 무선의 조합)을 통해 정보가 컴퓨터에 전송될 때, 컴퓨터는 적절하게 이 연결을 컴퓨터 판독가능 매체로 본다. 따라서, 모든 이러한 연결은 적절하게 컴퓨터 판독가능 매체라 불린다. 상기의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터 실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 특정 기능 또는 기능들의 그룹을 수행하도록 하는 명령어 및 데이터를 포함한다.
본 발명이 구조적 특징 및/또는 방법론적 동작들에 있어 구체적인 언어로 설명되었지만, 첨부된 청구의 범위에 정의된 본 발명이 반드시 상술된 특정한 특징 또는 동작들에 제한되는 것이 아님을 이해해야 한다. 오히려, 상술된 특정한 특징 및 동작들은 청구의 범위를 구현하기 위한 예시적인 형태로서 개시된 것이다.
본 발명은 본 발명의 정신 또는 본질적 특성들을 벗어나지 않고 다른 특정 형태들에 구현될 수 있다. 설명된 실시예들은 모든 관점에서 단지 예시적이고 제한적이지 않은 것으로 고려되어야 한다. 따라서, 본 발명의 범위는 앞선 설명보다는 첨부된 청구의 범위에 의해 나타난다. 청구항의 등가(equivalency)의 의미 및 범위 내의 모든 변경들은 청구의 범위 내에 포함되어야 한다.

Claims (20)

  1. 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서,
    상기 네트워크로 연결된 하나 이상의 컴퓨터 중에서 잠재적 피어 서버(potential peer servers)의 목록을 포함하는 피어 목록을 구축하는 단계- 상기 피어 목록은 미리 결정된 개수(predetermined number) 이하의 잠재적 피어 서버를 포함함-와,
    파일 또는 파일의 일부에 대해 상기 피어 목록의 잠재적 피어 서버에 쿼리(query)하는 단계와,
    상기 피어 목록의 잠재적 피어 서버로부터, 상기 잠재적 피어 서버가 다운로드 가능한 파일 또는 파일의 일부를 가지고 있다는 메시지를 수신하는 단계와,
    상기 잠재적 피어 서버로부터 상기 파일 또는 파일의 일부를 다운로드하는 단계를 포함하되,
    상기 피어 목록을 구축하는 단계는,
    (a) 요구되는 잠재적 피어 서버의 개수에 대한 표시(indication)를 포함하는 의뢰 요구(solicitation request)를 하나 이상의 컴퓨터에 송신하는 단계와,
    (b) 상기 컴퓨터로부터 메시지 응답을 수신하는 단계- 상기 컴퓨터는 다른 컴퓨터로부터의 멀티캐스트 응답을 들으면서(listening) 무작위의 시간 간격(random interval of time)을 대기하고, 상기 컴퓨터는 상기 다른 컴퓨터로부터의 응답을 검출하여 상기 다른 컴퓨터로부터의 응답의 개수를 판정하며, 상기 컴퓨터는 상기 다른 컴퓨터로부터, 요구되는 잠재적 피어 서버의 개수에 대응하는 응답의 개수를 검출하지 못한 경우에만 응답을 송신하고, 상기 컴퓨터는 상기 다른 컴퓨터로부터, 요구되는 잠재적 피어 서버의 개수에 표시된 응답의 개수를 검출한 경우에는 응답을 송신하지 않음 -와,
    (c) 상기 컴퓨터로부터 수신된 메시지 응답에 기초하여, 응답을 전송한 컴퓨터를 상기 미리 결정된 개수까지 상기 피어 목록에 상기 잠재적 피어 서버로서 추가하는 단계- 상기 잠재적 피어 서버는 상기 컴퓨터 시스템에 대한 상기 잠재적 피어 서버의 논리적 근접성(logical closeness)에 따라 상기 피어 목록에 추가됨 -와,
    (d) 상기 피어 목록으로부터 잠재적 피어 서버를 제거하는 단계와,
    (e) 상기 피어 목록으로부터 미리 결정된 개수의 잠재적 피어 서버가 제거된 경우, 단계(a) 내지 단계(c)를 반복하는 단계를 포함하는
    파일 캐싱 및 공유 방법.
  2. 제1항에 있어서,
    무작위의 시간 간격을 대기하는 상기 컴퓨터는, 응답 전에 대기하는 시간의 양을 결정하기 위해 DELAY=MAX_DELAY*Log(c*X+1)/Log(C+1)로 계산되는 대수적 무작위 지연(logarithmic random delay)을 사용하되, DELAY는 응답 전 지연이고, MAX_DELAY는 응답을 수신하는데 주어진 최대 시간의 양이며, X는 난수이고, C는 임의의 수인
    파일 캐싱 및 공유 방법.
  3. 제1항에 있어서,
    상기 송신하는 단계 및 수신하는 단계는 동일한 제 1 서브넷 상의 컴퓨터로 이루어지는
    파일 캐싱 및 공유 방법.
  4. 제3항에 있어서,
    상기 제 1 서브넷과의 접속을 해제하고, 제 2 서브넷과의 접속을 수립하며, 의뢰 요구를 송신함으로써 제2 피어 목록을 구축하는 단계와,
    상기 제2 서브넷의 컴퓨터로부터 응답을 수신하는 단계
    를 더 포함하는 파일 캐싱 및 공유 방법.
  5. 제1항에 있어서,
    상기 피어 목록을 구축하는 단계는,
    상기 컴퓨터로부터 멀티캐스트 패킷과 함께 자기-알림(self-announcement)을 수신하는 단계 - 상기 자기-알림은 상기 컴퓨터가 상기 네트워크의 다른 컴퓨터에게 제공될 수 있는 파일을 가지고 있다는 표시를 포함함 - 와,
    상기 컴퓨터를 상기 피어 목록에 추가하는 단계
    를 포함하는 파일 캐싱 및 공유 방법.
  6. 제1항에 있어서,
    상기 의뢰 요구는 트러스트 그룹(trust group)의 식별을 포함하는
    파일 캐싱 및 공유 방법.
  7. 제1항에 있어서,
    상기 파일 또는 파일의 일부가 손상되어 있음을 판정하고, 상기 파일 또는 파일의 일부가 손상되어 있음을 판정한 것에 대한 응답으로 상기 파일 또는 파일의 일부를 중앙 서버로부터 다운로드하는 단계를 더 포함하는
    파일 캐싱 및 공유 방법.
  8. 제7항에 있어서,
    상기 파일 또는 파일의 일부가 손상되어 있음을 판정하는 단계는 해시 값을 참조하는 단계를 포함하는
    파일 캐싱 및 공유 방법.
  9. 제1항에 있어서,
    상기 파일 또는 파일의 일부가 상기 피어 목록의 어떠한 컴퓨터로부터도 제공될 수 없음을 판정하고, 상기 파일 또는 파일의 일부가 상기 피어 목록의 어떠한 컴퓨터로부터도 제공될 수 없음을 판정한 것에 대한 응답으로, 상기 파일 또는 파일의 일부를 중앙 서버로부터 다운로드하는 단계를 더 포함하는
    파일 캐싱 및 공유 방법.
  10. 제1항에 있어서,
    파일 또는 파일의 일부에 대해 상기 피어 목록의 컴퓨터에 쿼리하기 전에 상기 피어 목록의 컴퓨터를 인증하는 단계를 더 포함하는
    파일 캐싱 및 공유 방법.
  11. 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 제1 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서,
    의뢰 요구(solicitation request)를 수신하는 단계- 상기 의뢰 요구는 하나 이상의 잠재적 피어로 전송되고 요구되는 잠재적 피어의 개수에 대한 표시(indication)를 포함함 -와,
    다른 잠재적 피어로부터의 멀티캐스트 응답을 들으면서 무작위의 시간 간격을 대기하고, 상기 다른 잠재적 피어로부터의 응답을 검출하여 상기 다른 잠재적 피어로부터의 응답의 개수를 판정하며, 요구되는 잠재적 피어의 개수에 대응하는 응답의 개수가 검출되지 않은 경우에만 상기 의뢰 요구에 대해 응답을 송신하고, 요구되는 잠재적 피어의 개수에 표시된 만큼 다른 잠재적 피어로부터의 응답의 개수가 검출된 경우에는 응답을 송신하지 않는 단계와,
    상기 무작위의 시간 간격이 지난 후에 상기 요구되는 잠재적 피어의 개수에 대응하는 응답의 개수가 검출되지 않았음을 검출하고, 그 결과로서, 상기 제1 컴퓨터 시스템이 잠재적 피어로서 이용가능하다는 메시지를 상기 제1 컴퓨터 시스템과 동일한 서브넷 상의 하나 이상의 컴퓨터 시스템에 전송하는 단계와,
    상기 제1 컴퓨터 시스템이 잠재적 피어로서 이용가능하다는 메시지를 상기 제1 컴퓨터 시스템과 동일한 서브넷 상의 하나 이상의 컴퓨터 시스템에 전송한 것의 결과로서, 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있는지를 알아내기 위한 요청을 요청 시스템으로부터 수신하는 단계와,
    상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있는지를 알아내기 위한 요청에 대한 응답으로, 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있다는 메시지를 상기 요청 시스템에 전송하는 단계와,
    상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있다는 메시지를 전송한 것의 결과로서, 상기 파일을 다운로드하기 위한 요청을 상기 요청 시스템으로부터 수신하는 단계와,
    상기 파일을 다운로드하기 위한 요청을 수신하는 것에 대한 응답으로, 상기 파일을 상기 요청 시스템으로 전송하는 단계를 포함하는
    파일 캐싱 및 공유 방법.
  12. 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서,
    (a) 잠재적 피어를 발견하기 위해 서브넷의 컴퓨터 시스템에게 브로드캐스트 신호를 송신하는 단계- 상기 브로드캐스트 신호는 요구되는 잠재적 피어의 개수에 대한 표시를 포함함 -와,
    (b) 상기 서브넷의 컴퓨터 시스템 중 하나로부터 응답 신호를 수신하는 단계- 상기 컴퓨터 시스템 중 하나는 다른 컴퓨터 시스템으로부터의 멀티캐스트 응답을 들으면서 무작위의 시간 간격을 대기하고, 상기 컴퓨터 시스템 중 하나는 상기 다른 컴퓨터 시스템으로부터의 응답을 검출하여 다른 컴퓨터 시스템으로부터의 응답의 개수를 판정하며, 상기 컴퓨터 시스템 중 하나는 상기 요구되는 잠재적 피어의 개수에 대응하는 다른 컴퓨터 시스템으로부터의 응답의 개수를 검출하지 않은 경우에만 상기 응답 신호를 송신하고, 다른 컴퓨터 시스템으로부터 상기 요구되는 잠재적 피어의 개수에 표시된 응답의 개수를 검출한 경우에는 응답 신호를 송신하지 않음 -와,
    (c) 상기 컴퓨터 시스템 중 하나의 논리적 근접성에 기초하여 상기 서브넷의 컴퓨터 시스템 중 상기 하나를 피어 목록에 선택적으로 추가하는 단계 -상기 피어 목록은 미리 결정된 개수 이하의 잠재적 피어를 포함함- 와,
    (d) 상기 피어 목록으로부터 잠재적 피어를 제거하는 단계와,
    (e) 미리 결정된 개수의 잠재적 피어가 상기 피어 목록으로부터 제거된 경우 상기 서브넷의 컴퓨터 시스템을 상기 피어 목록에 선택적으로 추가하는 단계와,
    상기 컴퓨터 시스템 중 상기 하나가 다운로드 가능한 파일 또는 파일의 일부를 가지고 있는지 알아내기 위해 상기 서브넷의 컴퓨터 시스템 중 상기 하나에 유니캐스트 신호를 송신하는 단계와,
    상기 서브넷의 컴퓨터 시스템 중 상기 하나로부터, 상기 서브넷의 컴퓨터 시스템 중 상기 하나가 다운로드 가능한 상기 파일 또는 파일의 일부를 가지고 있음을 나타내는 유니캐스트 신호를 수신하는 단계와,
    상기 서브넷의 컴퓨터 시스템 중 상기 하나로부터 상기 파일 또는 파일의 일부를 다운로드하는 단계
    를 포함하는 파일 캐싱 및 공유 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020087003133A 2005-08-30 2006-08-03 네트워크에서의 파일의 분산 캐싱 KR101322947B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/215,621 US7512943B2 (en) 2005-08-30 2005-08-30 Distributed caching of files in a network
US11/215,621 2005-08-30
PCT/US2006/030445 WO2007027361A2 (en) 2005-08-30 2006-08-03 Distributed caching of files in a network

Publications (2)

Publication Number Publication Date
KR20080047353A KR20080047353A (ko) 2008-05-28
KR101322947B1 true KR101322947B1 (ko) 2013-10-29

Family

ID=37805841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087003133A KR101322947B1 (ko) 2005-08-30 2006-08-03 네트워크에서의 파일의 분산 캐싱

Country Status (11)

Country Link
US (1) US7512943B2 (ko)
EP (1) EP1922615B1 (ko)
JP (1) JP4943437B2 (ko)
KR (1) KR101322947B1 (ko)
CN (1) CN101253488B (ko)
BR (1) BRPI0614925B1 (ko)
CA (1) CA2616916A1 (ko)
MX (1) MX2008002505A (ko)
NO (1) NO20080273L (ko)
RU (1) RU2413981C2 (ko)
WO (1) WO2007027361A2 (ko)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122609A (ja) * 2005-10-31 2007-05-17 Ricoh Co Ltd 構造化文書、コンテンツ配信サーバ装置及びコンテンツ配信システム
US7761503B2 (en) * 2006-01-06 2010-07-20 Microsoft Corporation Peer distribution point feature for system management server
GB0600348D0 (en) * 2006-01-10 2006-02-15 Ibm Updating of data processing and communication devices
US20070245323A1 (en) * 2006-04-13 2007-10-18 Apple Computer, Inc. Sharing compiled versions of files
US8156132B1 (en) 2007-07-02 2012-04-10 Pinehill Technology, Llc Systems for comparing image fingerprints
US7774385B1 (en) 2007-07-02 2010-08-10 Datascout, Inc. Techniques for providing a surrogate heuristic identification interface
US7801868B1 (en) * 2006-04-20 2010-09-21 Datascout, Inc. Surrogate hashing
US7840540B2 (en) 2006-04-20 2010-11-23 Datascout, Inc. Surrogate hashing
US7814070B1 (en) * 2006-04-20 2010-10-12 Datascout, Inc. Surrogate hashing
US7991206B1 (en) 2007-07-02 2011-08-02 Datascout, Inc. Surrogate heuristic identification
US8549022B1 (en) 2007-07-02 2013-10-01 Datascout, Inc. Fingerprint generation of multimedia content based on a trigger point with the multimedia content
US9020964B1 (en) 2006-04-20 2015-04-28 Pinehill Technology, Llc Generation of fingerprints for multimedia content based on vectors and histograms
US8463000B1 (en) 2007-07-02 2013-06-11 Pinehill Technology, Llc Content identification based on a search of a fingerprint database
WO2008033424A2 (en) * 2006-09-12 2008-03-20 Foleeo, Inc. Hive-based peer-to-peer network
US7953083B1 (en) 2006-12-12 2011-05-31 Qurio Holdings, Inc. Multicast query propagation scheme for a peer-to-peer (P2P) network
US8996484B2 (en) * 2007-02-13 2015-03-31 Red Hat, Inc. Recursive lock-and-propagate operation
US8316364B2 (en) * 2007-02-28 2012-11-20 Red Hat, Inc. Peer-to-peer software update distribution network
KR101409991B1 (ko) * 2007-04-16 2014-06-20 삼성전자주식회사 P2p 통신 환경에서의 데이터 전송 방법 및 장치
US8201164B2 (en) * 2007-07-20 2012-06-12 Microsoft Corporation Dynamically regulating content downloads
JP5007624B2 (ja) * 2007-08-10 2012-08-22 ブラザー工業株式会社 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
US8281298B2 (en) 2007-08-27 2012-10-02 International Business Machines Corporation Evaluating computer driver update compliance
GB2452325A (en) * 2007-08-31 2009-03-04 Sony Corp Method and system for distributing software to a portable device using software on a pre-recorded medium.
US8886803B1 (en) 2007-09-20 2014-11-11 Qurio Holdings, Inc. Dynamic query response in a distributed network
WO2009095461A1 (en) * 2008-01-30 2009-08-06 International Business Machines Corporation Method and system of updating a plurality of computers
US7599997B1 (en) 2008-08-01 2009-10-06 Gene Fein Multi-homed data forwarding storage
US7636759B1 (en) * 2008-09-29 2009-12-22 Gene Fein Rotating encryption in data forwarding storage
US7636761B1 (en) * 2008-09-29 2009-12-22 Gene Fein Measurement in data forwarding storage
US9203928B2 (en) 2008-03-20 2015-12-01 Callahan Cellular L.L.C. Data storage and retrieval
US8458285B2 (en) * 2008-03-20 2013-06-04 Post Dahl Co. Limited Liability Company Redundant data forwarding storage
US20090252071A1 (en) * 2008-04-02 2009-10-08 Nokia Corporation Method and deevice for network messaging
US8386585B2 (en) * 2008-04-25 2013-02-26 Tajitshu Transfer Limited Liability Company Real-time communications over data forwarding framework
US8452844B2 (en) * 2008-05-07 2013-05-28 Tajitshu Transfer Limited Liability Company Deletion in data file forwarding framework
US9198017B2 (en) * 2008-05-19 2015-11-24 Qualcomm Incorporated Infrastructure assisted discovery in a wireless peer-to-peer network
US9848314B2 (en) * 2008-05-19 2017-12-19 Qualcomm Incorporated Managing discovery in a wireless peer-to-peer network
US9237086B2 (en) * 2008-05-30 2016-01-12 Genband Us Llc Methods and apparatus for network traffic distribution based on random number values
US8769277B2 (en) * 2008-06-23 2014-07-01 Microsoft Corporation Content retrieval
US8599678B2 (en) 2008-07-10 2013-12-03 Tajitshu Transfer Limited Liability Company Media delivery in data forwarding storage network
US8370446B2 (en) 2008-07-10 2013-02-05 Tajitshu Transfer Limited Liability Company Advertisement forwarding storage and retrieval network
US8352635B2 (en) * 2008-09-29 2013-01-08 Tajitshu Transfer Limited Liability Company Geolocation assisted data forwarding storage
US8478823B2 (en) 2008-09-29 2013-07-02 Tajitshu Transfer Limited Liability Company Selective data forwarding storage
US7685248B1 (en) * 2008-09-29 2010-03-23 Gene Fein User interface in data forwarding network
US7961741B2 (en) * 2008-10-23 2011-06-14 Silver Spring Networks, Inc. Rapid dissemination of bulk information to widely dispersed network nodes
EP2234375A1 (en) * 2009-03-24 2010-09-29 Thomson Licensing device and method for controlling dissemination of content data between peers in a P2P mode, by using a two-level randomized peer overlay and a dynamic unchoke mechanism
CN101764824B (zh) * 2010-01-28 2012-08-22 深圳市龙视传媒有限公司 一种分布式缓存控制方法、装置及系统
JP2012088955A (ja) * 2010-10-20 2012-05-10 Nec Corp データ複製システム、データ複製サーバ、データ複製方法、及び、データ複製プログラム
US8681758B2 (en) 2010-12-14 2014-03-25 Symbol Technologies, Inc. Video caching in a wireless communication network
EP2477377A1 (en) * 2011-01-14 2012-07-18 Alcatel Lucent Peer node and method for improved peer node selection
EP2681869B1 (en) * 2011-02-28 2018-01-31 Bittorrent, Inc. Peer-to-peer live streaming
CN102752335B (zh) * 2011-04-22 2017-08-08 中兴通讯股份有限公司 对等叠加网中节点过负荷信息订阅方法及系统
US20130007218A1 (en) * 2011-06-28 2013-01-03 Cisco Technology, Inc. Network Assisted Tracker for Better P2P Traffic Management
US20130073671A1 (en) * 2011-09-15 2013-03-21 Vinayak Nagpal Offloading traffic to device-to-device communications
US20130156030A1 (en) * 2011-12-16 2013-06-20 Jeremy Johnson Rapid dissemination of information to widely dispersed network nodes via patch
US9432452B2 (en) 2012-09-10 2016-08-30 Joosy, Inc. Systems and methods for dynamic networked peer-to-peer content distribution
JP5971065B2 (ja) * 2012-09-28 2016-08-17 富士通株式会社 通信方法、無線端末および通信システム
JP5487273B1 (ja) * 2012-10-26 2014-05-07 日本電信電話株式会社 情報伝達装置及びそのプログラム
CN104202362B (zh) * 2014-08-14 2017-11-03 上海帝联信息科技股份有限公司 负载均衡系统及其内容分发方法和装置、负载均衡器
US10462249B2 (en) * 2014-08-25 2019-10-29 Super Micro Computer, Inc. Globally distributed virtual cache for worldwide real-time data access
CN104461940A (zh) * 2014-12-17 2015-03-25 南京莱斯信息技术股份有限公司 网络虚拟磁盘客户端高效缓存及延迟写入方法
US10491512B2 (en) * 2015-05-20 2019-11-26 Qualcomm Incorporated Supporting packet query-response transactions at lower layer
US10693720B2 (en) * 2017-04-10 2020-06-23 Cisco Technology, Inc. Distribution of updates in an IoT network
US11553014B2 (en) * 2017-07-04 2023-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
CN113660168B (zh) * 2021-10-19 2021-12-31 上海柯林布瑞信息技术有限公司 一种多中心研究数据的处理方法、装置和服务器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010027479A1 (en) 1998-10-05 2001-10-04 Backweb Technologies, Ltd. Distributed client-based data caching system
JP2002318720A (ja) 2001-04-19 2002-10-31 Oki Electric Ind Co Ltd コンテンツ配信管理システム
US20030233455A1 (en) 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
JP2005094773A (ja) 2003-09-15 2005-04-07 Microsoft Corp 参加局所性認識オーバーレイモジュールを含むコンピュータ化されたシステム及びコンピュータによって実施される方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128295A (en) * 1997-07-11 2000-10-03 Telefonaktiebolaget Lm Ericsson Buffering of point-to-point and/or point-to-multipoint ATM cells
US20020062336A1 (en) * 2000-11-22 2002-05-23 Dan Teodosiu Resource coherency among resources cached in a peer to peer environment
US7035911B2 (en) * 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
US7197565B2 (en) * 2001-01-22 2007-03-27 Sun Microsystems, Inc. System and method of using a pipe advertisement for a peer-to-peer network entity in peer-to-peer presence detection
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
JP2004537080A (ja) * 2001-01-25 2004-12-09 デービッド・シドマン 情報アクセスを追跡するための装置、方法及びシステム
US6983326B1 (en) * 2001-04-06 2006-01-03 Networks Associates Technology, Inc. System and method for distributed function discovery in a peer-to-peer network environment
US20030009570A1 (en) * 2001-07-03 2003-01-09 International Business Machines Corporation Method and apparatus for segmented peer-to-peer computing
US7003514B2 (en) * 2001-09-13 2006-02-21 International Business Machines Corporation Method and apparatus for restricting a fan-out search in a peer-to-peer network based on accessibility of nodes
JP3997774B2 (ja) * 2001-12-11 2007-10-24 ソニー株式会社 データ処理システム、データ処理方法、および情報処理装置、並びにコンピュータ・プログラム
US7117264B2 (en) 2002-01-10 2006-10-03 International Business Machines Corporation Method and system for peer to peer communication in a network environment
US7574488B2 (en) * 2002-05-31 2009-08-11 Hitachi, Ltd. Method and apparatus for peer-to-peer file sharing
JP2004127168A (ja) * 2002-10-07 2004-04-22 Sony Corp 通信処理装置、および通信処理方法、並びにコンピュータ・プログラム
EP1429513A1 (en) * 2002-12-09 2004-06-16 Koninklijke Philips Electronics N.V. Method and apparatus for searching data in a peer to peer network
US20050076092A1 (en) * 2003-10-02 2005-04-07 Sony Corporation And Sony Electronics Inc. User shared virtual channel via media storage
US7660889B2 (en) * 2003-11-18 2010-02-09 Cisco Technology, Inc. Initialization and acquisition of peers in a peers' list in a peer-to-peer network
US8239446B2 (en) * 2003-11-19 2012-08-07 Sony Computer Entertainment America Llc Content distribution architecture
US7627644B2 (en) * 2003-11-28 2009-12-01 Canon Kabushiki Kaisha Recipient-centred proactive caching in a peer-to-peer system
US7342900B2 (en) * 2004-05-19 2008-03-11 Hewlett-Packard Development Company, L.P. Apparatus and method for estimating device availability
US20060212542A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for file downloading in a peer-to-peer network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010027479A1 (en) 1998-10-05 2001-10-04 Backweb Technologies, Ltd. Distributed client-based data caching system
JP2002318720A (ja) 2001-04-19 2002-10-31 Oki Electric Ind Co Ltd コンテンツ配信管理システム
US20030233455A1 (en) 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
JP2005094773A (ja) 2003-09-15 2005-04-07 Microsoft Corp 参加局所性認識オーバーレイモジュールを含むコンピュータ化されたシステム及びコンピュータによって実施される方法

Also Published As

Publication number Publication date
RU2008107742A (ru) 2009-09-10
CN101253488A (zh) 2008-08-27
JP4943437B2 (ja) 2012-05-30
US20070050761A1 (en) 2007-03-01
RU2413981C2 (ru) 2011-03-10
CA2616916A1 (en) 2007-03-08
BRPI0614925B1 (pt) 2018-04-24
MX2008002505A (es) 2008-04-07
WO2007027361A2 (en) 2007-03-08
US7512943B2 (en) 2009-03-31
CN101253488B (zh) 2010-06-02
EP1922615B1 (en) 2016-06-15
BRPI0614925A2 (pt) 2011-04-19
KR20080047353A (ko) 2008-05-28
JP2009506455A (ja) 2009-02-12
EP1922615A4 (en) 2009-09-02
EP1922615A2 (en) 2008-05-21
NO20080273L (no) 2008-03-31
WO2007027361A3 (en) 2008-01-24

Similar Documents

Publication Publication Date Title
KR101322947B1 (ko) 네트워크에서의 파일의 분산 캐싱
US20220046088A1 (en) Systems and methods for distributing partial data to subnetworks
US10193907B2 (en) Intrusion detection to prevent impersonation attacks in computer networks
KR20020079425A (ko) 피어 투 피어 네트워크 환경내에서 자원들을 안전하고검증가능하게 공유하는 시스템 및 방법
KR20020079426A (ko) 피어 투 피어 네트워크 환경내에서 피어의 신뢰성 상태를검증하는 시스템 및 방법
US10440038B2 (en) Configuration management for network activity detectors
Zhang The role of data repositories in named data networking
Kurokawa et al. Study on the distributed data sharing mechanism with a mutual authentication and meta database technology
AU2023203129B2 (en) Systems and methods for distributing partial data to subnetworks
KR100945016B1 (ko) 메신저를 이용한 파일 배포 시스템 및 그 방법
Rahman et al. iDispatcher: A unified platform for secure planet-scale information dissemination
Agbariah Policy exchange and management for Policy Compliance and Change Detection System in managed service in data networks
Daniel et al. Exploring the design space of privacy-enhanced content discovery for bitswap
Cowan S4h: A Peer-to-Peer Search Engine with Explicit Trust
WO2016096055A1 (en) Method, network node and terminal device in a communication network
Xin et al. Automatic patching based on social computing in P2P network
Eum et al. Design of ICN-enabled IEEE 802.11 wireless access points
Kumar Bluetooth quality issues, threats and security tips
Gajalakshmi et al. Globally trusted model for assisting peers using greedy forwarding technique
del Campo et al. ARES project CONSOLIDER-INGENIO 2011 CSD2007-00004 Workpackage 2-Task 4 (WP2. T4) Development of a middleware for service discovery over ubiquitous networks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 6