Mạng đồng đẳng
Mạng thông thường có máy chủ tập trung
**Mạng ngang hàng** (tiếng Anh: *peer-to-peer network*), còn gọi là **mạng đồng đẳng**, là một mạng máy tính trong đó hoạt động của mạng chủ yếu dựa vào khả năng tính toán và băng thông của các máy tham gia chứ không tập trung vào một số nhỏ các máy chủ trung tâm như các mạng thông thường. Mạng đồng đẳng thường được sử dụng để kết nối các máy thông qua một lượng kết nối dạng ad hoc. Mạng đồng đẳng có nhiều ứng dụng. Ứng dụng thường xuyên gặp nhất là chia sẻ tệp tin, tất cả các dạng như âm thanh, hình ảnh, dữ liệu... hoặc để truyền dữ liệu thời gian thực như điện thoại VoIP.

Một **mạng đồng đẳng** đúng nghĩa không có khái niệm máy chủ và máy khách, nói cách khác, tất cả các máy tham gia đều bình đẳng và được gọi là **peer**, là một nút mạng đóng vai trò đồng thời là máy khách và máy chủ đối với các máy khác trong mạng.

Gnutella
Một số mạng hay kênh như Napster, IRC (thuộc thế hệ thứ nhất) sử dụng mô hình máy chủ-máy khách cho một số tác vụ và mô hình đồng đẳng cho những tác vụ khác. Ngược lại, các mạng như Gnutella hay Freenet (thế hệ thứ 2) sử dụng mô hình đồng đẳng cho tất cả các tác vụ, nên các mạng này thường được xem như là mạng đồng đẳng đúng nghĩa (thực ra Gnutella vẫn sử dụng một số máy chủ để giúp các máy trong mạng tìm kiếm địa chỉ IP của nhau).

Cấu trúc mạng đồng đẳng là biểu hiện của một trong những khái niệm quan trọng nhất của Internet, mô tả trong "RFC 1, Host Software"  xuất bản ngày 7 tháng 4 năm 1969. Gần hơn, khái niệm này đã được sự công nhận rộng rãi trong các cấu trúc chia sẻ nội dung mà không có máy chủ trung tâm.

Khái niệm đồng đẳng ngày nay được tiến hóa vào nhiều mục đích sử dụng khác nhau, không chỉ để trao đổi tệp mà còn khái quát hóa thành trao đổi thông tin giữa người với người, đặc biệt trong những tình huống hợp tác giữa một nhóm người trong cộng đồng.

Phân loại mạng đồng đẳng
------------------------

Ta có thể phân loại các mạng đồng đẳng hiện nay theo tiêu chí về mức độ tập trung của chúng như sau:

Mạng đồng đẳng thuần túy:

* Các máy trạm có vai trò vừa là máy chủ vừa là máy khách
* Không có máy chủ trung tâm quản lý mạng
* Không có máy định tuyến (bộ định tuyến) trung tâm, các máy trạm có khả năng tự định tuyến

Mạng đồng đẳng lai:

* Có một máy chủ trung tâm dùng để lưu trữ thông tin của các máy trạm và trả lời các truy vấn thông tin này.
* Các máy trạm có vai trò lưu trữ thông tin, tài nguyên được chia sẻ, cung cấp các thông tin về chia sẻ tài nguyên của nó cho máy chủ.
* Sử dụng các trạm định tuyến để xác định địa chỉ IP của các máy trạm.

Các mạng đồng đẳng "thuần túy" có thể kể là Gnutella và Freenet.

Ưu thế của mạng đồng đẳng
-------------------------

Một mục đích quan trọng của mạng đồng đẳng là trong mạng tất cả các máy tham gia đều đóng góp tài nguyên, bao gồm băng thông, lưu trữ, và khả năng tính toán. Do đó khi càng có nhiều máy tham gia mạng thì khả năng tổng thể của hệ thống mạng càng lớn. Ngược lại, trong cấu trúc máy chủ-máy khách, nếu số lượng máy chủ là cố định, thì khi số lượng máy khách tăng lên khả năng chuyển dữ liệu cho mỗi máy khách sẽ giảm xuống.

Tính chất phân tán của mạng đồng đẳng cũng giúp cho mạng hoạt động tốt khi một số máy gặp sự cố. Đối với cấu trúc tập trung, chỉ cần máy chủ gặp sự cố thì cả hệ thống sẽ ngưng trệ.

Đối với mạng Napster, thuật ngữ đồng đẳng nói lên tính chất quan trọng của giao thức giao tiếp đồng đẳng, còn thực ra thành công của Napster phải nhờ vào sự liên kết chặt chẽ giữa các máy tham gia với máy chủ trung tâm lưu trữ danh sách nội dung tệp trên các máy tham gia. Nhờ vậy việc tìm kiếm trở nên nhanh và hiệu quả hơn, tuy nhiên, đây cũng chính là điểm yếu dẫn đến các rắc rối pháp lý mà kết cục là sự sụp đổ của Napster.

