Transcript
Netmanias 기술문서: BitTorrent 프로토콜의 동작원리
www.netmanias.com
www.nmcgroups.com
목 차
I. BitTorrent 프로토콜 특징
II. BitTorrent 프로토콜 동작원리
III. BitTorrent 프로토콜 메시지
IV. 글을 마치며
BitTorrent는 오늘날 인터넷 트래픽 중에 많은 부분을 차지하고 있는 프로토콜로서 사용자가 인터넷을 이용하여 자료를 다운로드 받을 경우 기존의 서버 – 클라이언트 방식이 아닌, 클라이언트 – 클라이언트 방식의 P2P 방식을 사용하는 프로토콜이다. 이러한 P2P 방식을 이용하여 자료를 공유하면 공유하는 사용자가 많을수록 다운로드 속도가 빨라지는 특징을 가진다. 본 문서에서는 BitTorrent 프로토콜을 이용하여 파일을 공유하기 위한 동작 원리를 알아보고, 자료를 다운로드 받기 위한 BitTorrent 클라이언트와 트래커 갂의 통싞 및 피어와 피어 갂의 통싞 방식에 대해 살펴 보도록 하겠다.
2011년 05월 10일
NMC Consulting Group (tech@netmanias.com)
BitTorrent 프로토콜의 동작원리
1
I. BitTorrent 프로토콜 특징
BitTorrent는 P2P(Peer-to-Peer) 방식을 사용하는 대표적인 프로토콜로서 젂세계 인터넷 트래픽 중 매우 많은 부분을 차지하고 있다. BitTorrent 프로토콜은 기존의 파일 다운로드 방식인 서버-클라이언트 구조의 일대일 파일 공유 방식이 아닌 클라이언트-클라이언트 구조의 일대다 파일 공유방식을 사용하는 대표적인 프로토콜이다. 그림 1은 기존의 파일 공유 방식(a)과 P2P 파일 공유 방식(b)의 차이를 보여 주고 있다.
05000001000000150000020000002500000300000035000001357911131517192123BitTorrentBitTorrent0500000100000015000002000000250000030000035000001357911131517192123HTTPHTTPWeb ServerClient 2Client 3Client 4Client 1Client 5Client 5Client 4Client 2Client 3Client 1 .mp3Piece 2Piece 4Piece 1Piece 3Piece 5Piece 2Piece 4Piece 1Piece 3Piece 5Piece 2Piece 4Piece 1Piece 3Piece 5Piece 2Piece 4Piece 1Piece 3Piece 5Piece 2Piece 4Piece 1Piece 3Piece 5(a) 일 일 일 (b) 일 일 서 – – .mp3 .mp3 .mp3 .mp3 .mp3 로 (byte/s) 로 (byte/s)
그림 1. 기존의 전송 과 P2P 의 비교
그림 1의 (a)와 같이 일대일 파일 공유 방식은 서버가 “이소라.mp3”라는 파일을 가지고 있고 클라이언트가 서버로부터 “이소라.mp3”를 받아가는 방식이다. 일대일 파일 공유 방식은 인터넷 환경과 서버의 성능/정책에 따라 파일 젂송 속도가 결정되며, 이 속도는 젂송이 완료될 때까지 유지되는 것이 일반적이다.
일대다 파일 공유 방식은 그림 1의 (b)와 같이 “이소라.mp3” 파일을 5개의 조각(Piece)으로 나누어 각 클라이언트 갂에 조각들을 서로 교환하는 방식이다. 클라이언트는 “이소라.mp3”의 조각들을 소유/공유하고 있는 클라이언트와 세션을 생성하여 필요한 조각에 대하여 젂송을 요청한다. 각 클라이언트들은 “이소라.mp3”를 공유하고 있는 새로운 클라이언트를 발견하면 자싞이 가지고 있는 조각의 정보를 알려주고 새로운 클라이언트에게 자싞이 필요한 조각을 요청한다. 이러한 방식 때문에 하나의 클라이언트는 여러 개의 클라이언트들과 무수히 많은 세션(Multiple Session)을 생성하게 되며 세션이 계속하여 늘어남에 따라 사용자의 다운로드 속도는 점짂적으로 늘어나 클라이언트가 사용하는 인터넷 환경의 최대 대역폭까지 다운로드 속도가 증가한다.
BitTorrent 프로토콜은 파일을 공유하는 많은 클라이언트들과 동시에 많은 세션들을 생성하여 매우 빠른 다운로드 속도로 파일을 받을 수 있다. 하지만 무수히 많은 세션을 생성하여 파일을 공유하는 방식에 대한 문제점들이 통싞 사업자에서 논의되고 있으며 이러한 문제점을 이해하기 위해서 BitTorrent 프로토콜의 원리에 대한 이해가 필수적이다.
BitTorrent 프로토콜의 동작원리
2
본 문서는 II 장에서 BitTorrent의 기본 동작에 대하여 설명한다. III 장에서는 II 장에서 설명한 기본 동작에서 사용되는 메시지들의 내용에 대하여 설명한다.
II. BitTorrent 프로토콜 동작원리
I 장에서 설명한 바와 같이 BitTorrent는 P2P 방식을 사용하는 대표적인 프로토콜이다. P2P 방식은 클라이언트와 클라이언트 갂에 세션이 직접 생성되는 것과 공유하고자 하는 파일을 여러 개의 조각(Piece)으로 나누어 주고받는 것이 특징이다.
BitTorrent 프로토콜을 사용하여 파일을 다운로드 받기 위해서는 BitTorrent 클라이언트 프로그램(e.g., BitTorrent, uTorrent 등)을 설치하여야 한다. 설치 이후 사용자는 웹(토렌트 커뮤니티, 웹 서핑 등)을 통해 다운로드 받고자 하는 파일의 정보가 담긴 토렌트 파일(확장자: .torrent)을 받아 실행하여야 한다. 토렌트 파일은 공유 할 파일을 가지고 있는 사용자가 자료 공유를 목적으로 토렌트 파일을 작성하여 웹에 게시하는 것이 일반적이며, 자료를 얻고자 하는 유저는 해당 토렌트 파일을 받아 실행하면 자료를 다운로드 받을 수 있다. 그림 2는 BitTorrent 클라이언트를 이용하여 파일을 다운로드 받는 젃차를 보여 주고 있다.
TrackerSwarmSeeder ListLeecher ListHash infoTorrentWeb SitePeer 2(Leecher)Piece 2Piece 4Piece 10FilePiece 1Piece 3Piece 6Piece 8Piece 5Piece 7Piece 960%My Client(User)Piece 2Piece 4Piece 10FilePiece 1Piece 3Piece 6Piece 8Piece 5Piece 7Piece 90%Piece 2Piece 4Piece 10FilePiece 1Piece 3Piece 6Piece 8Piece 5Piece 7Piece 9100%Peer 49(Seeder)Piece 2Piece 4Piece 10FilePiece 1Piece 3Piece 6Piece 8Piece 5Piece 7Piece 950%Peer 50(Leecher)Peer 1(Leecher)Piece 2Piece 4Piece 10FilePiece 1Piece 3Piece 6Piece 8Piece 5Piece 7Piece 940% .mp3 Hash( .mp3)Peer-List (IP Address)Piece 1Piece 3Piece 4Piece 5Piece 10Piece 2Piece 8Piece 7Piece 9Piece 64123444 _mp3.torrent
그림 2. BitTorrent를 용한 일 로
조각(Piece): 공유 파일을 작은 용량 단위로 조각 낸 파일
시더(Seeder): 공유 파일의 완젂체를 가지고 있는 클라이언트(파일의 모든 조각을 소유)
리처(Leecher): 공유 파일의 불완젂체를 가지고 있는 클라이언트(파일의 일부 조각만을 소유)
피어(Peer): 시더와 리처를 총칭함
트래커(Tracker): 파일 공유를 위해 피어들의 정보를 관리하는 서버
스웜(Swarm): 각 공유 파일마다 존재하며, 공유 파일에 대한 고유 식별자(Hash)와 공유 파일을 소유하고 있는 피어 리스트 정보를 가짐. 스웜은 트래커에 의해서 관리됨
BitTorrent 프로토콜의 동작원리
3
① 토렌 일 (.torrent) 받기
사용자는 “이소라.mp3”를 다운로드 받기 위해 웹 검색 등을 통해 토렌트 파일인 “이소라_mp3.torrent”를 다운로드 받아서 실행 하여야 한다. 해당 토렌트 파일에는 “이소라.mp3”를 위한 고유의 Hash 값이 포함되어 있으며 트래커의 URL 주소가 포함되어 있다. Hash 값은 파일 식별자로써 동일한 파일 이름을 가짂 다른 컨텐츠와 구분을 위하여 생성되는 고유의 값이며 트래커의 URL은 파일을 공유하는 피어들의 정보를 관리하는 서버(트래커)를 지정하는 것이다. 만약 동일한 파일에 대하여 트래커의 URL이 서로 다르게 적혀있는 토렌트 파일을 클라이언트에서 실행하게 되면 클라이언트들의 정보를 서로 다른 트래커에서 관리하게 되므로 서로 다른 트래커를 이용하는 클라이언트들갂에는 파일을 공유할 수 없다.
② 래커에 피어 리스 (IP 주 리스 ) 요청하기: Tracker Request
“이소라.mp3”를 다운로드 받고자 하는 사용자가 토렌트 파일을 실행하면 BitTorrent 클라이언트는 토렌트 파일에 포함된 “이소라.mp3”의 고유 Hash 값을 트래커(토렌트 파일에 포함되어 있는 URL)로 젂송한다. 이 메시지를 Tracker Request(HTTP Get)라고 한다. 이와 같이 동일한 토렌트 파일을 사용하여 “이소라.mp3”를 공유하고 있는 모든 피어들은, 트래커에게 “이소라.mp3”의 Hash 값을 보내게 된다. 피어들로부터 Tracker Request를 받은 트래커는 “이소라.mp3”의 Hash값에 해당하는 스웜(Swarm)을 생성하고 “이소라.mp3”의 Hash 값을 보낸 피어들의 IP 주소를 이 스웜을 통해 관리한다.
③ 피어 리스 (IP 주 리스 ) 받아오기: Tracker Response
Tracker Request를 받은 트래커는 해당 메시지에 포함된 “이소라.mp3”의 Hash 값을 참조하여 해당하는 스웜이 존재하는지를 확인한다. 만약 존재하지 않는다면 새로운 스웜을 생성하고 다른 피어로부터 Tracker Request가 들어올 때까지 기다린다. 기존에 만들어짂 스웜이 존재하여 피어들의 정보가 있을 경우에는 스웜에 포함되어 있는 피어들을 리스트로 만들어 Tracker Response 메시지(HTTP Response)에 포함하여 응답한다. Tracker Response에 들어있는 피어 리스트는 피어들의 IP 주소로 이루어지며 Tracker Request를 보낸 피어에게 알려주는 피어 리스트는 50개 피어들의 IP 주소로 구성된다. 만약 스웜에 존재하는 피어의 개수가 50개 이상인 경우, 트래커가 50개가 넘는 피어들 중에 무작위1로 피어의 IP 주소를 선정하여 피어 리스트를 구성한다.
④ 일 로 받기
피어 리스트를 받은 BitTorrent 클라이언트는 모든 피어 IP 주소로 “이소라.mp3”의 Hash 값을 보낸다. 이 메시지를 받은 피어들 중에 “이소라.mp3” 파일 공유가 가능한 피어는 동일한 “이소라.mp3”의 Hash 값으로 응답 하게 된다. 이러한 Hash 교환을 통해 피어와 피어는 세션을 생성하게 되고 생성된 세션을 통해 조각을 교환한다. BitTorrent 프로토콜은 이러한 방식으로 트래커로부터 다수의 피어들 IP 주소(기본 설정 50개)를 받아 세션을 생성하므로 하나의 클라이언트는 동시에 여러 개의 세션을 생성하게 된다.
1 통싞 사업자 입장에서는 트래커의 이 “무작위” 선정이 문제가 된다. 만약 내가 다운로드 받을 파일에 대한 피어가 동일 통싞 사업자 내에 이미 50개가 있어도, 트래커는 유저의 통싞 환경에 대한 고려 없이 무작위로 50개의 피어를 선정하기 때문에 바로 옆집에서 다운로드 받을 것을 아프리카나 남미에 있는 피어로부터 다운로드 받는 경우가 발생한다. 이로 인하여 통싞 사업자는 IX(Internet eXchange) 비용을 추가 부담해야 하는 것이다.
BitTorrent 프로토콜의 동작원리
4
III. BitTorrent 프로토콜 메시지
3.1 토렌 일 (.torrent)
BitTorrent를 사용하여 파일 공유를 원하는 사용자는 먼저 토렌트 파일을 생성하여야 한다. 토렌트 파일은 다운로드 받고자 하는 클라이언트에게 필요한 정보가 포함된 메타 파일(Meta File)이다. 토렌트 파일은 공유된 파일을 찾아서 다운받기 위한 일종의 지도 역할을 한다. 그림 3과 표 1은 토렌트 파일에 포함되는 내용에 대해서 설명하고 있다.
TorrentFilename Info HashTrackerTracker URLTracker URL...Meta DataDirectoryCreated OnCreated ByCommentPiece LengthPrivateFilesFilenameABCDHash Function ( )ABCD,,,
그림 3. 토렌 일의
토렌트 파일을 구성하는 정보 중에 Directory, Piece Length, Private, Filename이 Hash 값을 생성하기 위해 사용되는 파라미터들이다. 이 4개의 값 중에 한 개라도 변경될 경우 해당 토렌트 파일의 Hash값이 변경되며 이렇게 변경된 토렌트 파일은 기존의 토렌트 파일과 Hash값이 다르므로 트래커에서는 다른 컨텐츠로 인식된다.
기존의 P2P에서는 한번의 공유로 하나의 파일(e.g., 나는_가수다.zip)만을 주고 받을 수 있었다. 하지만 BitTorrent는 기존의 P2P와 다르게 하나의 토렌트 파일 안에 여러 개의 파일들을 포함 시킬 수 있다(e.g., 이소라.mp3, 김범수.mp3, 임재범.mp3, …). 이렇게 여러 개의 파일을 공유하기 위하여 토렌트 파일에는 “Directory”를 지정하게 되며 “Files” 내에 여러 개의 파일을 포함 시켜서 배포가 가능하다. 실제로 해당 토렌트 파일을 이용하여 파일을 다운로드 해보면 “Directory”에 설정된 디렉토리인 “/서바이벌 나는 가수다 경연3-2 (네티즌 추천곡)(320K)/”에 파일들이 저장된다(e.g., D:/download/서바이벌 나는 가수다 경연3-2 (네티즌 추천곡)(320K)/01_사랑이야(송창식)_이소라.mp3, …).
BitTorrent 프로토콜의 동작원리
5
표 1. 토렌 일의 Name Parameter Description
Torrent
Filename
토렌트 파일 이름 (e.g., 이소라_mp3.torrent)
Info Hash
공유하는 파일의 고유한 Hash 값
Tracker
Tracker URL
트래커의 URL 주소
여러 개의 트래커 주소를 포함 할 수 있음
Meta Data
Directory
토렌트 파일이 저장되는 디렉토리 이름
Created On
토렌트 파일 생성 일자 및 시갂
Created By
토렌트 파일 생성자 정보
Comment
생성자가 적어 놓은 설명
Piece Length
피어 갂에 자료를 주고 받을 때 사용할 조각의 크기를 지정
최소값 및 기본값은 128KByte이며, 지정하지 않을 경우 BitTorrent 프로토콜에서 정의한 파일의 크기 기반으로 조각을 정의함
(e.g., 1GByte 파일인 경우 1조각 당 1MByte)
Files
Filename
공유하는 실제 파일 이름
(e.g., 01_사랑이야(송창식)_이소라.mp3)
3.2 피어(Peer)와 래커(Tracker) 간 통신
피어와 트래커의 통싞은 HTTP(HyperText Transfer Protocol) 프로토콜을 이용한다. BitTorrent 클라이언트에서 토렌트 파일을 실행하면 토렌트 파일에 포함된 정보를 기반으로 트래커에게 피어 리스트를 요청한다. 요청을 받은 트래커는 BitTorrent 클라이언트에서 보내온 Hash 정보를 기반으로 해당 스웜에 속해있는 피어들의 리스트를 요청한 클라이언트에게 알려준다. 그림 4와 표 2는 피어와 트래커 갂의 통싞에 사용되는 메시지를 설명하고 있다.
Join to SwarmPCTrackerTracker Requestinfo_hash = 9E5E1BAF D04FE5A4 83D81867 D6F9AA92 3EB246F5peer_id = UT2210-2ABE77B2B0B0805FBJ1588, port = 18226, upload = 0, download = 0, left = 80918024, corrupt = 0, key = D3A300B1, event = started, numwant = 200, compact = 1, no_peer_id = 1, ip = bc13640aTracker Responsecomplete = 290e10downloaded = 10e10incomplete = 26e8interval = 1932e12min interval = 966e5peers = 3a 67 ab 29 37 78 3a 57 3c e7 43 50 ...
그림 4. 피어와 래커 간 통신 (Peer to Tracker)
BitTorrent 프로토콜의 동작원리
6
표 2. 래커 Request Parameter Message Parameter Description
Tracker Request
info_hash
토렌트 파일에 포함된 공유 파일의 Hash 정보
peer_id
클라이언트를 식별하기 위한 ID
port
Tracker Response 메시지에서 사용되는 클라이언트 TCP/UDP Port #
upload
클라이언트가 업로드 한 공유 파일의 총계 (단위: 바이트)
download
클라이언트가 다운로드 받은 공유 파일의 총계 (단위: 바이트)
left
다운로드 받을 파일의 남은 크기 (단위: 바이트)
key (option)
클라이언트 IP 주소가 변경되더라도 클라이언트를 인식하기 위하여 가지는 비공개 값 (피어들 갂에 공유하지 않음)
event
Started: 파일 젂송 시작 상태
Stopped: 파일 젂송 중지 상태
Completed: 파일 젂송 완료 상태
numwant (option)
몇 개의 피어들의 정보를 받을 것인지 요청 (Default=50)
compact
Set 1: 피어들의 IP 주소와 Port 정보 만을 받음
Set 0: IP 주소와 Port 외에 Peer-ID 등의 다양한 정보를 받음
no_peer_id
Peer-ID는 생략하고 정보를 달라는 의미 (Compact=1 경우 무시됨)
ip (option)
클라이언트의 IP 주소
Tracker Response
complete
현재 파일을 공유하고 있는 시더들의 개수
downloaded
해당 공유 파일의 다운로드 완료 횟수
incomplete
현재 파일을 받고 있는 리처들의 개수
interval
클라이언트가 Tracker Request를 젂송하는 Interval (단위: 초)
min interval (option)
클라이언트가 Tracker Request를 젂송하는 최소 Interval (단위: 초). 클라이언트는 본 Interval 이젂에 Tracker Request를 보낼 수 없음
peers
피어의 IP 주소 리스트
3.3 피어(Peer) 간 통신
트래커를 통해 피어 리스트를 받은 BitTorrent 클라이언트는 리스트에 있는 피어들과 BitTorrent 프로토콜을 이용하여 통싞을 시작한다. BitTorrent 클라이언트는 파일을 교환하기 위하여 피어들과 서로의 정보를 주고 받는다(Handshake). 이후 피어들은 자싞이 가지고 있는 조각의 정보를 피어들에게 주기적으로 알려주며 자싞이 필요한 조각은 대상 클라이언트에게 요청하여 조각을 받는다. 그림 5는 피어와 피어 갂에 조각을 교환하기 위한 메시지 순서를 보여 주고 있다.
BitTorrent 프로토콜의 동작원리
7
UserPeer 12Peer 21 Bittorrent Handshakeinfo_hash = 9E5E1BAF D04FE5A4….peer_id = UT2210-2ABE77B2B0B0805FBJ15882 Bittorrent Handshakeinfo_hash = 9E5E1BAF D04FE5A4….peer_id = UT2210-62890EFD94A532D7B1E2043 Bittorrent Handshakeinfo_hash = 9E5E1BAF D04FE5A4…., peer_id = UT2210-2ABE77B2B0B0805FBJ15884 Bittorrent Handshakeinfo_hash = 9E5E1BAF D04FE5A4…., peer_id = UT2210-33ABFRTD85A537B1E29045 Havepiece index = 0x000001ed6 Havepiece index = 0x000002cd7 Requestpiece index = 0x000001edbegin offset of piece = 0x00008000piece length = 0x0000400008 Piece (Data in Piece)piece index = 0x000001edbegin offset of piece = 0x00008000data in piece = Payload (Data)9 Havepiece index = 0x000001ed10 Havepiece index = 0x000001ed11 Requestpiece index = 0x000001ed, begin offset of piece = 0x00018000, piece length = 0x00004000012 Piece (Data in Piece)piece index = 0x000001ed, begin offset of piece = 0x00018000, data in piece = Payload (Data)13 Havepiece index = 0x000001ed...
그림 5. 피어 간 통신 (Peer to Peer)
사용자(BitTorrent 클라이언트)는 BitTorrent Handshake(1~4) 이후 피어 1과 피어 2에서 Have 메시지를 받았다(5~6). 해당 Have 메시지에는 피어 1과 피어 2가 가지고 있는 조각의 정보가 포함되어 있다. 이러한 Have 메시지를 통해 사용자는 피어 1이 가지고 있는 조각을 알게 된다. 0x000001ed라는 조각을 피어 1에게 요청(Request 메시지)하여 피어 1로부터 해당 조각을 Piece 메시지를 통해 젂송 받게 된다(7~8). 이후 사용자는 자싞이 새로운 조각을 가지게 되었으므로 Have 메시지를 통해 0x000001ed인 조각을 자싞이 가지고 있다고 피어 1과 피어 2에게 알려준다(9~10). 피어 2에서 0x000001ed인 조각을 사용자에게 요청하는 경우(11), 사용자는 자싞이 가지고 있는 조각이므로 피어 2에게 해당 조각을 젂송하여 준다(12). 이러한 방식으로 피어와 피어 갂에 조각 교환이 계속하여 발생한다. 표 3은 피어와 피어 갂 통싞에 사용되는 BitTorrent 메시지 타입이다.
BitTorrent 프로토콜의 동작원리
About NMC Consulting Group
NMC Consulting Group was founded on year 2002 and is advanced, professional network consulting company which is specialized for IP Network area like FTTH, Metro
Ethernet and IP/MPLS, Service area like IPTV and IMS lastly, Wireless network area like Mobile WIMAX and LTE.
Copyright ⓒ 2002-2011 NMC Consulting Group. All rights reserved.
8
표 3. BitTorrent 메시지 Message Description
Keep-alive
대상 피어가 On-line 상태인지 체크하는 메시지
Choke
Request를 받아도 응답 할 수 없는 상태임을 알리는 메시지
Unchoke
Choke 상태를 해지하여 Request를 받을 수 있는 상태임을 알리는 메시지
Have
자싞이 가지고 있는 조각의 정보를 피어들에게 알리는 메시지
Request
받고자 하는 조각의 Index와 Offset 정보를 대상 피어에게 알리는 메시지
Piece
실제 조각(파일 데이터)이 포함되며, Index 및 Offset 정보가 포함된 메시지
IV. 글을 마치며
본 기술 문서를 통해 BitTorrent 프로토콜의 기본 동작 원리에 대하여 살펴 보았다. BitTorrent 프로토콜에는 본 문서에서 서술한 내용 외에도 tit-for-tat, End Game, DHT, uTP 등의 다양한 알고리즘 등이 사용되고 있으며 이는 다음 기회에 넷매니아즈 기술 문서를 통해 소개하도록 하겠다.
P2P는 사용자 입장에서 빠른 다운로드 속도를 제공하는 프로토콜이지만 멀티 세션을 생성하기 위해 선택하는 피어들이 “무작위”로 선택됨으로 인하여 ISP(Internet Service Provider) 갂의 IX(Internet eXchange) 트래픽이 과다하게 발생한다. 또한 소수의 P2P 사용자가 대부분의 네트워크 대역폭을 과점유하여, 회선을 공유하는 다른 사용자들이 충분한 대역폭을 보장 받지 못하는 문제점 등이 꾸준히 거롞되고 있다.
본 문서 이후에 P2P를 사용함으로 인해 발생하는 문제점 중의 하나인 ISP 갂의 IX 트래픽 과다 발생 문제를 해결하기 위한 방안으로 제시되고 있는 P4P 기술에 대하여 소개하도록 하겠다.
참고문헌
[1] David Erman, Dragos Ilie, Adrian Popescu , “BitTorrent Session Characteristics and Models”, 3rd International Conference HET-NETs\'05, 2005,
http://www.comp.brad.ac.uk/het-net/HET-NETs05/ReadCamera05/P30.pdf
[2] Wiki Theory, “BitTorrent Protocol Specification v1.0”, http://wiki.theory.org/BitTorrentSpecification
[3] “Torrent Editor.com”, http://torrenteditor.com/
안녕하세요. 소중한 자료 감사합니다.
읽다가 의문이 생겨서 문의드립니다.
Tracker response 과정에서,
tracker에 hash 정보가 일치한 peer 있으면 IP 리스트를 user에게 전해주고,
peer가 없으면 동일 새로운 tracker request가 들어올 때까지 기다린다고 하셨는데요,
tracker request를 보내는 peer는 ".mp3"파일이 없는 상태가 아닌가요?
".mp3"파일이 없는 peer 2명이 만나서 파일을 다운받을 수 있나요?
감사합니다~!
.mp3 파일은 없어서 다운 받고 싶은 것이고, 그래서 tracker로 부터 hash값만 받아서 .mp3파일은 없지만 hash는 존재 하죠.
그래서 그 파일을 가지고 있는 peer들 즉, seeder들의 주소를 tracker로 부터 요구 하는데, 요구 할때 원하는 파일의 hash로 요청 하는 것으로 보입니다.
tracker request를 보내는 peer는 ".mp3"파일이 없는 상태가 아닌가요?
re) 없을수도 있고, 있을수도 있는거죠. 있다면 다운받고 있거나 이미 파일의 완전체를 가지고 있는거죠.
".mp3"파일이 없는 peer 2명이 만나서 파일을 다운받을 수 있나요?
re) 당연히 다운받을 수 없습니다. 다른 피어들이 들어오기 전까진...
너무 기초적인 질문 일지 모르지만,
피어 와 피어 접속시 한쪽은 Server Socket 을 열어야 하는데, 요즘 서버 리스너를 마구 열어도 되나요? 보안상 안되는 경우는 없나요?