일단 리스트.


예전에는 몰랐는데, torrent 파일과 magnet 파일의 정보가 차이가 있습니다.


기본적으로 torrent 파일에 상세한 데이터가 쭈욱 담겨있고, magnet 주소에는 그냥 파일을 찾기위한 필요 최소한의 데이터만 들어가 있습니다.


예를들어..


magnet:?xt=urn:btih:410bdc9a59810a7309f4c48009997aaee492b6c0


마그넷의 주소가 저렇게 되어있는 경우가 많이 있습니다.

(왜냐면 짧고 간결하니까..)


마그넷이 정상적으로 작동하기 위한, 필요 최소한의 데이터인데..


저 중에서 410bdc9a59810a7309f4c48009997aaee492b6c0가 hash info에 해당하는 부분입니다.


즉, 토렌트의 중요 정보 데이터를 압축해놓은 부분..


그렇기 때문에 사이즈는 거의 일정합니다.

(기본적으로 sha1으로 압축을 하는거 같은데, 안되어있는 magnet도 상당수 있던..)


간간히 주소중에 이렇게 되어있는것들도 존재합니다.


좀 생략된 데이터도 존재하지만, 이건 나름 쾌적한 magnet을 위한 주소.


magnet:?xt=urn:btih:410bdc9a59810a7309f4c48009997aaee492b6c0&dn=%5B170114%5D%5B161222%5D+%5BLass%5D+Liber_7+%E8%A9%B0%E3%82%81%E5%90%88%E3%82%8F%E3%81%9B%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88+%2B+Update+1.02&xl=16091592301&tr=http://open.nyaatorrents.info:6544/announce&tr=udp://eddie4.nl:6969/announce&tr=udp://shadowshq.yi.org:6969/announce&tr=udp://94.23.183.33:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://tracker.coppersurfer.tk:6969


magnet을 써본분들이라면 느끼신적이 있을겁니다.


어떤 magnet은 바로바로 떠주는데, 어떤 마그넷은 파일을 읽는데 시간이 좀 많이 걸리는것을..


그 차이는 기본적인 hash 데이터만 가지고서는 해당 토렌트 파일의 이름을 알 수 없기 때문입니다.


그렇기 때문에, 마그넷에 토렌트 이름이 존재하지 않는 마그넷들은 토렌트 클라이언트가 가지고 있는 트래커로 한번 싹 훑은 다음에 데이터가 그 트레커중에 있으면 거기서 가져오기 때문에 속도가 느리게 됩니다.

(그리고 그 트레커에 파일 데이터가 없다면 어떨까!? 어떻게되긴 파일 다운로드 평생 안되는거지.)


위의 주소중에 빨강색으로 칠해진 부분이 토렌트 파일의 이름입니다.


그렇기 때문에 해당 부분이 존재하지 않으면..



파일이름대신에 해시데이터로 뜨게되는데..



빨강 부분이 존재하면, 해시데이터가 아닌 파일이름이 뜨게 됩니다.

(테스트에 사용한 마그넷 주소가 일본어라..;; 일어부분이 깨지기는 합니다만..)


주황색부분은 해당 파일이 어느 트레커에 소속되어있는지를 나타내줍니다.


즉, 마그넷주소에 트레커 정보가 많으면 많을수록 좋죠.


참고로 트레커란 중개처를 의미합니다.


마그넷 주소에 중개처의 주소가 존재하면, 토렌트 클라이언트는 그 중개처들에게 지금 나한테 이런 요청이 들어왔는데, 혹시 너희들 아니? 라고 묻게 됩니다.


마그넷 링크를 만든 사람들이 그 트레커에 토렌트 파일의 존재를 알렸으니, 당연히 알겠다고 하겠죠..


토렌트 클라이언트에도 기본적으로 트레커주소들이 내장은 되어있는걸로 압니다.


하지만, 여러명에게 물어보는거보다, 확실한 사람에게 한번 묻는게 속도는 빠르죠.

