SinhVienCNTT.Net
Thứ Sáu, Tháng 10 10, 2025
  • Login
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
Gửi email
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
No Result
View All Result
SinhVienCNTT.Net
No Result
View All Result
Home Network

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet

Peer-to-Peer File Distribution

admin by admin
4 Tháng 5, 2025
in Network
0
Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet
Bài viết này là phần 20/20 thuộc series Nhập môn mạng máy tính
  • Phần 1: Slide Nhập môn mạng máy tính (Tiếng Anh)
  • Phần 2: Tổng quan về Internet và các thành phần của Internet
  • Phần 3: Dịch vụ của Internet, API và giao thức của Internet
  • Phần 4: Các thành phần mạng biên của Internet
  • Phần 5: [Version mới nhất] Sách Computer Networking: A Top-Down Approach 8th Edition
  • Phần 20: Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet
  • Phần 6: Các phương tiện truyền dẫn của Internet
  • Phần 7: Các thành phần mạng lõi của Internet
  • Phần 8: Trễ gói tin, mất gói tin và thông lượng mạng chuyển mạch gói
  • Phần 9: Sự phân tầng giao thức và mô hình TCP/IP

Các ứng dụng được mô tả trong bài viết này bao gồm Web, e-mail, và DNS đều sử dụng kiến trúc client-server, phụ thuộc nhiều vào các máy chủ hạ tầng luôn hoạt động. Ở bài viết Tổng quan về tầng Ứng dụng trong mô hình TCP/IP, mình đã sơ lược về kiến trúc phân phối tệp ngang hàng P2P (peer-to-peer). Với kiến trúc này, sự phụ thuộc vào các máy chủ hạ tầng luôn hoạt động là rất ít (hoặc không có). Thay vào đó, các cặp máy chủ kết nối gián đoạn, được gọi là các “peer“, giao tiếp trực tiếp với nhau. Các peer này không thuộc sở hữu của nhà cung cấp dịch vụ, mà thay vào đó là các máy tính cá nhân (PC), laptop và điện thoại thông minh do người dùng điều khiển.

Mục lục ẩn
1. Sự linh hoạt của kiến trúc phân phối tệp ngang hàng P2P
2. BitTorrent

Trong phần này, chúng ta sẽ xem xét một ứng dụng P2P rất tự nhiên, đó là phân phối một tệp lớn từ một máy chủ đến một số lượng lớn các máy chủ khác (được gọi là các peer). Tệp này có thể là file ISO, file máy ảo, hoặc video MPEG. Trong phương pháp phân phối tệp kiểu client-server, máy chủ phải gửi một bản sao của tệp đến từng peer, gây ra một gánh nặng lớn cho máy chủ và tiêu tốn một lượng lớn băng thông của máy chủ. Trong phân phối tệp kiểu P2P, mỗi peer có thể phân phối lại bất kỳ phần nào của tệp mà nó đã nhận cho các peer khác, nhờ đó hỗ trợ máy chủ trong quá trình phân phối.

Tính đến năm 2020, giao thức phân phối tệp ngang hàng P2P phổ biến nhất là BitTorrent. Ban đầu được phát triển bởi Bram Cohen, hiện nay có rất nhiều khách hàng BitTorrent độc lập khác nhau tuân theo giao thức BitTorrent, tương tự như có nhiều trình duyệt Web tuân theo giao thức HTTP. Trong phần này, chúng ta sẽ đầu tiên xem xét khả năng tự mở rộng của các kiến trúc P2P trong bối cảnh phân phối tệp.

Sự linh hoạt của kiến trúc phân phối tệp ngang hàng P2P

Để so sánh các kiến trúc client-server với kiến trúc peer-to-peer (P2P) và minh họa khả năng tự mở rộng của phân phối tệp ngang hàng, ta sẽ xét đến một mô hình định lượng đơn giản để phân phối một tệp đến một tập hợp các peer cố định cho cả hai loại kiến trúc. Như thể hiện trong hình dưới, máy chủ và các peer đều kết nối với Internet thông qua các liên kết truy cập. Gọi tốc độ tải lên của liên kết truy cập của máy chủ là us​, tốc độ tải lên của liên kết truy cập của peer thứ iii là ui​, và tốc độ tải xuống của liên kết truy cập của peer thứ i là di​. Cũng gọi kích thước của tệp cần phân phối (tính bằng bit) là F và số lượng các peer muốn nhận bản sao của tệp là N. Thời gian phân phối là thời gian cần thiết để gửi bản sao của tệp đến tất cả N peer.

