참고 문헌
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 |