(게다가 토렌트 클라이언트에 내가 원하는 트래커가 존재할거라는 보장도 없고..)


바꿔말하면, 올라온지 별로 안됬고, 많은 사람들이 받은거 같으면, 트레커 정보가 없어도 충분히 빠른 속도가 나오겠지만..


올라온지 오래됬고, 많은 사람들이 받지도 않은거 같다면, 트레커 정보가 있는 마그넷이 다운로드 확률이 올라가는거죠.


유명 트레커에 소속되어있는 파일이라면 차이는 크게 없지만, 그렇지 않는 경우라면 트레커 정보가 있냐 없냐에 따른 차이도 상당히 많이 납니다.

(실제로 테스트로 올린 마그넷주소도 속도차이가 좀 있습니다. 없는거랑 있는거랑..)


기본적으로 마그넷에는 최소한의 데이터 해시데이터와 필요에의해 토렌트의 파일명, 그리고 트레커 정보가 들어가 있게 됩니다.

(위의 마그넷에서 &xl=의 부분은 토렌트 파일의 사이즈입니다.)


반면에 토렌트는 마그넷의 모든정보(위에서 설명한 데이터들..)를 다 가지고 있습니다.


마그넷의 정보보다 더 많은 정보를 가지고 있다가 확실한데, 토렌트 파일 생성자에 의해서 데이터의 차이가 있기 때문에..


대표적으로 토렌트파일에는 comment 데이터가 존재하는데, 마그넷에서는 존재하지 않습니다.

(없는 파일도 존재.)



위에서 사용한 테스트 파일의 데이터입니다.


저거외에 파일리스트 데이터도 존재를 하는..



이렇게 각 파일별로 사이즈까지 데이터가 입력되어있습니다.


그렇다는건 이건 본래 토렌트 파일이었던것을 마그넷 주소로 변환해서 위에서 적어둔거란 소리..


기본적으로 토렌트 -> 마그넷이 변환이 가능하면, 어떤 로직으로던 마그넷 -> 토렌트 파일의 변환이 가능해야 할거 같은데..

(실제로 변환을 제공해주는 사이트들이 많은데, 정상적으로 작동은 안하는거 같네요.. 아마 sha1 해시 적용을 안한거라면 작동할거 같기도 한데..)


아무래도 sha1의 단방향 해시를 사용한 시점에서..

(레인보우 테이블 만들기도 귀찮고.. 애초에 서비스용으로 만들어본게 아니라서;;)


그러면 여기서 seeder와 peers ( leechers ) 그리고 downloads의 데이터는 기본적으로 토렌트와 마그넷에는 존재하지 않습니다.

(토렌트와 마그넷 구성요소 위키등등 다 뒤져도 안나옵니다.)


그렇다면 어딘가에서 데이터를 불러 온다는건데..


가~끔 가다가 마그넷의 경우라면 신기한 경험을 하는 경우가 있을겁니다.


분명 seeder와 peers 없다면서, 실제로 받아보니 속도가 미친적..


기본적으로 seeder와 peers 그리고 downloads의 데이터는 트레커에게 물어서 가져오게 됩니다.


트레커 데이터가 많으면, seeder와 peers 그리고 downloads의 데이터를 불러오는것에 시간이 더 오래걸리는것은 당연한거고..


왜냐면 한명에게 물어볼거 여러명에게 물어보고서 그 결과를 통계내서 보여줘야 하니까..


대부분의 토렌트(마그넷) 파일 검색 사이트에서 보여주는 seeder등의 정보는 모두 트레커에게 물어보고서 보여주게 됩니다.

(사이트에서 자체 트레커를 운영해서 그 데이터만 가져오는걸로 보이는 사이트도 있던데.. 자기자신이 자기자신을 부르는거니, 데이터 로딩속도가 엄청나게 빠른..)


개인적으로 테스트용도로 받아둔 토렌트 파일중에는 없었는데..


트레커에게 정보를 요청하려면 2가지 데이터를 필요로 합니다.