Trong phân tích về thời gian phân phối dưới đây, cho cả kiến trúc client-server và P2P, chúng ta giả định đơn giản tất cả các nút nghẽn đều nằm ở các mạng truy cập. Chúng ta cũng giả định rằng máy chủ và các client không tham gia vào bất kỳ ứng dụng mạng nào khác, do đó tất cả băng thông tải lên và tải xuống của chúng có thể được dành hoàn toàn cho việc phân phối tệp này.

Xác định thời gian phân phối cho kiến trúc client-server, ký hiệu là Dcs​. Trong kiến trúc client-server, không có peer nào hỗ trợ phân phối tệp. Chúng ta có thể rút ra một số nhận xét sau:

  • Máy chủ phải truyền một bản sao của tệp đến mỗi peer trong số N peer. Do đó, máy chủ phải truyền tổng cộng NF bit. Vì tốc độ tải lên của máy chủ là us​, thời gian phân phối tệp tối thiểu phải là NF/us​.
  • Gọi dmin là tốc độ tải xuống của peer có tốc độ tải xuống thấp nhất, tức là dmin=min⁡{d1,d2,…,dN}. Peer có tốc độ tải xuống thấp nhất không thể nhận được toàn bộ F bit của tệp trong thời gian ít hơn F/dmin giây. Do đó, thời gian phân phối tối thiểu là ít nhất F/dmin.

Kết hợp hai nhận xét này, chúng ta có thể rút ra thời gian phân phối tối thiểu cho kiến trúc client-server.

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet 2

Điều này cung cấp một giới hạn dưới cho thời gian phân phối tối thiểu của kiến trúc client-server. Coi giới hạn dưới mà này là thời gian phân phối thực tế, tức là:

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet 4

Chúng ta thấy từ phương trình trên rằng đối với N đủ lớn, thời gian phân phối trong kiến trúc client-server được cho bởi NF/us. Do đó, thời gian phân phối tăng theo tỷ lệ tuyến tính với số lượng peer N. Vì vậy, ví dụ, nếu số lượng peer từ tuần này sang tuần khác tăng lên gấp một nghìn lần, từ một nghìn lên một triệu, thì thời gian cần thiết để phân phối tệp cho tất cả các peer sẽ tăng lên gấp 1.000 lần.

Bây giờ, chúng ta sẽ tiến hành phân tích tương tự cho kiến trúc P2P, nơi mỗi peer có thể hỗ trợ máy chủ trong việc phân phối tệp. Cụ thể, khi một peer nhận được một số dữ liệu tệp, nó có thể sử dụng khả năng tải lên của mình để phân phối lại dữ liệu cho các peer khác. Việc tính toán thời gian phân phối cho kiến trúc P2P phức tạp hơn so với kiến trúc client-server, vì thời gian phân phối phụ thuộc vào cách mỗi peer phân phối các phần của tệp cho các peer khác. Tuy nhiên, một biểu thức đơn giản cho thời gian phân phối tối thiểu có thể được đưa ra [Kumar 2006]. Để làm được điều này, trước tiên chúng ta sẽ đưa ra một số nhận xét sau:

  • Ban đầu của quá trình phân phối, chỉ máy chủ có tệp. Để đưa tệp này tới các peers, máy chủ phải gửi mỗi bit của tệp ít nhất một lần vào liên kết truy cập của nó. Do đó, thời gian phân phối tối thiểu là ít nhất F/us. (Không giống như mô hình client-server, một bit được gửi một lần bởi máy chủ có thể không cần phải gửi lại bởi máy chủ, vì các peers có thể phân phối lại bit đó giữa chúng.)
  • Giống như kiến trúc client-server, peers có tốc độ tải xuống thấp nhất không thể nhận tất cả F bit của tệp trong thời gian ít hơn F/dmin giây. Do đó, thời gian phân phối tối thiểu là ít nhất F/dmin.
  • Cuối cùng, nhận thấy rằng tổng băng thông tải lên của toàn bộ hệ thống bằng với tốc độ tải lên của máy chủ cộng với tốc độ tải lên của từng peer, tức là utotal = us + u1 + … + uN. Hệ thống phải cung cấp (tải lên) F bit cho mỗi peer trong số N peers, từ đó cung cấp tổng cộng NF bit. Điều này không thể thực hiện ở tốc độ nhanh hơn utotal. Do đó, thời gian phân phối tối thiểu cũng ít nhất là NF/(us + u1 + … + uN).

