01/10/2018, 12:27
Cần giải ngố về peer to peer
Về việc nhận dữ liệu thì mình không thắc mắc lắm
Nhưng việc truyền dữ liệu qua internet thì sao
Nếu không có địa chỉ đích. Thì send dữ liệu đến đâu?
Thực sự chưa hiểu về peer to peer lắm. Cần 1 người thông não
Ví dụ có 1 ứng dụng peer to peer truyền dữ liệu
2 máy ở 2 nơi khác nhau mở lên
Máy này muốn truyền dữ liệu đến máy kia thì IP đích sẽ là gì khi mà không biết?
Bài liên quan
Ủa p2p không biết địa chỉ đích thật à???
Bạn đã thử dùng các ứng dụng sử dụng p2p để download bao giờ chưa? Torrent? Ed2k?
Khi 1 máy tính mở lên. 1 máy tính bất kỳ khác mở ở 1 nơi bất kì
Máy đầu tiên sẽ gửi đến địa chỉ IP nào
Hay giao thức của nó ko sử dụng IP?
Mình dùng rồi. Nhưng kiểu như có lá thư mà ko biết địa chỉ gửi
Ví dụ muốn gửi xin chào đến thằng tên A
Nhưng nó mở tool đó ở Mỹ. Hay nhật ko rõ
Vậy địa chỉ truyền dữ liệu ở đây là gì
Bạn đọc bài này nhé
https://greatsoftvn.blogspot.com/2016/06/torrent-la-gi-co-che-hoat-ong-torrent.html?m=1
Hoặc
https://m.facebook.com/notes/nguyễn-thắng/torrent-là-gì-cách-chơi-ra-sao/271349139909334/
Việc quản lý seeders, leechers sẽ thực hiện qua tracker
https://puu.sh/yooIq
Vậy còn magnet link thì sao, có cần tracker không?
Không, vì magnet link sử dụng DHT giúp Torrent client giao tiếp với nhau mà không cần đến tracker
Mà giờ DHT cũng phổ biến với cả file torrent rồi
Daynhauhoc mình cũng có bài về Torrent
Có vẻ nhưng nó không thực sự là ngang hàng
Cũng giống như Bitcoin cũng ko thực sự ngang hàng
Chắc chắn sẽ kết nối đến một số địa chỉ để tìm đến các nút còn lại
Trong trường hợp không có địa chỉ tin cậy. Mà chỉ có 2 máy sử dụng
Dù công nghệ nào đi nữa thì không thể ngồi quét hàng tỷ địa chỉ để tìm địa chỉ đích được
“Ngang hàng” ở đây để chỉ tài nguyên được phân tán, chia sẻ bởi nhiều client (không giống mô hình client - server là client kết nối để nhận tài nguyên từ vài server nhất định), các client kết nối với nhau để download / upload chứ các client không online liên tục sao mà tự quản lý hoạt động của mạng torrent?
Mô hình P2P: Mỗi khi bạn download thứ gì đó qua file torrent hay magnet link, bạn cũng đồng thời tham gia mạng torrent để trở thành seeder, tham gia quá trình upload file cho thành viên khác. Việc quản lý các seeders, leechers hoạt động trung gian qua tracker hay DHT trong torrent client (trackerless)
-> Client nhận tài nguyên cũng là server phân phối tài nguyên -> ngang hàng
Mô hình client - server: các client chỉ truy cập vào server nào đó định sẵn qua việc nhập URL trên trình duyệt, server nhận request từ client đó, xử lý request rồi trả về respone cho client
Xét torrent làm ví dụ:
Mục tiêu hướng tới là leech được đúng file gốc, chấm hết.
P2P nghĩa các peer tham gia mạng đều đóng vai trò như nhau. Điều này đã đạt được vì tracker không tính là peer, tracker không tham gia seed/leech (nếu cùng một máy vừa là tracker vừa là peer thì phải xét riêng 2 role đó), cũng không thể làm thay đổi file kết quả (down xong sẽ check hash).
Việc tracker có hành vi xấu sẽ ảnh hưởng đến tốc độ leech, điều này không thể tránh khỏi. Tracker là do chủ file (người seed đầu tiên) dựng lên hoặc lựa chọn tin tưởng. Dù thế nào đi nữa ngay từ bắt đầu leech bạn đã lựa chọn tin tưởng chủ file rồi.
Về magnetlink:
xuất phát điểm là torrent client app, client có đầy đủ quyền sinh quyền sát, 1001 cách để thay đổi nội dung file. Đã sử dụng là bạn phải tin tưởng nó rồi.
Kết luận: bất cứ mạng p2p nào hiện giờ cũng vướng phải vấn đề xuất phát điểm, khi bạn “chưa biết gì cả” thì cần một “địa chỉ” để lấy thông tin khởi điểm, làm thủ tục tham gia vào mạng. Đó là do hạ tầng Internet được thiết kế theo hướng tập trung ngay từ đầu. Muốn hoàn thiện, các mạng p2p phải được xây dựng trên một hạ tầng mạng toàn cầu hướng phân tán. Khi đó nôm na là thay vì bạn phải tìm thông tin khởi điểm cách nửa vòng trái đất, thì nó sẽ ở những thiết bị gần bạn, kết nối trực tiếp qua bluetooth vậy.
Cho mình lật lại 1 chút, mình cũng đang tìm hiểu về p2p.
Như bài viết này miêu tả khá rõ: http://www.vnpro.org/forum/forum/ccnp-security-®-ccsp/secure-snd-snrs/29671-peer-to-peer-p2p
“Mỗi Peer chỉ biết Peer liền trước và Peer liền sau tạo nên 1 vòng tròn DHT.”
Đoạn này khá dễ hiểu và (có thể) code. Nhưng mình chưa hiểu khi 1 node vừa join vào mạng, thì làm sao tìm được 1 node gần nó nếu không có 1 centralized (tracker?). Vì chỉ cần tìm được 1 node thì sẽ tìm đc N node gần nó trong mạng p2p!
Mỗi client đều có một danh sách bootstrap node ẩn. Client còn lưu lại những DHT node sống lâu đã gặp để sau đó truy cập thử, hoặc vào “ké” qua các peer đang bật DHT ở tor khác.Một số còn có thể broadcast trong nội bộ, nhưng nội bộ nên cũng hạn chế.
Bài toán cho user đã từng join vào mạng thì dễ rùi nha, vì có N cách để save lại các node muốn sau này connect đến mà ko bị lost connection.
Nhưng ý mình là lần đầu tiên init vào p2p network ấy (suy nghĩ theo hướng là mình đang code 1 chương trình p2p nha).
Nếu lý thuyết bạn là đúng, vậy thì luôn có 1 danh sách node để user lần đầu join vào connect đến? Vậy khi những node này “die”, toàn bộ những user mới lần đầu connect đến đều fail và không thể tìm thấy các node khác trong mạng?
Đúng vậy, không thể hòa mạng (DHT) nếu không biết một máy còn trong mạng đó (chuyện bình thường :D). Nhưng bất kì máy nào đã vào được (tức là vận hành theo giao thức đầy đủ) rồi cũng đáp ứng được vai trò này (gọi là distributed).
Bây giờ người ta chia theo: tập trung (centralized) / phi tập trung (decentralized, on a spectrum) và phân tán (distributed).
Thực ra bạn thắc mắc cũng có lí. Một hệ thống tập trung, dù là một hay nhiều trung tâm thì mỗi client phải liên lạc với trung tâm trước để được ghi vào danh sách peer (Nhưng mức tập trung càng cao khi chỉ có trung tâm kiểm tra được tính đúng đắn, xác thực).
Chữ “peer” này tức là đứng trên quan điểm của server-client cũ, chứ torrent dùng tracker thì vẫn chưa thể tạo ra một mạng đồng đẳng vì lí do trên.