상단에서 설명한 토렌트 파일의 hash info랑 트레커.


즉, 각 트레커에게 이 해시파일에 대한 정보를 달라고 물어보는겁니다.


hash info의 경우 토렌트 최소의 데이터니 문제없지만, 트레커 정보는 위에서 보여드렸다시피, 없는 경우도 있습니다.


서치사이트에서 seeder등의 정보가 0인데, 실제로 받아보니, 속도가 빠른경우는 트레커 정보가 없어서 데이터를 못불러온것으로 해석하시면 될거 같네요.

(자체 트레커의 경우는 자체트레커에서는 정보가 0인데, 다른 트레커에서 소지자 정보가 있거나..)


각 트레커마다 소지하는 데이터가 다르기 때문에, 기본적으로 서치사이트는 DB에 저장해서 해당 파일(페이지)을 불러올때 처리를 하거나, 자기자신의 트레커의 정보만 보여주고 쫑치는 경우가 많을거라 생각됩니다.


실제로 트레커와 통신하는거 때문에 페이지 로딩속도가 좀 많이 느린;;

(어느정도냐면 오픈소스 몇개를 봤는데, 모두 30초 이상 걸리면 알아서 팅겨내도록 코딩을 해뒀던.. 정보를 얻기 위해서 트레커 하나당 최대 30초를 소비한다고 생각하면 되는.. 트레커 10개가 30초를 소비한다면 어떨까! 최대 5분후에 페이지 보일듯..)


실서비스에는 seeder 표시는 좀 안맞을지도..

(아니면 페이지 로딩후 백단에서 seeder등의 데이터를 갱신하던지.. 자체 트레커 넣던지..)


Amenity’s Life 카나데 루트를 진행하다가, 요즘 게임회사등에서 torrent 프로토콜을 많이 쓴다길래(실제로 블리자드는 게임 업데이트등을 토렌트 프로토콜을 쓰신다고..), 한번 파일 데이터와 구조를 살펴봤는데..

(워차피 나는 네트워크쪽 아니니까.. 네트워크 이론은 봐도 의미가.. 흥미도 없고..)


평소 간간히 토렌트와 마그넷을 쓰면서 발생하던 궁금증이 어느정도 해소된 느낌이네요.

(가끔 지인이 마그넷으로 파일 보내주는 경우도 있어서;; 내가 NAS 운영하면서 그런일은 거의 사라졌지만..)


ps. 해외사이트에서는 hash info 데이터로 마그넷 주소를 생성해주는 페이지가 있던데 만들어볼까..

딱히 어려운거 없는데..

(토렌트 파일 서칭 사이트는 불법이라 단속대상에 걸린다는거 같고..)


ps2. 이거 만들면서 생각난김에 api 검색을 해봤는데..

이제는 국가에서 공휴일 api를 제공해주는거 같네요..?

(시간날때 총대매고 api 만들까 생각하고 있었던 참이었는데.. (그 결심한지 올해로 4년째라는게 문제지.. 나는 누가 만들어 주겠지. 했는데 아무도 안만들더라.. 4년째..))

내가 생각하는 그 의미의 api인지는 사용요청 보내서 직접 한번 써봐야 할거 같기는 한데..

(아마 요청 보내서 허가 떨어져서 테스트해본뒤에 후기 남길지도..??)


옛날에 에이젼시에서 달력 만들때는 고생 많았지~

빌어먹을 이야기도 안통하는 내 윗선들은 그냥 달력 양식(토요일 파랑색, 일요일 빨강색)에 숫자만 박혀있으면 된다고 해두고서는(상식적으로 생각해서 그럴리가 없잖아? 바보아냐?), 다 만들어두니, 클라가 '왜 공휴일은 표시안함?' 한 경우가 많았으니..

(개발자라면 알겠지만, 우리나라의 공휴일은 아~주 지랄맞음.. 년도마다 공휴일 계산식이 틀린건 둘째치고(가끔씩 공휴일이 바뀌니까..).. 음력이..;;)

