[Application layer: P2P application_1]
🤷♀️ P2P란?
양방향 파일 전송시스템(Peer-to-peer)
모든 노드(end system == peer)가 client, server 역할 둘 다 할 수 있다.
Self scalability(자체 확장성) : 새로운 peer는 새로운 서비스를 요구하고 새로운 서비스를 가져다 줌
Autonomous(자율성) : peer들은 간헐적으로 연결되고 IP 주소를 바꿈
예시 : Gnutella, BitTorrent, KanKan
😒 P2P의 이슈들
1. Lack of robustness(견고함의 부족)
2. Low capability of each node(각 노드의 낮은 능력)
3. Poor resource search(정보 부족)
4. NAT traversal(NAT 통과)
5. Free riding(무임승차)
6. Security(안전성)
- Lack of robustness: 서비스를 제공하고 받고 떠나는 것이 자유롭기 때문에 이런 특성이 통신망을 휘저어(?) 통신망이 견고하지 못함
- Low capability of each node: 낮은 대역폭, 낮은 성능의 컴퓨터, 낮은 가동시간
- Poor resource search: 서버가 따로 존재하는 게 아니라서 내가 원하는 정보를 누가 갖고 있는지 알기 어려움
- NAT traversal: 사설 ip 주소는 자기 스스로 ip주소 할당 가능, 공용 ip 주소에서는 이러한 사설 IP를 막기 때문에 이를 뚫고 나가는 방법이 필요.
Network Address Translation: 사설 ip와 공용 ip 간의 매핑 테이블을 생성하여 상호변환 해주는 기술
- Free riding: 받고 싶은 것만 받고 연결 끊어버리는 무임승차 이슈
- Security
🍕 File distribution time(파일 분배 시간)
- 각 peer가 파일을 업로드하고 다운받을 수 있는 용량은 제한되어 있음
[Client-Server]
- server transmission: N개 파일의 복사본을 차례대로 업로드 해야함. N개의 파일 복사본을 업로드하는 데 걸리는 시간은 NF/u(s)이다.
- client: 가장 작은 다운로드 용량을 가진 client = d(min), 다운로드하는데 걸리는 시간은 적어도 F/d(min)이다.
- N명의 client에게 파일을 분배하는 데 걸리는 시간 ⬇
- P2P와 달리 client가 늘어날 수록 전송에 더 오랜시간이 걸린다.
[P2P]
- server transmission: 적어도 한개의 복사본을 업로드 해야함. F/u(s)
- client: F/d(min)
- clients: 모든 peer들이 파일을 업로드하는 데 걸리는 시간. u(s) + S(ui)
- N명의 client에게 파일을 분배하는 데 걸리는 시간 ⬇
- Client-Server와 달리 peer가 늘어날 수록 전송에 더 오랜시간이 걸리지는 않는다.
- peer가 늘어날수록 전송해야할 파일크기와 함께 파일을 다운받을 수 있는 용량 S(ui)도 증가하기 때문.
✨ P2P vs Client-server
- client-sever에서 client가 늘어날 수록 파일 전송에 더 오랜 시간이 걸리는 반면, p2p는 peer가 늘어날 수록 파일 전송시간이 증가하지는 않는다(확장성 때문).