P2P Application(peer to peer) 구조
- server는 고정되어있지도 않고 항상 커져있지 않은 구조이다
- endsystem들끼리 직접적으로 통신을 진행하는 구조이다.
- cilent-server구조와 다르게 모든 end system들이 서버역할이자 클라이언트 역할을 할 수 있다.
우리가 자주 접하는 p2p예시로는 BitTorrent, KanKan,등이 있다.
p2p filesharing의 기술 변화
일단 cilent-server구조와 다르게 p2p에서는 파일을 server말고 근접한 peer에게 받으면 좋지 않을까? 라는 생각이 등장하여서 시작된 방법이라고 볼 수 있다.
그리고 발전 과정은 peer끼리 파일을 주고 받는것이기에 어느 파일을 누가 가지고 있는 지 아는 것과 누구한테 받는것이 가장 좋은지에 대한것을 알기위한 방향으로 진행하였다.
Napster(Centralized directory)
p2p의 가장초기모델
- 중앙에 server를 두고 endsystem들이 server에게 IP주소, contents를 누가 가지고 있는지 정보를 물어보고 server에게 응답을 받은 후 다시 content를 가지고 있는 endsystem에게 요청을 보내는 매우 간단한 방식이다.
- server가 누가 가지고 있는지에 대한 정보들을 가지고 있기 때문에 저작권문제로 인해 초기모델을 성공적이지 못했다
Gnutella
- Query 메시지를 TCP가 연결되어있는 Peer에게 모두 보내는 방식
- 그 Query를 받은 peer들은 또 이웃들에게 계속 Query를 보내 결국 파일을 가지고 있는 peer가 응답을 넘기는 방식
- 각각의 단말들은 자기들의 이웃을 알고 있어 계속 건너건너 파일공유의 요청을 보낸다.*
하지만 단점으로는 파일을 가지고 있는 단말이 멀리 있어 query가 너무 많이 퍼져나가면 응답이 안올 수 있는 상황이 발생할 수 도있기에 scalability(Limited scope flooding)범위를 정해서 퍼져나가는 것을 일정부분까지 진행되게 한다.
KaZaA(Exploiting Heterogeneity)
각각의 그룹의 리더를 두고 멤버들이 어떤 데이터를 가지고 잇는지 알고 있는 형태
결국 그룹의 리더들은 각각의 PEER들과 TCP로 연결이 되어있고, 리더들끼리 서로 TCP로 연결 되어있는 구조이다.
근데 왜 Cilent-Server 모델이 있는데 P2P모델을 사용 할려고 하는것일까?
N명의 endsystem들이 파일을 원한다고 가정을 해보자
Cilent-server모델
제공은 서버에서만 진행되고 N명의 cilent가 데이터를 받아야 된다. 하나의 파일을 크기를 서버가 단위시간당 내보낼 수 있는 양으로 나누는 것을 하나의 복사본을 Server가 내보낼 수 있는 시간이다. N명의 Client가 필요하기 때문에 N을 곱해줘야 된다.
그리고 파일을 받을려는 cilent중에서 Access network bandwidth가 제일 느린것이 최악의 다운로드 시간이 된다. 그래서 클라이언트-서버구조에서 N명의 cilent들이 파일을 모두 다운받는데 걸리는 시간은 **서버가 N개의 파일을 내보내는데 걸리는 시간, client들 중 다운로드가 가장 느린 시간 두개 중에서 최대값이 결정을 하게 된다.
P2P모델
'Network' 카테고리의 다른 글
컴퓨터네트워크_DNS (0) | 2022.05.10 |
---|---|
컴퓨터네트워크_Cookie and Cache (0) | 2022.05.06 |
컴퓨터네트워크_Web, HTTP (0) | 2022.05.04 |
컴퓨터네트워크_Application layer (0) | 2022.05.04 |
컴퓨터네트워크_Protocol Layers (0) | 2022.05.02 |