Tôi có một số câu hỏi về lỗ đục lỗ với UDP. Dựa trên wiki http://en.wikipedia.org/wiki/UDP_hole_punchingLỗ UDP Đột
1) Để thiết lập phiên UDP giữa hai bên (máy khách phía sau NAT, máy chủ không phải NAT), khách hàng chỉ cần gửi gói đến máy chủ và sau đó phiên được cho phép cả hai cách (gửi & nhận) thông qua tường lửa? Có nghĩa là khách hàng cũng có thể nhận được từ máy chủ.
2) Lỗ đục lỗ UDP: Hai máy khách đầu tiên kết nối với máy chủ, sau đó máy chủ cung cấp cổng ứng dụng khách/ip cho các máy khách khác, vì vậy khách hàng gửi gói tin cho nhau trên các cổng đó. Điều này có đúng không?
3) nếu # 2 là đúng, Tại sao tường lửa cho phép nhận dữ liệu từ IP khác so với mạng được sử dụng để tạo kết nối trên cổng đó? Âm thanh như một lỗ hổng bảo mật lớn nên được lọc một cách dễ dàng? Tôi hiểu rằng giả mạo nguồn IP sẽ lừa nó, nhưng điều này?
Cảm ơn bạn trước, Johan
Vì vậy, khi tôi hiểu nó có hai cổng khác nhau được sử dụng khi người dùng gửi dữ liệu; đầu tiên là cổng mà anh ta đã ràng buộc() (cổng 'riêng tư' của khách hàng) và cổng thực tế mà anh ta đang gửi (cổng 'công khai' của khách hàng). Vì vậy, tôi cần phải nói cho mỗi khách hàng những gì các khách hàng khác cổng công cộng được, nó sẽ không hoạt động nếu họ cố gắng để giao tiếp với cổng riêng của họ? (ví dụ tôi liên kết() tất cả các cổng đến 12340, các khách hàng khác không thể gửi nội dung tới các khách hàng khác IP + 12340?) – KaiserJohaan
@Kaiser, thường thì nó sẽ không hoạt động. Bạn sẽ phải tìm ra cổng công khai nào được ánh xạ tới cổng riêng của bạn. Theo như tôi hiểu nó, nó được thực hiện bằng cách trước tiên gửi một cái gì đó đến một máy chủ từ cổng riêng này, sau đó máy chủ nói với cổng này cho cả hai bên.Nhưng nó vẫn còn giá trị cố gắng để giao tiếp với các cảng tư nhân, bằng cách sử dụng IP tư nhân quá. Điều này sẽ làm việc nếu cả hai khách hàng vô tình xảy ra phía sau cùng một NAT để họ có thể giao tiếp thông qua mạng LAN. –