Điểm:1

Làm cách nào để các trò chơi trực tuyến gửi các gói UDP qua internet?

lá cờ ca

Làm cách nào để các trò chơi nhiều người chơi trực tuyến sử dụng UDP nhận được các gói được phân phối giữa các mạng qua internet? Theo những gì tôi hiểu, khách hàng sẽ phải kích hoạt chuyển tiếp cổng trên bộ định tuyến của họ để các gói đến máy tính của họ. Đây có phải là điều mà các trò chơi trực tuyến lớn (WoW, Diablo, v.v.) yêu cầu người chơi phải làm không?

Ví dụ: gần đây tôi đã tạo một máy chủ xử lý lưu lượng truy cập udp. Nó chỉ lặp lại bất cứ điều gì người gửi đã gửi. Tôi đã triển khai cái này đến một máy chủ trên internet. Tôi chỉ có thể nhận được phản hồi cho người gửi sau khi bật chuyển tiếp cổng, nhưng điều này sẽ không hoạt động nếu có hai người gửi trên cùng một mạng cục bộ.

Điểm:3
lá cờ in

Câu trả lời ngắn: Theo dõi kết nối NAT

Một điều cần nhớ là phần lớn các Bộ định tuyến trên internet IPv4 là Bộ định tuyến NAT.

Hầu hết các triển khai NAT đều thực hiện theo dõi thông minh, Khi bạn gửi UDP từ máy khách nội bộ đến một nơi nào đó, bạn sẽ có Cổng đích và Cổng nguồn. Nếu lưu lượng truy cập đến với các cổng bị đảo ngược, thì lưu lượng đó sẽ được chuyển trở lại ứng dụng khách của bạn và được cho phép trong hầu hết các tường lửa.

NAT/Tường lửa có theo dõi sẽ phát hiện các gói này có liên quan và chuyển tiếp chúng trở lại.

Ví dụ dựa trên nhận xét với người phục vụ trên cảng 5000 UDP

  • Khách hàng gửi một gói cho máy chủ: 5000, nguồn khách hàng: 5001
  • Bộ định tuyến NAT đầu tiên sẽ thấy một gói có ip nguồn và cổng của khách hàng: 5001, và điểm đến máy chủ: 5000.
  • Bộ định tuyến gửi cái này theo cách của nó và sẽ có NATip:NATport
  • Máy chủ nhận được điều này và tạo phản hồi cho NATip:NATport mà có nguồn máy chủ: 5000
  • NAT nhận được cái này và có nguồn máy chủ: 5000 điểm đến NATip:NATport, khớp với gói đã được gửi đi (nhưng bị đảo ngược nguồn và đích)
  • NAT gửi cái này đến khách hàng: 5001 còn nguồn máy chủ: 5000

IP+cổng nguồn và ip+cổng đích tạo ra một tổ hợp có thể được theo dõi. (có nhiều chi tiết hơn, nhưng đây là điều cơ bản)

Một số đọc thêm Nhưng tôi nên tìm kiếm tài liệu tốt hơn về điều này và không chỉ tham khảo bằng chứng giai thoại từ những gì tôi đã thấy.

diaper avatar
lá cờ ca
bạn có thể giải thích ý của bạn là "nếu lưu lượng truy cập đến với các cổng bị đảo ngược" không? Điều đó có nghĩa là nếu máy chủ của tôi bên ngoài NAT nhận được một gói trên cổng 5000 từ :5001, thì nó sẽ gửi trả lời lại cho :5000?
lá cờ in
đã thêm ví dụ về @diaper
user10489 avatar
lá cờ nc
Xem thêm https://en.wikipedia.org/wiki/Hole_punching_(mạng)
diaper avatar
lá cờ ca
@NiKiZe cảm ơn, điều đó có ý nghĩa. Âm thanh như bấm lỗ về cơ bản là "gửi gói nhiều lần vì gói đầu tiên có thể bị hủy" Tôi ước tôi có thể tìm ra lý do tại sao ứng dụng ví dụ của tôi vẫn không hoạt động, trong khi những thứ khác trên mạng của tôi hoạt động mà không cần chuyển tiếp cổng (cuộc gọi xbox, zoom, v.v.) nhưng đó là một câu hỏi hoàn toàn khác
lá cờ in
Hầu hết các bộ định tuyến NAT đều cho phép lưu lượng, hãy đảm bảo rằng bạn đang trả lại dữ liệu về cùng một cổng mà lưu lượng đến từ đó. Máy chủ có số cổng tĩnh, máy khách có số cổng ngẫu nhiên làm nguồn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.