본문 바로가기

여러가지

토렌트 분석

참고 문헌

PDF : http://space.postech.ac.kr/korms/2012_fall/sessionC/C9-4.pdf

Ahnlab : http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=22812



P2P 방식 이용하는 대표적 프로토콜

- client to client 구조의 1: 구조의 파일 공유 방식

- 하나의 클라이언트가 여러 개의 다른 클라이언트 들과 무수히 많은 세션을 생성


통신 시 역할 종류

시더(Seeder)

공유 파일의 "완전체" 를 가지고 있는 클라이언트. (파일의 모든 조각)

리처(Leecher)

공유 파일의 일부 조각만 가지고 있는 클라이언트

피어(Peer)

Seeder 와 Leecher 를 아우르는 말

트래커서버(Tracker)

파일 공유를 위해 피어들의 정보를 관리하는 서버

스웜(Swarm)

트래커에 의해서 관리되며, 각 공유 파일마다 존재함. Hash 값과 공유 파일을 소유하고 있는 피어 리스트 정보를 가짐.


토렌트로 파일을 다운로드 받는 과정

1. 사용자가 토렌트 파일(.torrent) 를 다운받음

2. 토렌트 클라이언트 프로그램으로 torrent 파일 실행.

3. 파일안에 있는 트래커 서버 정보를 통해 피어들의 아이피 리스트를 요청

4. 피어들의 아이피 주소 목록을 받아옴.

5. 받은 아이피 주소를 통해 각 세션을 맺고 파일을 다운로드 받음.


torrent 파일 구조

Torrent

- Filename : 토렌트 파일 이름

- Info Hash : 공유하는 파일의 Hash 값

Tracker

- Tracker URL : 트래커 서버의 주소.

- Tracker URL

- Tracker URL

- Etc Tracker URL..

--> 여러 개의 트래커 주소를 포함 할 수 있음.

임의의 서버 주소 추가시?

Meta Data

- Directory : 토렌트 파일이 저장되는 디렉토리 이름 --> 토렌트 파일 내부에서 파일이 저장되는 경로 설정 가능

- Created On : 토렌트 파일 생성 일자 및 시각

- Created By : 토렌트 파일 생성자 정보

- Piece Length : 피어 간 파일을 주고받을 때 사용할 파일 조각의 크기.

최소값 및 기본값은 128K 이다. 지정하지 않을 경우 BitTorrent 프로토콜에서 정의한 파일의 크기 기반으로 정의.

- Private

Files

- Filename : 공유하는 실제 파일 이름.


1. torrenteditor.com 에서 토렌트 정보 수정 가능


Hash 값을 생성할 때, Directory, Piece Length, Private, Filename 이 사용됨.

--> 4개의 값 중에 하나라도 다른 값이 있을 경우, Hash 값이 변경됨.

--> 트래커 서버는 다른 파일로 인식함.


기존의 P2P와 달리 하나의 토렌트 파일에 여러 개의 파일을 포함시킬 수 있음.

--> Directory 지정. files 안에 여러개의 파일 배포 가능.


피어, 트래커 서버간 통신

HTTP 프로토콜을 이용

BitTorrent 클라이언트에서 토렌트 파일을 실행하면 토렌트 파일에 포함된 정보를 기반으로 트래커 서버에게 피어 리스트를 요청.

트래커는 클라이언트에서 보내온 Hash 정보로 해당 스웜에 속해있는 피어들의 리스트를 요청한 클라이언트에게 전송.


트래커는 Request 방식으로,

1. scrape 방식

트래커가 정상적으로 운용되고 있는 지 확인하기 위해 트래커에게 질의.

info_hash 파라미터만 전달.


2. announce 방식

scrape 방식의 요청 이후 발생. info_hash 외 다양한 파라미터를 전달.

--> 이 파라미터의 전송을 통해 트래커 서버가 토렌트에 대한 전반적 수치를 최신 상태로 유지 가능.



트래커 서버 요청

info_hash 

토렌트 파일에 포함된 공유 파일의 Hash 

peer_id 

클라이언트를 식별하기 위한 ID 

port 

Tracker Response 메세지에서 사용되는 클라이언트의 포트

uploaded 

클라이언트가 업로드한 공유 파일 총계 

Byte 단위

downloaded 

클라이언트가 다운로드 받은 공유 파일 총계

Byte 단위 

left 

 다운로드 받을 파일의 남은 크기

Byte 단위

key (option) 

클라이언트 IP 주소가 바뀌어도 클라이언트를 인식하기 위한 클라이언트의 고유한 값. 

(비공개. 피어간 공유 X) 

event 

파일의 전송 상태

Started: 파일 전송 시작 상태

Stopped: 파일 전송 중지 상태

Completed: 파일 전송 완료 상태 

numwant (option) 

몇 개의 피어들의 정보를 받을 것인지 요청.

(기본 50개) 

compact 

피어 정보 요청

Set 1: 피어들의 IP 주소와 Port 정보만 받음 

Set 0: IP 주소와 Port 외에 Peer-ID 등의 다양한 정보를 받음.

 no_peer_id

Peer_ID 는 생략하고 정보를 달라는 의미

(Compact가 1이면 무시됨.) 

ip (option)

클라이언트의 IP 주소



트래커 서버 응답

 Complete

현재 파일을 공유하고 있는 시더 갯수 

 Downloaded

(scrape 요청 시)

해당 공유 파일의 다운로드 완료 횟수 

 incomplete

현재 파일을 받고 있는 리처들의 갯수 

interval 

클라이언트가 Tracker Request를 전송하는 Interval (초 단위) 

 min interval

클라이언트가 Tracker Request 를 전송하는 최소 Interval (초 단위)

Internal 이전에 Tracker Request 불가. 

 peers

피어의 IP 주소 리스트 



참고 문헌:

1. http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=22812

2. http://space.postech.ac.kr/korms/2012_fall/sessionC/C9-4.pdf

3. http://space.postech.ac.kr/korms/2012_fall/sessionC/C9-4.pdf





'여러가지' 카테고리의 다른 글

USB 로 운영체제 설치시, 검은 화면에 커서만 깜빡일 때  (0) 2015.02.21
CCTV (시연용)  (0) 2015.01.28
리눅스 마스터 오답문제 정리  (0) 2015.01.22
FTZ 풀이 (미완)  (0) 2015.01.14
Warning.or.kr 우회  (0) 2015.01.11