오래 못 할 짓 하지 않기
[ 네트워크 ] 8. P2P 본문
P2P
앞에서 한 번 나왔던 내용
- 따로 항상 켜진(대기 중인) Server가 있지 않고
- Peer 라고 하는 Host들끼리 서로가 서로의 Server와 Client가 된다.
➡️ 각 Peer는 자신이 수신한 파일을 다른 Peer에게 재분배를 할 수 있다.
Server라는 Peer가 보낸 파일을
나머지 Receiver Peer 의 수만큼 쪼개서 각각 가져가고
자신이 그렇게 가져온 걸 나머지 Peer에게 보내준다.
File 분배
📌 Server - Client
[ Server ]
- N명의 Peer
- 파일 크기 = F
- 파일 업로드 속도 = u
➡️ Server가 N명의 Peer를 위해 Network에 F의 파일을 올리는데 걸리는 시간
= N*F/u
[ Client ]
- dmin = 다운받는 속도가 가장 느린 곳의 속도
- 클라이언트가 다운받는 가장 느린 속도 = F/dmin
📌 Peer to Peer
[ Server ]
- N명의 Peer
- 파일 크기 = F
- 파일 업로드 속도 = u
➡️ Server 의 역할을 하는 애는 그냥 한 번만 파일을 올리면 된다. ( Peer끼리 재분배할거니까 )
= F/u
[ Client ]
- dmin = 다운받는 속도가 가장 느린 곳의 속도
여러 조각으로 오더라도 결론적으로는 F의 크기만큼 올테니까
= F/dmin
[ Clients ]
- 서로 받는 것도 있지만 보내줘야 하니까, 보낸 시간을 다 더해줘야 한다.
ex) 자기가 받은 거 복사하고 오른쪽 사람한테 전달
결론적으로 네트워크에는 NF 파일들이 왔다갔다.
= 서버가 올리는 데에 걸리는 시간 + 모든 Peer가 올리는데 걸리는 시간
= NF/ u(total)
- Client 가 업로드하는 속도 = u
- 파일 하나를 올리는 데 걸리는 시간 F/u = 1hr
- 서버가 지원하는 속도 = 10u
- 다운로드가 아무리 느려도 10u 이상이다.
ex) N= 2일 때
- F/u = F/10u
- d min이 us 보다 크니까 얘가 클 리는 없음
- 2F/(10u+2u)
= 2F/12u
= F/6u
BitTorrent
: 파일을 여러 개의 Chunks로 나누고, Peer끼리 주고받는 형식
- Torrent = 데이터를 주고 받는 Peer 집단
- Tracker = Torrent에 있는 Peer들이 정보를 주고받는 걸 감시하는 역할
작동 방식
1. Torrent에 Peer 가입, 처음엔 Chunks 가 없지만 다른 Peer로부터 점점 모을 수 있음
2. 병렬적으로 다운로드,업로드를 한다. 다른 Peer로부터 Download하는 동안 Upload 할 수 있음.
3. 파일을 다 받은 Peer는 나가거나 남아있는다. ( 더 줘야하는 경우 )
📌Chunks 요청을 보낼 때
각각의 Peer는 서로 다른 조각의 chunk들을 가지고 있을 것이고
이웃 Peer들이 어느 조각을 가지고 있는지 알 수 있다.
이에, A는 전체 Peer들이 가지고 있는 Chunk 중에서 가장 드문 조각을 요청한다.
* 가장 드물다 = 거의 모든 애들이 안 가지고 있다 = 공유 효율을 높이려면 이걸 뿌린다.
📌Chunks 를 보낼 때
내가 Peer들에게 Chunk를 보낼 때는 누구에게 보내야 할까?
➡️ 내가 수신할 때 기록을 보고, 전송 속도가 가장 빨랐던 4명에게 보낸다.
10초 주기로 이를 측정하여 4명에게 보낸다. - 나머지 Peer는 choked되어 교역 X
+ 30초 주기로 무작위 Peer에게 Chunk를 보내주기도 한다.
Tit-for-tat
tit-for-tat이 주로 너가 하는대로 내가 해준다 이런 느낌임
Block-Chain
: 계속해서 쌓여가는 records(blocks)의 목록.
1. 특정 행동을 함
2. 그 행동이 network를 통해 다 알려짐
3. 행동을 확인
4. 확인된 행동에 대한 Block이 생성됨
5. 그 Block이 Blockchain에 추가됨
6. 모든 Peer들에게 Block이 나눠짐
7. 행동 완료 및 인정
(출처) 한동대학교 고윤민교수님 - 네트워크
'3학년 2학기 > 네트워크 (Network)' 카테고리의 다른 글
[ 네트워크 ] 10. Transport layer : UDP (0) | 2024.10.03 |
---|---|
[ 네트워크 ] 9. 비디오 스트리밍 (0) | 2024.09.26 |
[ 네트워크 ] 7. Application layer : DNS (0) | 2024.09.19 |
[ ( 자습 ) 네트워크 ] 13. 라우팅 테이블 (0) | 2024.08.25 |
[ ( 자습 ) 네트워크 ] 12. IP 주소 분류 (0) | 2024.08.15 |