Application Layer 패러다임 : Peer-to-Peer(P2P) 패러다임
- 항상 서버가 있는 상태가 아니어도 됨
- 임의의 양단간 시스템 간의 직접적인 소통
- peer는 간헐적으로 연결되고 IP 주소를 바꿈
- 확장 가능성이 높음
- 분산성이 강함
- 관리가 어려움
개념
- 각 컴퓨터(peer)가 클라이언트 / 서버의 역할을 모두 가능
- 네트워크 상의 peer는 동일 네트워크 상의 다른 peer들에게 파일을 공유 가능
- centralized, decentralized
Centalized P2P Network
- directory 시스템을 기준으로 중앙집중화 - 연결된 peer 들의 총괄 관리자 개념의 서버 시스템
- directory 시스템은 클라이언트 서버 패러다임 사용
- 클라이언트 서버 패러다임처럼 directory 시스템이 서버 역할을 하고 나머지 peer들이 클라이언트
- peer들 간의 파일 공유만 peer간 직접 소통을 통해 가능
Decentralized P2P Network
- directory 시스템이 없음
- peer가 가상 네트워크 상에 존재함 (물리 네트워크보다 많은 양의 노드를 연결할 수 있는 논리 네트워크)
- unstructured / structured
unstructured decentralized P2P network
- 노드간 랜덤 연결
- 노드 탐색 비효율적
- 방대한 트래픽 생성
- ex) Gnutella, Freenet
structured decentralized P2P network
- 사전 정의된 규칙에 따라 노드 연결
- 탐색 효율적
- 주로 사용하는 기법 : 분산 해시 테이블 Distributed Hash Table (DHT)
- ex) BitTorrent
분산 해시 테이블 Distributed Hash Table (DHT)
- structured decentralized P2P network에서 노드간 연결 규칙으로 사용하는 테이블
- 각 데이터/컴퓨터(peer) = 노드
- 각 노드들을 맵핑시키는 address space 크기 : m개의 노드를 저장하는 경우 - 2^m 크기의 address space (대부분 160개의 노드 저장)
peer / 컴퓨터의 식별자 (node ID) 해싱
- 네트워크 상에 존재하는 모든 피어 컴퓨터들의 식별자를 만들어 주소 공간 address space에 배치해 두어야 함
- node id = hash(peer ip 주소) = m-bit integer
object / 파일의 식별자 (key) 해싱
- 네트워크 상에서 피어 간 주고 받는 파일들에게도 식별자가 주어져 주소 공간에 배치되어야 함
- key = hash(Object name) = m-bit integer
DHT에 노드 저장 (예시)
- m = 5인 경우를 가정
- 네트워크 상에 참여해 있는 피어 컴퓨터 IP 주소 : 110.34.56.20
- 피어 컴퓨터의 node ID = hash(110.34.56.20) = 5
- 파일 / 오브젝트 이름 = Liberty
- 오브젝트의 key = hash("Liberty") = 14
- key14 오브젝트 참조 정보는 key와 가장 가까운 노드(피어 컴퓨터)에 저장
- DHT 구현에 사용되는 프로토콜 : Chord, Pastry, Kademlia
References
- 성균관대학교 소프트웨어학과 추현승 교수님 2021-1 컴퓨터 네트워크 개론
'컴퓨터 공학 > 컴퓨터 네트워크' 카테고리의 다른 글
[Python3/컴퓨터 네트워크] 소켓 프로그래밍 : 입력한 문자열 reverse 하는 클라이언트 서버 프로그램 (0) | 2021.04.08 |
---|---|
[컴퓨터 네트워크] Chapter3) Computer Network : Transport Layer (0) | 2021.03.29 |
[컴퓨터 네트워크] Kademlia DHT 카뎀리아 분산해시테이블 알아보기 (0) | 2021.03.25 |
[컴퓨터 네트워크/MacOS] Scapy 설치 및 사용하기 (0) | 2021.03.25 |
[컴퓨터 네트워크] Chapter3) Socket Programming (0) | 2021.03.23 |