Pertanyaan Pola Desain Komunikasi Jaringan [tertutup]


Saya telah menyadari bahwa beberapa pertanyaan yang saya tanyakan di masa lalu, seperti ini benar-benar mendidih ke pertanyaan yang lebih mendasar.

Apakah ada pola desain yang terkenal untuk komunikasi jaringan dan berdasarkan sifatnya, konstruksi protokol / parsing? Pencarian google belum mengungkapkan banyak.

Perhatikan bahwa saya tidak mencari solusi untuk masalah yang diberikan, saya mencari pola desain terdokumentasi yang berhubungan dengan komunikasi jaringan dan protokolnya.

EDIT:

Tolong, jangan menyarankan berbagai detail implementasi atau diskusikan protokol tertentu kecuali itu terkait dengan pola desain. Desain protokol bukanlah masalah, ini adalah pola desain untuk membuat atau mengurai protokol yang saya cari, belum lagi pola komunikasi itu sendiri.

EDIT2:

Saya merasa sulit untuk percaya bahwa tidak ada orang yang memiliki pola umum untuk komunikasi jaringan. Ya, saya tahu "itu tergantung", tetapi Anda dapat mengatakan bahwa tentang proyek apa pun, namun ada banyak pola yang mencakup ide umum.


32
2018-03-22 10:19


asal


Jawaban:


Saya akan mengatakan bahwa rantai pola responsability bisa berguna untuk mengirim / menerima data dari / ke jaringan.

Anda membangun serangkaian perintah untuk dikirim ke server dari klien. Setiap perintah diproses melalui rantai tanggung jawab, dengan data yang ditambahkan untuk menangani perintah dengan benar.

Pada pengiriman data, rantai bisa terlihat seperti itu


Command -> Wrap some -> Encrypt -> Kirim data
untuk mengirim data
              perintah
              (sumber, ekstra
              informasi jika
              diperlukan)

Pada penerimaan data, rantai bisa serupa, tetapi sebaliknya

Terima Data -> Mendekripsi -> Hapus data ekstra -> Jalankan perintah

Anda dapat memeriksa artikel ini untuk informasi lebih lanjut tentang rantai tanggung jawab. http://www.vincehuston.org/dp/chain.html


8
2018-04-05 05:38



Ini adalah pertanyaan yang cukup luas dan perlakuannya mungkin membutuhkan buku yang cukup padat.

Saya sendiri tidak tahu sumber daya apa pun, tetapi mari kita memikirkan ini dan mempertimbangkan apa yang akan menjadi dimensi ruang pola komunikasi jaringan:

modalitas koneksi: {connection-based, connection-less}

modalitas interaksi: {sinkron, asinkron]

kompleksitas percakapan: {command-response, dialog}

formulir pesan: {freeform-stream, blok semi-terstruktur, blok terstruktur penuh} ..?

Tempat yang baik untuk memulai adalah dengan mengambil protokol TCP / IP protokol, petakan ke ruang di atas, dan lihatlah implementasi dari satu atau lebih spesimen yang menempati posisi unik dalam pola protokol-karakteristik di atas. ruang. Kode sumber favorit * nix os Anda akan menjadi tempat yang bagus untuk dilihat.

Implementasi Parser mungkin akan jatuh ke dalam dua kategori besar: {command-switched processing, finite-state-machine}.

Yang pertama adalah (jelas) yang lebih sederhana dari keduanya dan kemungkinan implementasi awal (kecuali Anda telah melakukan hal semacam ini sebelumnya).

Yang terakhir ini (mungkin) lebih kuat, efisien (dalam hal loc), dan akan memungkinkan untuk mengadopsi perubahan ke protokol (jika masih tunduk pada perubahan desain).

(Yang mendasari (virtual) fasilitas jaringan OS (tentu saja) juga sangat mempengaruhi pelaksanaan. Ambil JVM, misalnya: NIO pemilihan berdasarkan saluran pengolahan akan bekerja cukup baik dengan FSM.)

Semoga itu membantu.


12
2018-03-26 12:25



Saya merekomendasikan: abaikan protokol jaringan / s.

Pertama memutuskan apa saja fungsi, modul dan API di antara mereka. Kemudian putuskan protokol apa yang akan digunakan oleh data untuk melintasi jaringan.

Kemudian, dengan hati-hati, enkapsulasi semua masalah jaringan di lapisannya sendiri sehingga nantinya Anda dapat menerapkan enkripsi, kompresi, menambahkan transportasi http (untuk melewati firewall) atau apa pun yang ingin Anda tambahkan nanti dengan cara yang orthogonal terhadap fungsionalitas.


3
2018-03-22 11:57



Pola Akseptor / Konektor: http://www.cs.wustl.edu/~schmidt/PDF/Acceptor.pdf

Rantai filter berdasarkan Gof Chain Of responsabiliy, digunakan dalam banyak tumpukan jaringan / kerangka kerja.

Mesin negara untuk encoding / decoding PDUs.


2
2017-09-09 09:44



Saya tidak tahu tentang pola desain, tetapi meneliti protokol yang ada mungkin merupakan titik awal yang baik, terutama yang "modern" yang telah distandarisasikan.

BitTorrent adalah protokol desentralisasi yang sangat populer yang memiliki sejumlah ekstensi.

OpenSSH adalah kandidat yang baik lainnya; mendukung negosiasi fitur, beberapa jenis enkripsi, dan saluran de / muxing.

Protokol VoIP bagus untuk aplikasi streaming: RTP dan H.323

Protokol routing jaringan juga bagus: BGP (dan ekstensi), LDP, VRRP / CARP.


0
2018-03-22 13:58



Saya tidak tahu tentang pola, seperti itu, tetapi ada beberapa titik seleksi yang "jelas". Pertama, apakah Anda ingin menggunakan ASN.1 atau tidak (ini mempengaruhi banyak sekali)? Kedua, apakah Anda menginginkan protokol yang bisa dibaca manusia atau biner? Ketiga, apakah Anda menginginkan aspek keamanan dalam protokol Anda?

Bukannya menjawab "ingin menggunakan ASN.1" akan memaksa jawaban untuk beberapa pertanyaan desain protokol.


-1
2018-03-22 11:08



Belum melalui ini secara menyeluruh, tapi kurasa ini adalah dokumen yang bagus:

Juga, ini tampak seperti buku yang bagus:


-2
2017-11-18 05:19