Kết hợp ba quan sát này lại, chúng ta thu được thời gian phân phối tối thiểu cho mô hình P2P, được ký hiệu là DP2P.

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet 6

Phương trình trên cung cấp một giới hạn dưới cho thời gian phân phối tối thiểu của kiến trúc P2P. Nếu chúng ta tưởng tượng rằng mỗi peer có thể phân phối lại một bit ngay khi nó nhận được bit đó, thì sẽ có một phương án phân phối lại có thể đạt được giới hạn dưới này.

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet 8

Hìnhdưới so sánh thời gian phân phối tối thiểu cho kiến trúc client-server và P2P, giả sử rằng tất cả các peer có cùng tốc độ tải lên là u. Chúng ta đã đặt F/u = 1 giờ, us = 10u và dmin ≥ us. Do đó, một peer có thể truyền toàn bộ file trong một giờ, tốc độ truyền của máy chủ lớn gấp 10 lần tốc độ tải lên của peer, và (để đơn giản hóa) tốc độ tải xuống của các peer được đặt đủ lớn để không ảnh hưởng. Chúng ta thấy từ hình trên rằng đối với kiến trúc client-server, thời gian phân phối tăng tuyến tính và không có giới hạn khi số lượng peer tăng lên. Tuy nhiên, đối với kiến trúc P2P, thời gian phân phối tối thiểu không chỉ luôn nhỏ hơn thời gian phân phối của kiến trúc client-server mà còn nhỏ hơn một giờ đối với bất kỳ số lượng peer N nào. Vì vậy, các ứng dụng sử dụng kiến trúc P2P có khả năng tự mở rộng. Tính mở rộng này là hệ quả trực tiếp của việc các peer vừa là nhà phân phối lại vừa là người tiêu thụ các bit.

phân phối tệp ngang hàng
Distribution time for P2P and client-server architectures

BitTorrent

BitTorrent là một giao thức P2P (peer-to-peer) phổ biến dùng để phân phối tệp tin [Chao 2011]. Trong thuật ngữ của BitTorrent, tập hợp tất cả các máy ngang hàng (peers) tham gia vào việc phân phối một tệp tin cụ thể được gọi là một torrent. Các máy ngang hàng trong một torrent sẽ tải về các phần (chunk) có kích thước bằng nhau của tệp tin từ những máy ngang hàng khác, với kích thước phần điển hình là 256 KB. Khi một máy ngang hàng lần đầu tham gia vào torrent, nó chưa có phần nào của tệp. Theo thời gian, máy sẽ tích lũy dần các phần tệp tin. Trong quá trình tải xuống các phần, máy cũng sẽ tải lên các phần cho các máy ngang hàng khác. Khi một máy ngang hàng đã tải xong toàn bộ tệp tin, nó có thể (một cách ích kỷ) rời khỏi torrent, hoặc (một cách vị tha) tiếp tục ở lại torrent để tải lên các phần cho những máy ngang hàng khác. Ngoài ra, bất kỳ máy ngang hàng nào cũng có thể rời khỏi torrent tại bất kỳ thời điểm nào khi chỉ mới có một số phần của tệp và có thể tham gia lại torrent sau đó.

Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet 11
File distribution with BitTorrent

Hãy cùng xem xét kỹ hơn cách thức hoạt động của BitTorrent. Vì BitTorrent là một giao thức và hệ thống khá phức tạp, chúng ta sẽ chỉ mô tả các cơ chế quan trọng nhất, bỏ qua một số chi tiết nhỏ để dễ hình dung tổng thể. Mỗi torrent có một nút hạ tầng được gọi là tracker. Khi một máy ngang hàng (peer) tham gia vào một torrent, nó sẽ đăng ký với tracker và định kỳ thông báo cho tracker rằng nó vẫn đang tham gia torrent. Bằng cách này, tracker sẽ theo dõi các máy ngang hàng đang tham gia vào torrent. Một torrent có thể có ít hơn mười hoặc nhiều hơn một nghìn máy ngang hàng tham gia tại bất kỳ thời điểm nào.

