Peer-To-Peer Applications
P2P 개요
클라이언트가 송신, 제공 다 하는 역할 → 자기 확장성
항상 동작하지 않고, 피어의 IP 주소는 바뀔 수 있음
파일 분배: 클라이언트-서버 vs P2P
한 서버에서 F크기의 파일을 N개의 피어로 배포하는데 걸리는 시간?
클라이언트-서버
: N이 증가함에 따라 선형적으로 시간 증가
→ 서버가 N명한테 다 주는 방식
서버 전송
파일 1개: F/u
파일 N개: N*F/u
클라이언트
최소분배시간: F/d(min)
d(min) = 다운 로드가 가장 느린 클라이언트의 속도
P2P
: N이 증가해도, u(i)도 증가해서 효율적임
서버 전송
반드시 1개 파일,
F/u 시간 걸림
클라이언트
최소분배시간: F/d(min)
P2P 파일 분배: BitTorrent
토렌트: 특정 파일 분배에 참여하는 피어의 모임
트래커: 토렌트에 참여하는 피어들을 추적
피어가 처음 토렌트에 가입하면
→ 트래커에 등록 + 이웃 피어와 TCP 연결
피어는 파일을 다운로드 할 때, 다른 피어한테 청크를 제공도 함
Request
청크를 요청할 때,
피어마다 특정 시간에 갖고 있는 청크가 다름
- 주기적으로 각 피어에게 뭘 갖고 있는지 요청함
- 나한테 없는 희귀한 청크를 다른 피어에게 요청
Sending
나한테 청크를 요청하면 때, tit-for-tat 규칙에 따라 줌
- 나한테 가장 빨리 보내는 피어들한테만 답장함
- 나한테 안 보내는 다른 애들한테는 안 보냄
- 30초마다 ’낙관적 활성화’를 통해 다른 피어를 무작위로 선택
새로운 가입자를 위해
'🖥️ Computer Science > Network' 카테고리의 다른 글
[CN] 3장: 다중화 & 역다중화 (0) | 2024.07.02 |
---|---|
[CN] 2장: CDNs (0) | 2024.05.17 |
[CN] 2장: The Domain Name System, DNS (0) | 2024.05.13 |
[CN] 2장: E-mail, SMTP, IMAP (0) | 2024.05.11 |
[CN] 2장: Web and HTTP (0) | 2024.05.10 |