Mạng đồng đẳng có cấu trúc và không cấu trúc
--------------------------------------------

Mạng phủ đồng đẳng bao gồm tất cả các nút mạng đại diện cho các máy tham gia và các liên kết giữa các nút mạng này. Một liên kết tồn tại giữa hai nút mạng khi một nút mạng biết vị trí của nút mạng kia. Dựa vào cấu trúc liên kết giữa các nút mạng trong mạng phủ ta có thể phân loại mạng đồng đẳng thành hai loại: có cấu trúc hay không cấu trúc.

Một mạng đồng đẳng không cấu trúc khi các liên kết giữa các nút mạng trong mạng phủ được thiết lập ngẫu nhiên (tức là không theo quy luật nào). Những mạng như thế này dễ dàng được xây dựng vì một máy mới khi muốn tham gia mạng có thể lấy các liên kết có sẵn của một máy khác đang ở trong mạng và sau đó dần dần tự bản thân nó sẽ thêm vào các liên kết mới của riêng mình. Khi một máy muốn tìm một dữ liệu trong mạng đồng đẳng không cấu trúc, yêu cầu tìm kiếm sẽ được truyền trên cả mạng để tìm ra càng nhiều máy chia sẻ càng tốt. Hệ thống này thể hiện rõ nhược điểm: không có gì đảm bảo tìm kiếm sẽ thành công. Đối với tìm kiếm các dữ liệu phổ biến được chia sẻ trên nhiều máy, tỉ lệ thành công là khá cao, ngược lại, nếu dữ liệu chỉ được chia sẻ trên một vài máy thì xác suất tìm thấy là khá nhỏ. Tính chất này là hiển nhiên vì trong mạng đồng đẳng không cấu trúc, không có bất kì mối tương quan nào giữa một máy và dữ liệu nó quản lý trong mạng, do đó yêu cầu tìm kiếm được chuyển một cách ngẫu nhiên đến một số máy trong mạng. Số lượng máy trong mạng càng lớn thì khả năng tìm thấy thông tin càng nhỏ.

Một nhược điểm khác của hệ thống này là do không có định hướng, một yêu cầu tìm kiếm thường được chuyển cho một số lượng lớn máy trong mạng làm tiêu tốn một lượng lớn băng thông của mạng, dẫn đến hiệu quả tìm kiếm chung của mạng thấp.

Hầu hết các mạng đồng đẳng phổ biến là không cấu trúc như Napster, Gnutella, Fasttrack, eDonkey2000 và Bitcoin.

Mạng đồng đẳng có cấu trúc khắc phục nhược điểm của mạng không cấu trúc bằng cách sử dụng hệ thống DHT (Bảng Băm Phân Tán, tiếng Anh: Distributed Hash Table). Hệ thống này định nghĩa liên kết giữa các nút mạng trong mạng phủ theo một thuật toán cụ thể, đồng thời xác định chặt chẽ mỗi nút mạng sẽ chịu trách nhiệm đối với một phần dữ liệu chia sẻ trong mạng. Với cấu trúc này, khi một máy cần tìm một dữ liệu, nó chỉ cần áp dụng một giao thức chung để xác định nút mạng nào chịu trách nhiệm cho dữ liệu đó và sau đó liên lạc trực tiếp đến nút mạng đó để lấy kết quả.

Một số mạng đồng đẳng có cấu trúc nổi tiếng bao gồm Chord, CAN, Kademlia, Pastry và Tapestry.

Tranh cãi pháp lý
-----------------