Khi một người dùng mới, chẳng hạn như Alice, tham gia vào một torrent, cô sẽ kết nối với một tracker — một máy chủ theo dõi các máy ngang hàng (peers) đang tham gia. Tracker sẽ cung cấp cho Alice một danh sách các peer ngẫu nhiên để bắt đầu quá trình trao đổi dữ liệu. Tại bất kỳ thời điểm nào, mỗi peer sẽ chỉ có một số phần nhất định của tệp tin, và nhiệm vụ của họ là trao đổi các phần mà họ thiếu.

Khi đã kết nối với một số peer, Alice sẽ yêu cầu danh sách các phần tệp mà từng người trong số họ sở hữu. Với thông tin này, Alice sẽ áp dụng chiến lược rarest first (ưu tiên phần hiếm nhất). Chiến lược này giúp Alice ưu tiên tải về những phần mà ít peer có nhất, nhằm đảm bảo rằng các phần hiếm được phân phối đều đặn trong cộng đồng, giúp tăng khả năng có sẵn của mỗi phần tệp trên toàn bộ mạng torrent. Đồng thời, Alice cũng phải quyết định gửi các phần mà mình đã tải về cho ai. BitTorrent sử dụng một cơ chế trao đổi ưu tiên (choked/unchoked) thông minh để tối ưu hóa tốc độ chia sẻ. Alice sẽ đo lường tốc độ tải lên của các peer đang cung cấp dữ liệu cho cô, sau đó chọn ra 4 peer có tốc độ tải lên cao nhất để ưu tiên chia sẻ lại dữ liệu. Những peer này được gọi là unchoked, tức là không bị giới hạn băng thông từ phía Alice. Cứ mỗi 10 giây, Alice sẽ tính toán lại tốc độ của các peer này và có thể thay đổi nhóm ưu tiên tùy theo hiệu suất.

Ngoài 4 peer ưu tiên này, cứ mỗi 30 giây, Alice sẽ chọn ngẫu nhiên một peer khác (gọi là optimistically unchoked) để thử trao đổi dữ liệu. Đây là một cách giúp các peer mới hoặc các peer chưa có nhiều phần tệp có cơ hội nhận được dữ liệu. Nếu quá trình trao đổi diễn ra suôn sẻ và tốc độ truyền tải đủ cao, các peer này có thể được đưa vào danh sách ưu tiên của nhau, giúp tăng khả năng trao đổi dữ liệu hiệu quả hơn.

Cơ chế này giúp đảm bảo rằng những peer có khả năng tải lên tốt sẽ tìm thấy nhau và cùng chia sẻ dữ liệu nhanh hơn. Đồng thời, việc chọn ngẫu nhiên một peer mới mỗi 30 giây cũng giúp những người tham gia mới dễ dàng hơn trong việc nhận dữ liệu ban đầu để họ có thể bắt đầu chia sẻ lại cho người khác. Các cơ chế thông minh như rarest first, choked/unchoked, và optimistic unchoking giúp BitTorrent trở thành một hệ thống chia sẻ tệp tin hiệu quả, cân bằng tải giữa các người dùng và tối ưu hóa tốc độ tải xuống cho tất cả các peer trong mạng.

Khi nói đến mạng P2P, ngoài việc chia sẻ tệp tin như trong BitTorrent, còn có một ứng dụng quan trọng khác được sử dụng rộng rãi, đó là Distributed Hash Table (DHT). DHT là một dạng cơ sở dữ liệu phân tán, trong đó các bản ghi dữ liệu được lưu trữ và phân phối trên các máy ngang hàng (peer) trong hệ thống P2P. Đây là một cách tổ chức và quản lý dữ liệu hiệu quả, giúp truy vấn thông tin nhanh chóng mà không cần một máy chủ trung tâm.

