오래 못 할 짓 하지 않기

[ 네트워크 ] 8. P2P 본문

3학년 2학기/네트워크 (Network)

[ 네트워크 ] 8. P2P

쫑알bot 2024. 9. 23. 17:02
728x90

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

https://velog.io/@kms9887/컴퓨터-네트워크-2.-Application-Layer5

 

tit-for-tat이 주로 너가 하는대로 내가 해준다 이런 느낌임

 

 


Block-Chain

: 계속해서 쌓여가는 records(blocks)의 목록.

 

1. 특정 행동을 함
2. 그 행동이 network를 통해 다 알려짐
3. 행동을 확인
4. 확인된 행동에 대한 Block이 생성됨
5. 그 Block이 Blockchain에 추가됨
6. 모든 Peer들에게 Block이 나눠짐
7. 행동 완료 및 인정

 

 

(출처) 한동대학교 고윤민교수님 - 네트워크