Theo luật của Mỹ và hầu hết các nước phương Tây phát triển, một công nghệ không được xem là bất hợp pháp nếu nó có thể được sử dụng cho các hành vi "không phạm luật" một cách đáng kể. Đối với mạng đồng đẳng, quyết định này có thể áp dụng bởi mạng có thể sử dụng để trao đổi các nội dung hợp pháp, như phần mềm miễn phí, phiên bản thử nghiệm và nội dung không đăng ký bản quyền. Nhưng trên thực tế, rất nhiều mạng đồng đẳng, nếu không muốn nói là hầu hết, đều được lợi dụng để sao chép trao đổi trái phép các nội dung có bản quyền như âm nhạc hay phim ảnh. Điều này dẫn đến việc các công ty truyền thông và cả những người từng ủng hộ mạng đồng đẳng mất lòng tin về việc sử dụng mạng cho mục đích hợp pháp và cho rằng mạng đồng đẳng đang gây ra một hiểm họa cho cả hệ thống phân phối nội dung. Đã có nhiều nghiên cứu để định lượng thiệt hại tài chính gây nên bởi mạng đồng đẳng, nhưng hầu hết đều có vẻ không chắc chắn vì trên tính toán lý thuyết, mạng đồng đẳng gây những thiệt hại lớn, trong khi trên thực tế cho thấy nguồn thu của các ngành công nghiệp bị ảnh hưởng từ khi xuất hiện mạng đồng đẳng không bị thay đổi đáng kể. Cho dù có thật sự bị thiệt hại hay không, tại Mỹ, cả hai Hiệp Hội Ghi Âm Mỹ (RIAA) và Hiệp Hội Điện ảnh Mỹ đã và đang bỏ ra rất nhiều công sức và tiền bạc để chống lại việc sử dụng mạng đồng đẳng, bằng cách kiện các chủ sở hữu mạng đồng đẳng ra tòa, đồng thời vận động các nhà làm luật thông qua những luật cho phép xử lý dễ dàng việc chia sẻ trao đổi thông tin trái phép trên các mạng này. Không chỉ giới hạn ở Mỹ, các tổ chức này còn dựa vào ưu thế chính trị để gây sức ép lên các nhà hành pháp tại các nước khác, điển hình gần đây là vụ thu giữ hệ thống mạng của trang web thepiratebay.org tại Thụy Điển, một trong những địa chỉ yêu thích của những người dùng BitTorrent, hay việc gây sức ép lên Duma nhằm chấm dứt hoạt động kinh doanh của nhà phân phối âm nhạc trực tuyến allofmp3.com tại Nga.

Khi đe dọa trở nên gia tăng trên mạng đồng đẳng, các nhà phát triển mạng nhanh chóng tìm cách thích ứng để làm cho mạng trở nên khó bị quấy nhiễu về cả hai mặt kĩ thuật và luật pháp. Điều này khiến cho tất cả trách nhiệm đổ dồn lên người sử dụng mạng, vì theo nguyên tắc rõ ràng công nghệ mạng đồng đẳng là hợp pháp nhưng không có nghĩa là cho phép việc lợi dụng mạng để trao đổi nội dung trái phép. Một khuynh hướng của các nhà phát triển mạng đồng đẳng là xây dựng các mạng nặc danh cho phép chia sẻ thông tin hợp pháp lẫn bất hợp pháp.

Xem thêm
--------

* Điện toán máy chủ ảo hay còn gọi là điện toán đám mây
* Tor
* Bitcoin

Tham khảo
---------


* Ross J. Anderson. The eternity service. In *Pragocrypt 1996*, 1996.
* Marling Engle. Vulnerabilities of P2P systems and a critical look at their solutions, tháng 5 năm 2006
* Stephanos Androutsellis-Theotokis and Diomidis Spinellis. A survey of peer-to-peer content distribution technologies. ACM Computing Surveys, 36(4):335–371, tháng 12 năm 2004. doi:10.1145/1041680.1041681.
* Biddle, Peter, Paul England, Marcus Peinado, and Bryan Willman, The Darknet and the Future of Content Distribution. In *2002 ACM Workshop on Digital Rights Management*, 18 tháng 11 2002.
* Antony Rowstron and Peter Druschel, Pastry: Scalable, Decentralized Object Location, and Routing for Large-Scale Peer-to-Peer Systems. In proceedings *Middleware 2001: IFIP/ACM International Conference on Distributed Systems Platforms*. Heidelberg, Germany, 12 tháng 11-16, 2001. Lecture Notes in Computer Science, Volume 2218, tháng 1 năm 2001, Page 329.
* Andy Oram et al. Peer-to-Peer:Harnessing the Power of Disruptive Technologies, Oreilly 2001
* Detlef Schoder and Kai Fischbach, Core Concepts in Peer-to-Peer (P2P) Networking Lưu trữ 2006-06-13 tại Wayback Machine. In: Subramanian, R.; Goodman, B. (eds.): P2P Computing: The Evolution of a Disruptive Technology, Idea Group Inc, Hershey.
* I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, and H. Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In *Proceedings of SIGCOMM 2001*, tháng 8 năm 2001.
* Ralf Steinmetz, Klaus Wehrle (Eds). Peer-to-Peer Systems and Applications Lưu trữ 2005-11-03 tại Wayback Machine. ISBN 3-540-29192-X, Lecture Notes in Computer Science, Volume 3485, tháng 9 năm 2005
* Silverthorne, Sean. *Music Downloads: Pirates- or Customers? Lưu trữ 2006-06-30 tại Wayback Machine*. Harvard Business School Working Knowledge, 2004.
* Kronschnabl, A & Rawlings T. Plug In & Turn on: A Filmmakers Guide to the Internet Marion Boyars, 2004.
* Peer to peer content distribution resources - a collection of several hundred academic papers related to Peer to Peer content delivery networks Peer to peer resources from HUJI