Trong BitTorrent, DHT đóng vai trò quan trọng trong việc giúp các peer tìm thấy nhau mà không cần đến một tracker truyền thống. Mỗi peer trong hệ thống DHT sẽ lưu trữ một phần nhỏ của bảng băm, cho phép nó tìm kiếm thông tin và định vị các peer khác một cách hiệu quả. DHT đã được nghiên cứu và phát triển rộng rãi, trở thành một phần không thể thiếu trong các ứng dụng P2P hiện đại, nhờ vào khả năng mở rộng tốt và khả năng hoạt động mà không phụ thuộc vào máy chủ trung tâm.

Bạn có thể tìm hiểu thêm về DHT qua các tài liệu và video hướng dẫn trên các trang web liên quan, giúp bạn hiểu rõ hơn về cách mà công nghệ này hoạt động và hỗ trợ các ứng dụng P2P như BitTorrent.

Share62Tweet39
Previous Post

[CEH] Module 11 – Phần 1: Session Hijacking là gì?

Next Post

CEH Module 11 – Phần 2: Application-Level Session Hijacking

admin

admin

A Winner Never Stops Trying.

Related Posts

Dịch vụ phân giải tên miền DNS trên Internet
Network

Bản ghi DNS và cấu trúc thông điệp DNS

15 Tháng 10, 2024
Dịch vụ phân giải tên miền DNS trên Internet
Network

Dịch vụ phân giải tên miền DNS trên Internet

15 Tháng 10, 2024
Lab 1: Cấu hình cơ bản Cisco Packet Tracer
Network

Lab 1: Cấu hình cơ bản Cisco Packet Tracer

30 Tháng 5, 2023
[Phần 1] Share trọn bộ dump CCNA 200-301
CCNA 200-301

[Phần 3] Share trọn bộ dump CCNA 200-301

3 Tháng 1, 2023
[Phần 1] Share trọn bộ dump CCNA 200-301
CCNA 200-301

[Phần 2] Share trọn bộ dump CCNA 200-301

3 Tháng 1, 2023
[Phần 1] Share trọn bộ dump CCNA 200-301
CCNA 200-301

[Phần 1] Share trọn bộ dump CCNA 200-301

19 Tháng 12, 2022
Next Post
CEH Module 11 – Phần 2: Application-Level Session Hijacking

CEH Module 11 - Phần 2: Application-Level Session Hijacking

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Danh mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS

Series

  • CHFI Tiếng Việt (1)
  • Cơ sở dữ liệu (2)
  • [2023] Share 1200 câu dump CCNA 200-301 mới nhất (3)
  • 1000 collocations IELTS phổ biến nhất (1)
  • Hệ điều hành (5)
  • Series cấu hình Firewall Cisco ASA (2)
  • Nhập môn lập trình (1)
  • 22 Lab thực hành Amazon Web Service (AWS) từ cơ bản đến nâng cao (4)
  • Nhập môn mạng máy tính (20)
  • Lập trình hệ thống (3)


Other posts in series:

  • Slide Nhập môn mạng máy tính (Tiếng Anh)
  • Tổng quan về Internet và các thành phần của Internet
  • Dịch vụ của Internet, API và giao thức của Internet
  • Các thành phần mạng biên của Internet
  • [Version mới nhất] Sách Computer Networking: A Top-Down Approach 8th Edition
  • Các phương tiện truyền dẫn của Internet
  • Các thành phần mạng lõi của Internet
  • Trễ gói tin, mất gói tin và thông lượng mạng chuyển mạch gói
  • Sự phân tầng giao thức và mô hình TCP/IP
  • Mô hình OSI là gì?
  • An ninh mạng và những mối nguy hại tiềm tàng
  • Lịch sử của mạng máy tính và Internet
  • Tổng quan về tầng Ứng dụng trong mô hình TCP/IP
  • Kết nối bền vững và không bền vững trong HTTP
  • Định dạng thông điệp HTTP
  • Cookies và Web Cache trong HTTP
  • Thư điện tử trên Internet
  • Dịch vụ phân giải tên miền DNS trên Internet
  • Bản ghi DNS và cấu trúc thông điệp DNS
  • Phân phối tệp ngang hàng (Peer-to-Peer) trên Internet

logo sinhviencntt.net

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến SinhVienCNTT.Net.

Giới thiệu

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Liên hệ

Email: sinhviencntt.net@gmail.com

Tìm kiếm

No Result
View All Result

Danh mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS
  • Home
  • Liên hệ
  • Privacy & Policy
  • Other Links

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.