Cara cepat memulai VUE3.0: Memulai pembelajaran.
Ini adalah artikel pertama di seri Nodejs. Saat saya membaca tutorial sebelumnya, banyak di antaranya dimulai dengan IO, buffer, path, event, fs, process, dan mekanisme loop peristiwa simpul. Ini memang merupakan ketergantungan pengembangan yang terutama diandalkan oleh pengembangan simpul. Tapi saya cukup cemas. Sejak saya mempelajari tentang simpul, itu berarti simpul dapat melakukan backend, tetapi paruh pertama dari kursus ini berbicara tentang kemampuan yang dimilikinya, yaitu bagaimana berinteraksi dengannya pada akhirnya. Pengenalan modul komunikasi klien
Saya merasa sangat tidak nyaman, jadi ketika saya menulis ringkasan saya sendiri, saya harus menulis modul yang berkomunikasi antar server
dan klien terlebih dahulu merasa nyaman. Bahkan jika poin pengetahuan dari modul acara dan modul fs terlibat dalam proses tersebut,dapat mengesampingkannya untuk saat ini dan memahami bagaimana modul net
mengimplementasikan komunikasi secara keseluruhan
Jika ingin mempelajari modul komunikasi harus memahami model komunikasi jaringan.Jika ingin mengingat model komunikasi jaringan harus mempraktekkannya.Untuk membantu ingatan.
Ada banyak sekali konten di bidang ini,saya
ingin memahaminya secara mendalam, dan juga memerlukan kajian yang sistematis.
Untuk front-end, kita perlu mengingat hasil sistem rangkaian protokol TCP/IP.
Lapisan aplikasi: http (port 80), FTP (21), SMTP (mengirim email), POP (menerima email),
lapisan Transport
: Lapisan Internet TCP/UDP
: IP, ICMP (protokol tambahan dari lapisan IP)
Lapisan tautan data: PPP, SLIP
Lapisan fisik: Jaringan memiliki pasangan terpelintir, kabel koaksial, serat optik, dan metode transmisi lainnya, mengikuti spesifikasi ISO2110
dari ICMP
untuk ini Hal ini dapat diketahui dari protokol-protokol yang melekat pada protokol IP bahwa tidak perlu terlalu khawatir tentang lapisan protokol jaringan. ICMP
jelas membutuhkan protokol IP sebagai dasarnya, tetapi juga direncanakan sebagai lapisan jaringan Pemahaman kita yang benar tentang model OSI, menurut saya, seharusnya lebih bermakna menggunakan model OSI untuk menganalisis masalah daripada menggunakan apa yang disebut lapisan protokol.
Rangkaian protokol TCP/IP tidak hanya mengacu pada TCP dan protokol IP, tetapi karena kedua protokol ini terlalu di luar lingkaran, TCP digunakan /IP secara kolektif mengacu pada kumpulan protokol yang terkait dengan Internet. Cara lain untuk mengatakannya adalah sebagai nama kolektif untuk keluarga protokol yang digunakan di Proses penggunaan protokol TCP/IP.
Alur transmisi client dan server adalah sebagai berikut
Jika perannya menjadi发送者
dan接受者
, alur transmisinya adalah sebagai berikut:
Terlihat bahwa selama proses transmisi, mulai dari pihak pengirim, informasi header yang diperlukan akan ditambahkan tanpa melalui lapisan pemeriksaan dan lapisan pengkodean bekerja sebaliknya. Setiap lapisan melewati Hapus header yang sesuai. Tunggu saja sampai data HTTP akhir diperoleh.
Gambar
.di atas adalah dari "Ilustrasi HTTP"
Di atas adalah model protokol jaringan umum
banyak tempat menggabungkan hasil sistem OSI ke dalam/IP? Setelah protokol lima lapis, apakah nama lapisan jaringan akan menjadi lapisan Internet?
Jabat tangan pertama: Klien mengirimkan flag SYN (nomor urut J) ke server, dan memasuki status SYN_SENT (menunggu konfirmasi dari server).
Jabat tangan kedua: Server menerima SYN J dari klien, dan server akan mengonfirmasi Paket data telah diterima dan dikirim bit flag ACK (nomor urut J + 1) dan bit flag SYN (nomor urut K), lalu memasuki status SYN_REVD (penerimaan permintaan dan menunggu status konfirmasi klien)
jabat tangan ketiga:
klien masuk Setelah koneksi dibuat, bit flag ACK (K+ 1) dikirim ke server untuk mengkonfirmasibahwa
klien telah menerima koneksi yang dibuat. Setelah server menerima flag ACK, server memasuki status koneksi yang dibuat
K keduanya digunakan untuk menentukan siapa koneksinya. Dalam permintaan, tidak ada perbedaan dalam struktur SYN dan ACK, tetapi objek yang dikirim berbeda.
net模块
adalah implementasi khusus dari koneksi TCP di atas Pertama
-tama, tetap disarankan untuk langsung membuka dokumentasi resmi untuk mempelajari API. Isi dokumentasi berbahasa Mandarin bukanlah versi terbaru.
Ketika saya belajar, saya mencoba membaca dokumen berbahasa Inggris ketika saya punya waktu .Saya telah memaksakan hal ini selama setengah tahun. Saya tidak tahan pada awalnya, tetapi sekarang saya dapat menahan ketidaknyamanan dan membacanya. Selama setengah tahun Kemajuan dari waktu ke waktu terlihat jelas adalah hal yang baik. Artinya ini bukan zona nyaman Anda. Bagaimanapun, keberanian untuk melintasi zona nyaman Anda adalah sumber
kemajuan objek untuk mensimulasikan klien dan server. Buat dua file, masing-masing client.js
dan service.js
. Buat melalui baris perintah:
touch client.js && touch service.js
memperkenalkan modul net
, dan biarkan modul net . server masuk ke status LISTENT
, konfigurasikan nomor port dan alamat HOST (lewati proses resolusi DNS secara manual), dan tunggu panggilan klien
const net = require("net"); pos konstan = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(post, host);
Saat ini, server sesuai dengan status server LISTEN
dalam koneksi TCP.
Kemudian mendengarkan beberapa peristiwa yang diperlukan, yang merupakan kait yang disediakan oleh server )
server.on("mendengarkan", ( ) => { console.log("Server dapat dihubungkan"); }); server.on("koneksi", (soket) => { console.log("Seorang klien sedang berkunjung"); }); server.on("tutup", () => { console.log("Server dimatikan"); }); server.on("kesalahan", (kesalahan) => { console.log("Server mengalami kesalahan: ", error); // kesalahan memiliki informasi kesalahan});
Rangkaian kode di atas melibatkan,
listening
: suatu peristiwa yang dipicu setelah mendengarkanconnection
port : suatu peristiwa yang dipicu ketika klien kunjunganclose
: Dipicu oleherror
penutupan server : Dipicu oleh kesalahan serverMengenai close
, kita perlu memperhatikan fakta bahwa latar belakang saudara biasanya langsung
ps Kill -9 pid
dilakukan dengan mematikan thread.
Pada anjing connection
, parameter formalnya adalah nama soket. Terjemahan bahasa Mandarinnya adalah kata bersarang, yang diringkas menjadi aliran demi node data yang dikirim oleh klien. Hal ini karena data itu sendiri memiliki metodenya sendiri. Saya memproses socket
connection
server koneksi.on("connection", (socket) => { console.log("Seorang klien sedang berkunjung"); soket.on("data", (data) => { console.log(data); //Data yang dikirim oleh klien}); });
aliran akan diperkenalkan di artikel mendatang.
Karena server dapat menerima data yang dikirim oleh klien, maka secara alami dapat membalas ke klien. Tulis di socket.on
(tentu saja bisa juga ditulis di luar):
socket.write("
Saya
telah menerima server Anda, klien");
socket.on('close')
ini, jika klien telah selesai menerima data dan kemudian menutup koneksi
("tutup", () => { console.log("Klien mematikan ujung aliran yang lain"); });
Masukkan ringkasan kejadian socket
di client.js
. Saat ini, semua konten service.js
adalah sebagai berikut:
const net = require("net"); pos konstan = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(postingan, host); server.on("mendengarkan", () => { console.log("Server dapat dihubungkan"); }); server.on("koneksi", (soket) => { console.log("Seorang klien sedang berkunjung"); soket.on("data", (data) => { console.log(data); //Data yang dikirim oleh klien socket.write("Saya telah menerimanya dari server Anda, klien"); }); socket.on("tutup", () => { console.log("Klien mematikan ujung aliran yang lain"); server.close(); // Klien tidak memerlukan data lagi, jadi mari kita tutup servernya}); }); server.on("tutup", () => { console.log("Server dimatikan"); }); server.on("kesalahan", (kesalahan) => { console.log("Server mengalami kesalahan: ", error); // error memiliki informasi kesalahan});
Bagian
klien jauh lebih sederhana.
pos konstan = 3306; const host = "127.0.0.1"; const socket = net.connect(posting, host); soket.on("sambung", () => { console.log("Sudah terhubung ke server"); }); socket.write("Server, saya datang"); soket.on("data", (data) => { konsol.log(data.toString()); soket.end(); }); socket.on("tutup", () => { console.log("Koneksi telah ditutup"); });
Ringkasan peristiwa socket
connect
: Koneksi yang berhasil dengan server memicudata
: Menerima parameter yang dikirim olehend
server : Setelah data diterima, dapat memicuclose
: Penutupan soket memicukerangka kerja service.js
dan client.js
telah ditulis. Jalankan setelah membuka dua terminal:
node service.js node client.js
dapat memeriksa hasil cetakannya sendiri.
Seluruh kerangka koneksi TCP pada dasarnya telah selesai. Tentu saja, produksi sebenarnya jauh lebih dari itu. Ini juga perlu menangani paket lengket, pembongkaran/pengemasan, paket detak jantung, dll.
Artikel ini direproduksi dari: https://juejin.cn/post/7084618854801866765
Penulis: I am Little Orange