2013-06-04 23 views
14

Tôi nhớ lại việc đọc một bài viết về một cách được đề xuất để làm điều này. Nếu tôi nhớ chính xác, các nhà nghiên cứu đã tạo thành công một kết nối tới máy khách trên mạng khác mà không cần chuyển tiếp cổng bằng cách gửi các gói HTTP cho nhau (Alice giả vờ rằng Bob là một máy chủ web HTTP trong khi Bob giả vờ Alice là một máy chủ web).Làm cách nào để tạo kết nối ngang hàng với cổng chuyển tiếp hoặc máy chủ trung tâm?

Tôi không chắc liệu điều đó có hợp lý hay không, nhưng có ai biết nơi tôi có thể tìm thấy bài viết hay không ai có ý tưởng khác về cách kết nối hai khách hàng với nhau mà không cần máy chủ trung tâm hoặc cổng chuyển tiếp?

Thậm chí có thể không?

Chỉnh sửa: Tôi sẽ biết IP của cả máy tính và cổng mà chương trình đang nghe.

+0

P2P có thể được lưu trữ bằng http://en.wikipedia.org/wiki/UDP_hole_punching, nhưng không có máy chủ tập trung, bạn không thể tìm thấy IP của các thành viên khác. – Deepsy

+0

@Deepsy ngay cả khi bạn biết IP và cổng của cả hai bên? – mwaboff

Trả lời

21

Có thể. Tôi thấy ít nhất 2 phần cho câu hỏi của bạn. (Nó sẽ không phải là gói HTTP. Sau đó nó phức tạp hơn rất nhiều.)

Trước hết là, tôi tin rằng bạn có thể đang nói về một khái niệm gọi là phân cấp mạng P2P. Ý tưởng ý tưởng chính đằng sau mạng ngang hàng phi tập trung là một thực tế rằng các nút liên kết trong một mạng như vậy sẽ không yêu cầu máy chủ trung tâm hoặc nhóm máy chủ.

Như bạn đã biết, hầu hết các mạng peer-to-peer tập trung thường yêu cầu hệ thống tập trung như vậy để trao đổi và duy trì kết nối giữa các nút. Khái niệm cơ bản là như vậy, vì nút mới sẽ kết nối với một trong các máy chủ chính để lấy thông tin về các nút khác trên mạng để duy trì kết nối và tính khả dụng của nó. Hệ thống trung tâm được duy trì thông qua các máy chủ liên tục đồng bộ hóa trạng thái mạng, thông tin liên quan và phối hợp trung tâm với nhau.

Mạng phân cấp, mặt khác, không có cấu trúc hoặc lõi được xác định trước. Mô hình ngang hàng này còn được gọi là các mạng P2P không có cấu trúc. Bất kỳ nút mới nào sẽ sao chép hoặc kế thừa các liên kết ban đầu từ nút "cha mẹ" và sẽ tạo thành thêm giờ danh sách riêng của nó. Có một số loại phân cấp của các mạng không có cấu trúc như vậy.

Điều thú vị là sự vắng mặt của hệ thống điều khiển và lệnh trung tâm giúp giải pháp lựa chọn cho các botnet độc hại hiện đại. Một ví dụ tuyệt vời có thể là Storm botnet, sử dụng cái gọi là Passive P2P Monitor (PPM). PPM đã có thể xác định vị trí các máy chủ bị nhiễm và xây dựng danh sách ngang hàng bất kể máy chủ bị nhiễm có bị tường lửa hoặc NAT hay không. Bài viết của Wikipedia Storm botnet là một điều thú vị. Ngoài ra còn có nghiên cứu cộng tác tuyệt vời được gọi là Towards Complete Node Enumeration in a Peer-to-Peer Botnet, cung cấp các kỹ thuật và phân tích khái niệm tuyệt vời được sử dụng bởi mạng botnet Storm.

Thứ hai của tất cả, bạn có thể đang nói về lỗ đục lỗ UDP. Đây là một kỹ thuật hoặc thuật toán được sử dụng để duy trì kết nối giữa 2 máy chủ đằng sau bộ định tuyến/cổng NATed bằng cách sử dụng máy chủ lưu trữ nhận xét thứ 3 bằng phương tiện của máy chủ thứ ba.

Có một bài viết tuyệt vời của Bryan Ford, Pyda Srisuresh và Dan Kegel được gọi là Peer-to-Peer Communication Across Network Address Translators.

+0

Cảm ơn bạn đã cung cấp thông tin tốt và có nguồn gốc.Nhìn vào lỗ hổng UDP, tôi nhận ra đây là thứ tôi đang tìm kiếm (vì một lý do nào đó tôi nghĩ rằng yêu cầu một máy chủ tập trung, nhưng bây giờ nhận ra nếu tôi đã có IP và cổng thông tin tôi có thể bỏ qua phần đó). – mwaboff

+1

Bạn được chào đón. Tôi rất vui vì tôi có thể giúp. – PSS

+1

SO có một số suy nghĩ thông minh. – frostymarvelous

Các vấn đề liên quan