그래서 윗선들 설득 시켜서 우리끼리 쓰는 api 데이터를 만들자고 설득을 한 경우가 아~주 많았는데..

실제로 만든적은 딱 2번뿐..

(하나는 APP과 WEB 그리고 SERVER를 연결해주는 api고(아마 현재도 정상적으로 작동중. 공휴일, 달력 api는 아니었..) 하나는 공개 자체도 안된.. 개발 단계에서 폐기되서;;)


참고로 우리나라 공휴일을 api로 안만들면 어떻게 만드냐구요?

어드민 페이지에 양력 공휴일과 음력 공휴일을 입력할 수 있게해두고..

(왜냐면 국가 공휴일이 은근 자주 바껴;; 요즘은 임시공휴일 극혐.. 그냥 국민으로 보면 올레~ 인데, 개발자 입장에서는 극혐인;; 어떤 규칙도 없고.. 그냥 국가가 이날 쉬자! 하면 그날이 임시 공휴일이잖..)


양력은 뭐 그냥 날짜랑 매치시키면 되는데..

음력의 경우는..


우주의 기운과 성령의 기운을 받아서 만들면 됩니다. (웃음)

(간절히 바라면 우주가 도와주는 국가에서 살고 있으니까요.)


본래 프로그래밍이란 학문은 인간 자연 천지만물과 삼라만상이 결부된 심오한 학문이니. (웃음)


참고로 모든 음력 계산식이 그렇다시피, 지금 당장은 맞는데, 년수가 지날수록 차이가 나기 시작합니다..

(이번에 찾아보니 100년 단위의 음력도 공개하는 시대라서 시대가 좋아지긴 했.. 돈을 받으시는거 같았지만..)

근데, 뭐 에이젼시 입장에서볼때 지금만 잘 맞으면 되는거니까..

그런것도 다 계산에 넣어서 양력과 음력 표시 비표시 가능하게 한뒤에, 그냥 양력에 음력 휴일을 넣어서 계산식이 어긋나면 그렇게라도 수정하도록 해놨었..

(날자가 일정한 양력 휴일은 그냥 월과 일을 입력받고, 매년 바뀌는 공휴일의 경우는 그냥 DB에 년 월 일로 넣어두면 어찌어찌 해결이 되기는 하는..)

Posted by Pure Ani
,
바그다 2019.01.02 11:55 신고

토렌트 전문가이신거 같아 질문드립니다 제발 도와주세요ㅜㅜ
토렌트 파일을 폴더 형식으로 생성했을 때 자기가 원하는 파일만 체크를 해서 부분 다운로드가 가능하고
토렌트는 파일을 조각 단위로 다운 및 업로드를 하고 하나의 조각도 여러개의 블록으로 나뉘어 있다고 들었습니다

그럼 이때 제가 체크를 하지 않은 파일의 블록(조각x)이 다운을 받아질 수도 있는것인가요?

만약에 블록이 받아졌다고 해도 토렌트는 조각을 주고 받는것인데 블록도 주고 받는게 되나요? 그것도 제가 체크를 하지 않은 파일에서요

ラズベリーキューブ まどそふと

白恋サクラ*グラム NanaWind

かりぐらし恋愛 ASa Project

IxSHE Tell HOOKSOFT

調子に乗ってるレイヤーでオタサーの姫を教師の俺が騙してハメ撮りしてみた ぱちぱちそふと黒

幕末 尽忠報国烈士伝 MIBURO インレ

Making*Lovers SMEE

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

枯れない世界と終わる花 SWEET&TEA

ハナヒメ*アブソリュート! mirai

死に逝く君、館に芽吹く憎悪 バグシステム

恋するきもちのかさねかた〜かさねた想いをずっと〜 ensemble

Sanguinea-サングイネア- すにぃる

彼女のセイイキ feng

麗華の館 しすたーそふと

カスタムメイドオンライン KISS