비트코인 같은 블록체인을 설명할때
일반인에게 예시로써 잘 쓰이는 것 중 하나가
토렌트(torrent)이다.
미드, 애니, 영화, 게임, 유틸등
각종 어둠의 계열에서 맹활약하고 있어서
아무리 일반인을 표방하더라도 컴을 킨 이상
토렌트 한번 안써본 사람은 찾기 힘들기에
경험예시로써 블록체인을 간단히 이미지하기 좋다.
한데 사실 토렌트가 p2p 인 것은 알지만
왜 그걸 사용하며 그게 뭐가 좋은지는 잘 모를 수 있다
그래서 그걸 한번 알아보자
탈중앙
솔직히 이쯤되면 나름 지겨운
탈중앙 방식이다
기존에 뭔가를 다운 받을려면
중앙의 서버에서 받아야했다. 보통 그럴려면
가입도 해야되고 그 서버에서 용량제한을 비롯해
여러 이유로 올리는 것을 금지할때도 있다.
그래서 굳이 업로드 없이 즉각 공유할 방법을 찾게
되었는데 그렇다고 원하는 사람들을 개별적으로
연결해서 일일이 넘겨줄 수도 없는 일이다
그래서 내가 뿌린 파일을 받은 사람들도
모두 공유에 참여케 한 프로그램이
토렌트이다.
이때 공유네트워크에 접속한 사람들을 Peer(동지들)이라고 하며
온전한 파일을 가진 사람을 Seeder(배포자) 라고 한다.
위에선 시더가 1명 있는데 연결안됨
피어가 23명 있는데 그중 한명이 연결되어
다운이나 업로드 중이란 소리
조각
토렌트로 뿌릴때는 파일을 조각조각 내서 뿌린다.
통채로 파일을 전송하지 않는 이유는
도중에 연결이 끊길 경우를 대비하기 위해서다
A가 50%만 받고 끊기고
B가 70%받고 끊겼다고 치자
이시점에서 시더가 토꼈으면 이제 그 파일은
젤 많이 받은 사람 70%에서 공유가 끝장난 것이다.
하지만 조각을 나눠서
A가 전반부 50%
B가 후반부 70%를 받았으면
시더가 토껴도 이둘이 각각의 공백부분 파일을 보충해주면
100% 파일이 탄생하는 것이다.
그래서 토렌트의 파일조각 전송 우선순위는
가장 가진 사람들이 적은 파일조각을 선택한다.
후에 서로 다른 조각들을 맞추기 쉽게
최대한 중복 조각 전송을 자제하는 것이다.
토렌트 파일(.torrent)
토렌트 파일에는 파일의 크기,이름과 그 파일을 잘게 나눈
각 조각들에 대한 해싱정보, 그리고 트래커의 주소가 들어있다
파일을 조각조각 낸 만큼 어디에 뭘 맞춰야하는지
퍼즐 정보가 들어있어야 맞는 퍼즐을 받고 맞출 수 있다
트래커
실질적 파일을 가지고 있는 건 아니지만
누가 해당파일을 가지고 있는지 동료리스트를 가진 서버
맛집 지식인 같은 역할이다
'짬뽕이 먹고 싶어요'
'ㅇㅇ, ㅅㅅ, ㅁㅁ가 짬뽕 팜'
그럼 질문자는 트래커에게 받은 맛집리스트를
참조하여 모두에게 연락을 넣는다
그리고 짬뽕을 시키면..
각각 그릇과 단무지, 짬뽕국물, 면발이
조각조각 날라온다-ㅅ-;
(예를 잘못든거 같어..)
맺으며
중앙을 거치지 않는다는 것은
중앙서버가 만드는 규칙에 얽매이지 않는다는 뜻이다
그러므로 이렇게 자유로운
어둠의 공유가 가능하게 되었다.
물론 부정적인 면도 있고
한편으론 토렌트 역시
프로그램의 규칙에 얽매이게 되는 것은 같다
하지만 보통 중앙서버의 구성에
더 큰 자원과 노력, 무엇보다
해당 중앙을 구성하는 곳이 혼자 그 모든 것을
감당하기 때문에 규칙이 더욱 제한적이고
빡센 경향이 있게된다.