Liên kết ngoài
--------------

|  |  |
| --- | --- |
|  | Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về ***Mạng ngang hàng***. |

* P2P (computer network) tại *Encyclopædia Britannica* **(tiếng Anh)**
* IBM Developer Works: The practice of peer-to-peer computing
* Internet2® Peer-to-Peer Working Group
* OpenP2P - P2P development resources
* The Web 2.5 Blog discusses P2P web servers on mobile devices
* Understanding peer-to-peer: An Introduction for Service Providers Lưu trữ 2006-06-14 tại Wayback Machine - article by CacheLogic
* The P2P revolution Peer-to-peer networking & the entertainment industry. A free-to-distribute white paper by Scott Jensen.
* LinuxP2P Lưu trữ 2006-02-12 tại Wayback Machine List of file sharing software for GNU/Linux
* The Foundation for P2P Alternatives Wiki-based site with discussion of the philosophy behind P2P networks.
* P2P Networking 4 Science Lưu trữ 2006-06-15 tại Wayback Machine A review of the current and potential uses of P2P networks in scientific research.

|  |  |
| --- | --- |
| Tiêu đề chuẩn Sửa dữ liệu tại Wikidata | 
* LCCN: sh2001003097

 |

| * x
* t
* s
Các mẫu thiết kế phần mềm |
| --- |
| Tạo lập | 
* Nhà máy trừu tượng
* Trình tạo
* Dependency injection
* Phương thức nhà máy
* Khởi tạo lười
* Đa thể
* Object pool
* Nguyên mẫu
* RAII
* Đơn thể

 |
| Cấu trúc | 
* Tiếp hợp
* Cầu
* Hợp tử
* Trang trí
* Uỷ quyền
* Mặt tiền
* Flyweight
* Front controller
* Marker interface
* Mô đun
* Proxy
* Twin

 |
| Hành vi | 
* Bảng đen
* Chain of responsibility
* Mệnh lênh
* Trình thông dịch
* Biến lặp
* Mediator
* Vật lưu niệm
* Null object
* Quan sát viên
* Nhân viên
* Specification
* State
* Chiến lược
* Template method
* Khách thăm

 |
| Hàm | 
* Monoid
* Hàm tử
* Applicative
* Monad
* Comonad
* Free monad
* HOF
* Currying
* Function composition
* Closure
* Generator

 |
| Đồng thời | 
* Active object
* Actor
* Balking
* Barrier
* Binding properties
* Coroutine
* Compute kernel
* Double-checked locking
* Event-based asynchronous
* Fiber
* Futex
* Futures and promises
* Guarded suspension
* Immutable object
* Join
* Khoá
* Messaging
* Monitor
* Nuclear
* Proactor
* Reactor
* Read write lock
* Scheduler
* STM
* Thread pool
* Thread-local storage

 |
| Kiến trúc | 
* ADR
* Active record
* Broker
* Client–server
* CBD
* DAO
* DTO
* DDD
* ECB
* ECS
* EDA
* Front controller
* Identity map
* Interceptor
* Implicit invocation
* Inversion of control
* Model 2
* MOM
* Microservices
* MVA
* MVC
* MVP
* MVVM
* Monolithic
* Multitier
* Naked objects
* ORB
* P2P
* Publish–subscribe
* PAC
* REST
* SOA
* Service locator
* Đặc tả

 |
| Đám mâyPhân tán | 
* Ambassador
* Anti-Corruption Layer
* Bulkhead
* Cache-Aside
* Circuit Breaker
* CQRS
* Compensating Transaction
* Competing Consumers
* Compute Resource Consolidation
* Event Sourcing
* External Configuration Store
* Federated Identity
* Gatekeeper
* Index Table
* Leader Election
* MapReduce
* Materialized View
* Pipes
* Filters
* Priority Queue
* Publisher-Subscriber
* Queue-Based Load Leveling
* Retry
* Scheduler Agent Supervisor
* Sharding
* Sidecar
* Strangler
* Throttling
* Valet Key

 |
| Khác | 
* Business delegate
* Composite entity
* Intercepting filter
* Lazy loading
* Mangler
* Mock object
* Type tunnel
* Method chaining

 |
| Sách | 
* *Design Patterns*
* *Enterprise Integration Patterns*
* *Code Complete*
* *POSA*

 |
| Người | 
* Christopher Alexander
* Erich Gamma
* Ralph Johnson
* John Vlissides
* Grady Booch
* Kent Beck
* Ward Cunningham
* Martin Fowler
* Robert Martin
* Jim Coplien
* Douglas Schmidt
* Linda Rising

 |
| Cộng đồng | 
* The Hillside Group
* The Portland Pattern Repository

 |