Bagaimana klien game tahu bahwa server berjalan di LAN mereka?

18

Dalam banyak gim multi-pemain ada opsi untuk bermain LAN. Namun pertanyaan saya adalah bagaimana cara klien mengetahui di mana server berada di LAN?

Satu-satunya cara yang bisa saya pikirkan

  1. Kirim siaran melalui alamat siaran. Ini memiliki kelemahan disaring kadang-kadang oleh router atau switch di lingkungan jaringan yang berbeda.
  2. Coba sambungkan ke server di setiap IP di subnet Anda. Ini memiliki kelemahan yaitu lambat (Terutama jika jaringan menggunakan 10.XXX.XXX.XXX untuk IP mereka) dan serangan mini ddos, tetapi tidak akan disaring.

Bagaimana permainan melakukan ini terutama di lingkungan jaringan lain?

TheLQ
sumber

Jawaban:

32

Untuk permainan dengan LAN play, hal standar yang harus dilakukan adalah klien mengirim paket siaran untuk menemukan server. (Klien mengirimkan siaran, server mengirim balasan langsung ke klien)

Secara umum, klien akan mengirim suatu tempat antara tiga dan lima pesan siaran, masing-masing terpisah sekitar satu detik, dan kemudian akan memutuskan bahwa tidak boleh ada server jika belum mendengar balasan dalam waktu itu. Mengirim beberapa paket membuat penemuan layanan menjadi sedikit lebih toleran terhadap paket-hilang (meskipun itu jarang terjadi pada LAN), dan memiliki waktu di antara keduanya membuat mereka tidak terlalu mengganggu lalu lintas jaringan lain.

Tidak ada yang (sepengetahuan saya) yang melakukan pilihan Anda # 2, karena itu akan menurunkan kinerja LAN (atau akan memakan waktu cukup lama, jika Anda terhuyung upaya koneksi).

Tetapi untuk mengatasi kasus-kasus di mana siaran disaring oleh LAN lokal (yang sangat tidak biasa, tetapi tidak pernah terdengar), sebagian besar gim akan memungkinkan pemain untuk secara langsung memasukkan alamat IP untuk terhubung. Hal ini memungkinkan pemain dalam situasi semacam ini untuk terhubung ke server yang dikenal, bahkan jika mereka tidak dapat menyiarkan untuk menemukannya secara otomatis.

Untuk permainan melalui internet, klien akan mengirim permintaan langsung ke server meta statis , yang menjawab dengan alamat untuk instance server yang dikenal saat ini. Server, juga, menghubungi server meta itu untuk memberi tahu mereka tentang lokasi mereka sendiri sehingga klien dapat diarahkan ke mereka. Karena kompleksitas NAT, pendekatan ini biasanya tidak berfungsi untuk server yang dihosting di dalam LAN. Inilah sebabnya mengapa pendekatan semacam ini biasanya tidak digunakan untuk permainan LAN.

Catatan tambahan: Ini adalah praktik umum untuk permainan internet untuk menghubungi server titik terlebih dahulu. Server titik memberi tahu permainan pada alamat apa yang dapat menemukan server meta, yang akan memberi tahu di mana server dapat ditemukan. Point server sering (walaupun tentu saja tidak selalu) diimplementasikan sebagai server web sederhana, dan merupakan satu-satunya bagian dari sistem ini dengan alamat yang dimasukkan ke dalam game. Ini memungkinkan pengembang game untuk memindahkan server meta mereka dari satu mesin ke komputer lain sebagaimana diperlukan, hanya dengan memperbarui alamat yang dikembalikan oleh server titik. Ini juga dapat digunakan untuk mengimplementasikan bentuk sederhana load-balancing atau region-switching dengan meminta server titik mengirim pengguna ke berbagai server meta berdasarkan beban server atau kedekatan geografis.

Trevor Powell
sumber
2
1 kepada Anda, tuan, ini menjawab beberapa pertanyaan yang saya miliki juga.
Raine
2
+1, Broadcast adalah cara untuk pergi karena sebenarnya ADALAH cara yang tepat untuk melakukan # 2, hehe .. Itulah tujuan penyiaran, menghubungi beberapa IP untuk melihat apakah ada sesuatu yang mendengarkan.
James
Ya, satu-satunya masalah dengan siaran adalah LAN tertentu (perusahaan besar, khususnya) yang tidak menyebarkan siaran di antara semua segmen LAN. Di masa depan, multicast mungkin akan menjadi cara baru untuk melakukan ini, dan secara otomatis akan bekerja di semua segmen LAN. Namun saat ini, dukungan router yang tepat untuk multicast masih terlalu sulit untuk diandalkan sebagai pengganti siaran. Berikan beberapa tahun lagi dan semuanya mungkin akhirnya membaik.
Trevor Powell
Beberapa kali saya menemukan jaringan perusahaan yang tidak mendukung siaran, saya menemukan semua jenis masalah perutean lainnya terjadi yang biasanya disebabkan oleh peralatan yang rusak (kadang-kadang diperbaiki dengan memutakhirkan firmware router). Jika siaran tidak berfungsi di segmen LAN lokal, maka kemungkinan tidak disengaja.
Randolf Richardson