Làm thế nào để khách hàng trò chơi biết rằng một máy chủ đang chạy trên mạng LAN của họ?


18

Trong rất nhiều game nhiều người chơi có tùy chọn chơi LAN. Câu hỏi của tôi là làm thế nào để khách hàng biết máy chủ ở đâu trong mạng LAN?

Cách duy nhất tôi có thể nghĩ đến

  1. Gửi phát sóng qua địa chỉ phát sóng. Điều này có nhược điểm là đôi khi được lọc bởi các bộ định tuyến hoặc chuyển mạch trong các môi trường mạng khác nhau.
  2. Cố gắng kết nối với máy chủ trên mọi IP trong mạng con của bạn. Điều này có nhược điểm là chậm (Đặc biệt là nếu mạng sử dụng 10.XXX.XXX.XXX cho IP của họ) và một cuộc tấn công ddos ​​nhỏ, nhưng sẽ không được lọc.

Làm thế nào để các trò chơi làm điều này đặc biệt là trong các môi trường mạng khác?

Câu trả lời:


32

Đối với các trò chơi có chơi LAN, điều tiêu chuẩn cần làm là các máy khách gửi các gói phát sóng để khám phá các máy chủ. (Máy khách gửi truyền phát, máy chủ gửi trả lời trực tiếp cho khách hàng)

Nói chung, khách hàng sẽ gửi một nơi nào đó trong khoảng từ ba đến năm tin nhắn quảng bá, mỗi tin nhắn cách nhau khoảng một giây và sau đó sẽ quyết định rằng không có máy chủ nếu không nghe thấy bất kỳ câu trả lời nào trong thời gian đó. Gửi nhiều gói làm cho việc khám phá dịch vụ trở nên dễ bị mất gói hơn một chút (mặc dù điều đó không phổ biến trên mạng LAN) và việc có thời gian giữa chúng khiến chúng không làm gián đoạn lưu lượng mạng khác quá nhiều.

Không ai (theo hiểu biết của tôi) thực hiện tùy chọn số 2 của bạn, bởi vì nó sẽ làm giảm hiệu suất của mạng LAN (hoặc sẽ mất khá nhiều thời gian, nếu bạn cố gắng ngăn chặn các nỗ lực kết nối).

Nhưng để đối phó với các trường hợp phát sóng được lọc bởi mạng LAN cục bộ (điều này khá bất thường, nhưng không phải là chưa từng thấy), hầu hết các trò chơi sẽ cho phép người chơi nhập trực tiếp địa chỉ IP để kết nối. Điều này cho phép người chơi trong các loại tình huống này kết nối với một máy chủ đã biết, thậm chí họ không thể phát để tự động tìm thấy nó.

Đối với các trò chơi qua internet, khách hàng sẽ gửi yêu cầu trực tiếp đến máy chủ meta tĩnh , trả lời với các địa chỉ cho các trường hợp máy chủ hiện tại đã biết. Máy chủ, tương tự, liên hệ với máy chủ meta đó để thông báo cho họ về vị trí của chính họ để khách hàng có thể được chuyển hướng đến họ. Tuy nhiên, do sự phức tạp của NAT, cách tiếp cận này thường không hoạt động đối với các máy chủ được lưu trữ bên trong mạng LAN. Đây là lý do tại sao cách tiếp cận này thường không được sử dụng cho các trò chơi LAN.

Lưu ý phụ: Đó là thông lệ phổ biến cho các trò chơi internet để liên hệ với máy chủ điểm trước. Máy chủ điểm cho trò chơi biết địa chỉ nào nó có thể tìm thấy máy chủ meta, nó sẽ cho nó biết nơi máy chủ có thể được tìm thấy. Các máy chủ điểm thường (mặc dù chắc chắn không phải luôn luôn) được triển khai như một máy chủ web đơn giản và là phần duy nhất của hệ thống này có địa chỉ được mã hóa cứng trong trò chơi. Điều này cho phép các nhà phát triển trò chơi di chuyển máy chủ meta của họ từ máy này sang máy khác theo yêu cầu, chỉ bằng cách cập nhật địa chỉ mà máy chủ điểm trả về. Nó cũng có thể được sử dụng để thực hiện một hình thức cân bằng tải hoặc chuyển vùng đơn giản bằng cách máy chủ điểm gửi người dùng đến các máy chủ meta khác nhau dựa trên tải máy chủ hoặc khoảng cách địa lý.


2
+1 cho bạn, điều này đã trả lời một vài câu hỏi mà tôi có.
Raine

2
+1, Phát sóng là cách để đi vì nó thực sự là cách thích hợp để làm # 2, hehe .. Đó là những gì phát sóng dành cho, liên hệ với nhiều IP để xem có gì đang nghe không.
James

Vâng, vấn đề duy nhất với phát sóng là các mạng LAN nhất định (cụ thể là của công ty lớn) không truyền phát giữa tất cả các phân đoạn LAN. Trong tương lai, multicast có lẽ sẽ là cách mới để làm điều này và sẽ tự động hoạt động trên tất cả các phân đoạn LAN. Nhưng ngay bây giờ, hỗ trợ bộ định tuyến thích hợp cho phát đa hướng vẫn còn quá nhiều để dựa vào như một sự thay thế cho phát sóng. Cho nó thêm vài năm nữa và mọi thứ cuối cùng có thể được cải thiện.
Trevor Powell

Vài lần tôi gặp các mạng công ty không hỗ trợ phát sóng, tôi đã tìm thấy tất cả các loại sự cố định tuyến khác xảy ra thường do thiết bị bị lỗi (đôi khi được khắc phục bằng cách nâng cấp chương trình cơ sở của bộ định tuyến). Nếu phát sóng không hoạt động trong một phân đoạn LAN cục bộ, thì đó không có khả năng là cố ý.
Randolf Richardson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.