Penyediaan asas rangkaian pembelajaran soket


Pengenalan kepada bahagian ini:

Untuk menjaga pemula yang tidak pernah mempelajari Java Socket, atau untuk melihat konsep yang berkaitan dengan protokol rangkaian yang terlibat dalam pembangunan Android , Lagipun, semasa temuduga, penemuduga bertanya kepada saya berapa banyak lapisan protokol rangkaian? Jadi di lapisan manakah protokol IP? Apa itu Socket? jenis apa? Lapisan manakah protokol TCP dan UDP? Apa bezanya... Nah, ini... Jadi masih berguna untuk mempelajari teori konsep bahagian ini. Perlu! Jadi tanpa berlengah lagi, mari kita mulakan bahagian ini~


1 Analisis ringkas model rangkaian tujuh lapisan OSI

Sudah tentu, kami tidak. profesional dalam kejuruteraan rangkaian, asalkan anda tahu lapisan mana yang ada dan untuk kegunaannya!

Model rangkaian tujuh lapisan OSI (dari bawah ke atas) :

  • Lapisan fizikal (Fizikal) : Menyediakan media penghantaran dan peralatan interkoneksi untuk komunikasi data antara peranti, menyediakan penghantaran data yang boleh dipercayai persekitaran. Ia boleh difahami sebagai bahagian media fizikal penghantaran rangkaian, seperti kad rangkaian, kabel rangkaian, hab, pengulang, modem dan sebagainya! Pada lapisan ini, data belum disusun dan hanya diproses sebagai aliran bit mentah atau voltan elektrik Unit lapisan ini ialah: bit bit
  • Lapisan pautan data. (Pautan Data): Ia boleh difahami sebagai saluran data Fungsi utamanya ialah bagaimana untuk beroperasi pada talian fizikal yang tidak boleh dipercayai. Penghantaran data yang boleh dipercayai, fungsi pengubahsuaian lapisan termasuk: pengalamatan alamat fizikal, pembingkaian data, kawalan aliran, pengesanan ralat data dan penghantaran semula, dsb.! Selain itu, pautan data ini merujuk kepada : lapisan fizikal harus menyediakan media penghantaran dan sambungan untuk komunikasi data antara peranti terminal. media ialah Jangka panjang, sambungan mempunyai seumur hidup. Semasa hayat sambungan, hujung penghantaran dan penerimaan boleh menjalankan komunikasi data sekali atau lebih. Setiap komunikasi mesti melalui dua proses: mewujudkan hubungan komunikasi dan meruntuhkan kenalan komunikasi! Ini mewujudkan hubungan penghantaran dan penerimaan data~ Peranti pada lapisan ini termasuk: Kad rangkaian, jambatan rangkaian, suis rangkaian Selain itu, unit lapisan ini ialah: Bingkai
  • Lapisan rangkaian. (Rangkaian): Fungsi utama adalah untuk menterjemah alamat rangkaian ke alamat fizikal yang sepadan dan memutuskan cara menghantar data dari Laluan penghantar kepada penerima, yang dipanggil penghalaan dan pencarian laluan: satu terminal mungkin perlu berkomunikasi dengan berbilang terminal, yang mengakibatkan Masalah memautkan data mana-mana dua peranti terminal! Ringkasnya: wujudkan sambungan rangkaian dan sediakan perkhidmatan kepada lapisan atas! Peranti pada lapisan ini termasuk: penghalaan! Unit lapisan ini ialah: paket data, dan protokol IP berada dalam lapisan ini!
  • Lapisan pengangkutan (Pengangkutan) : Menyediakan perkhidmatan komunikasi ke lapisan aplikasi atas, menghadap lapisan tertinggi bahagian komunikasi, dan juga Tahap paling rendah antara fungsi pengguna. Menerima data lapisan sesi, memisahkan data jika perlu dan menyerahkan data ini kepada rangkaian lapisan, dan pastikan bahawa segmen data ini mencapai hujung yang bertentangan dengan berkesan! Jadi unit lapisan ini ialah: segmen data; dan terdapat dua yang sangat penting dalam lapisan ini Protokol tersebut ialah: Protokol Kawalan Penghantaran TCP dan Protokol Datagram Pengguna UDP, yang juga merupakan bahagian teras bab ini!
  • Lapisan sesi (Sesi) : Bertanggungjawab untuk mewujudkan, mengekalkan dan menamatkan komunikasi antara dua nod dalam rangkaian. Mewujudkan pautan komunikasi, Pastikan pautan komunikasi terbuka semasa sesi, selaraskan dialog antara kedua-dua nod, tentukan sama ada komunikasi terganggu dan apabila komunikasi terganggu Tentukan dari mana untuk menghantar semula, iaitu penubuhan dan pengurusan sesi antara pengguna pada mesin yang berbeza!
  • Pembentangan : Mentafsir arahan dan data daripada lapisan aplikasi, dan menetapkan sintaks yang sepadan kepada pelbagai sintaks bermakna dan dihantar ke lapisan sesi dalam format tertentu.Fungsi utamanya adalah untuk "mengendalikan isu perwakilan maklumat pengguna, seperti pengekodan, Penukaran format data, penyulitan dan penyahsulitan, pemampatan dan penyahmampatan, dsb.
  • Lapisan aplikasi (Aplikasi) : Lapisan tertinggi model rujukan OSI, yang menyediakan perkhidmatan rangkaian untuk aplikasi pengguna. Berdasarkan kerja 6 lapisan lain, ia bertanggungjawab untuk melengkapkan sambungan antara aplikasi dan sistem pengendalian rangkaian dalam rangkaian, mewujudkan dan menamatkan sambungan antara pengguna, dan menyelesaikan pelbagai perkhidmatan rangkaian dan aplikasi yang diperlukan oleh pelbagai perjanjian untuk penyeliaan, pengurusan dan perkhidmatan. Selain itu, lapisan ini juga bertanggungjawab untuk menyelaraskan kerja antara pelbagai aplikasi. Perkhidmatan dan protokol yang disediakan oleh lapisan aplikasi untuk pengguna termasuk: perkhidmatan fail, perkhidmatan direktori, perkhidmatan pemindahan fail (FTP), perkhidmatan log masuk jauh (Telnet), perkhidmatan e-mel (E-mel), perkhidmatan percetakan, perkhidmatan keselamatan, perkhidmatan pengurusan rangkaian , perkhidmatan pangkalan data, dsb.

Baiklah, di atas kami telah menerangkan secara ringkas model rangkaian tujuh lapisan OSI Berikut ialah ringkasan:

OSI ialah model rangkaian umum hanya Beberapa lapisan ini terlibat Dalam model tujuh lapisan, setiap lapisan menyediakan yang istimewa Fungsi rangkaian, dilihat dari perspektif fungsi rangkaian:

  • Empat lapisan berikut (lapisan fizikal, lapisan pautan data, lapisan rangkaian dan lapisan pengangkutan) terutamanya menyediakan fungsi penghantaran dan pertukaran data. Iaitu, ia terutamanya mengenai komunikasi antara nod.
  • Lapisan 4 berfungsi sebagai jambatan antara bahagian atas dan bawah dan merupakan bahagian paling kritikal dari keseluruhan seni bina rangkaian; lapisan (lapisan sesi , lapisan persembahan dan lapisan aplikasi) terutamanya menyediakan maklumat dan fungsi pemprosesan data antara pengguna dan aplikasi.
  • Ringkasnya, 4 lapisan bawah terutamanya melengkapkan fungsi subnet komunikasi, dan 3 lapisan atas terutamanya melengkapkan fungsi subnet sumber.

——Kandungan di atas dirujuk daripada:
Penjelasan terperinci model tujuh lapisan OSI

2.Model empat lapisan TCP/IP

1.jpg

TCP/IP adalah sinonim dengan sekumpulan protokol Ia juga termasuk banyak protokol yang membentuk kelompok protokol TCP/IP. Kluster protokol TCP/IP dibahagikan kepada empat lapisan IP terletak pada lapisan kedua kluster protokol (sepadan dengan lapisan ketiga OSI), dan TCP terletak pada lapisan ketiga kluster protokol. (Sepadan dengan lapisan keempat OSI). Protokol komunikasi TCP/IP menggunakan struktur hierarki 4 lapisan Setiap lapisan memanggil lapisan seterusnya untuk menyediakan rangkaian untuk memenuhi keperluan anda. 4 lapisan ini ialah:
  • Lapisan aplikasi: Lapisan untuk komunikasi antara aplikasi, seperti Pemindahan E-mel Mudah (SMTP), Protokol Pemindahan Fail (FTP), Protokol Capaian Jauh Rangkaian (Telnet), dsb.
  • Lapisan pengangkutan : Dalam lapisan ini, ia menyediakan perkhidmatan pemindahan data antara nod, seperti Transmission Control Protocol (TCP), Protokol Datagram Pengguna (UDP), dsb., TCP dan UDP menambah data penghantaran ke paket data dan menghantarnya ke lapisan seterusnya, Lapisan ini bertanggungjawab untuk menghantar data dan memastikan data telah dihantar dan diterima.
  • Lapisan interkoneksi rangkaian: Bertanggungjawab menyediakan fungsi penghantaran paket data asas supaya setiap paket data boleh sampai ke destinasinya. hos (tetapi tidak menyemak sama ada ia diterima dengan betul), seperti Internet Protocol (IP).
  • Hos kepada lapisan rangkaian: Pengurusan media rangkaian sebenar, mentakrifkan cara menggunakan rangkaian sebenar (seperti Ethernet, Talian Bersiri, dsb.) untuk menghantar data.

3.Penjelasan tentang perbezaan antara TCP/UDP

Baiklah, dua perkara pertama hanya untuk semua orang mempopularkan model tujuh lapisan OSI dan TCP/UDP Konsep model empat lapisan IP, apa yang saya ingin bincangkan seterusnya Berikut ialah beberapa istilah konseptual yang berkaitan dengan pembangunan Soket kami!

1) Alamat IP

2.png

2) Port

1. digunakan untuk membezakan antara Aplikasi berbeza

2. Julat nombor port ialah 0-65535, yang mana 0-1023 bukan port simpanan sistem Program kami harus cuba untuk tidak menggunakan port ini.

3. Alamat IP dan nombor port membentuk Soket kami ialah titik akhir pautan komunikasi dua hala antara program rangkaian yang dijalankan. Ia adalah asas TCP dan UDP!

4. Port yang digunakan oleh protokol biasa: HTTP:80, FTP:21, TELNET:23

3.png

3 ) Perbandingan protokol TCP dan protokol UDP:

Penjelasan terperinci proses protokol TCP:

Pertama sekali, TCP/IP ialah suite protokol, yang merangkumi banyak protokol. UDP hanyalah salah satu daripadanya. Sebab mengapa ia dinamakan protokol TCP/IP ialah Oleh kerana protokol TCP dan IP adalah dua protokol yang sangat penting, ia dinamakan sempena mereka.

Mari terangkan perbezaan antara protokol TCP dan protokol UDP:

TCP (Protokol Kawalan Penghantaran, Protokol Kawalan Penghantaran) ialah protokol berorientasikan sambungan, iaitu apabila menghantar dan menerima wang data , kedua-duanya perlu mewujudkan pautan yang boleh dipercayai dengan pihak lain Ini juga merupakan jabat tangan tiga hala dan TCP gelombang empat hala yang sering ditanya dalam temu bual! Tiga jabat tangan: Apabila membuat sambungan TCP, pelanggan dan pelayan perlu menghantar sejumlah 3 paket untuk mengesahkan penubuhan sambungan. Dalam pengaturcaraan Socket, proses ini dicetuskan oleh pelanggan yang melaksanakan sambung Carta alir khusus adalah seperti berikut:

4.png

  • Jabatan tangan pertama: Pelanggan menetapkan bendera SYN kepada 1, menjana nilai seq=J secara rawak dan menghantar paket data ke Pelayan. Klien memasuki keadaan SYN_SENT dan menunggu pengesahan daripada Pelayan.
  • Jabatan tangan kedua: Selepas menerima paket data, Pelayan mengetahui bahawa Pelanggan meminta untuk mewujudkan sambungan melalui bit bendera SYN=1, dan Pelayan menetapkan bit bendera Kedua-dua SYN dan ACK ditetapkan kepada 1, ack=J+1, nilai seq=K dijana secara rawak, dan paket data dihantar kepada Pelanggan untuk mengesahkan permintaan sambungan. , Pelayan memasuki keadaan SYN_RCVD.
  • Jabatan tangan ketiga: Selepas Pelanggan menerima pengesahan, ia menyemak sama ada ack adalah J+1 dan sama ada ACK ialah 1. Jika ia betul, ia akan menetapkan bendera ACK Tetapkan kepada 1, ack=K+1, dan hantar paket data ke pelayan Pelayan menyemak sama ada ack ialah K+1 dan sama ada ACK ialah 1. Jika ia betul, Sambungan diwujudkan dengan jayanya, Klien dan Pelayan memasuki keadaan ESTABLISHED, lengkapkan jabat tangan tiga hala, dan kemudian Klien dan Pelayan boleh Pemindahan data bermula.

Lambai empat kali: Menamatkan sambungan TCP bermakna apabila sambungan TCP diputuskan, pelanggan dan pelayan perlu menghantar sejumlah 4 paket untuk mengesahkan pemutusan sambungan. Dalam pengaturcaraan Socket, proses ini dicetuskan oleh sama ada klien atau pelayan yang melaksanakan tutup Carta alir khusus adalah seperti berikut:

5.png

  • Wave kali pertama. : Klien menghantar FIN untuk menutup pemindahan data dari Klien ke Pelayan, dan Klien masuk Status FIN_WAIT_1
  • Melambai untuk kali kedua: Selepas menerima FIN, Pelayan menghantar ACK kepada Pelanggan, dan nombor turutan pengesahan ialah nombor urutan yang diterima + 1 (sama seperti SYN , Satu FIN menduduki satu nombor urutan), dan Pelayan memasuki keadaan CLOSE_WAIT.
  • Gelombang ketiga: Pelayan menghantar FIN untuk menutup penghantaran data dari Pelayan kepada Pelanggan dan Pelayan memasuki LAST_ACK negeri.
  • Gelombang keempat: Selepas Klien menerima FIN, Klien memasuki keadaan TIME_WAIT, kemudian menghantar ACK ke Pelayan, mengesahkan bahawa nombor jujukan ialah nombor jujukan yang diterima + 1 , dan Pelayan memasuki keadaan TERTUTUP, lengkapkan Empat gelombang. Di samping itu, ia juga mungkin berlaku apabila rakan sekerja memulakan penutupan aktif:

6.png

Satu lagi soalan lazim mungkin ialah: Mengapa jabat tangan tiga hala untuk mewujudkan sambungan, tetapi bukan jabat tangan tiga hala untuk menutup sambungan Adakah empat gelombang? Jawapan: Kerana pelayan berada dalam keadaan LISTEN dan selepas menerima mesej SYN untuk mewujudkan permintaan sambungan, ia meletakkan ACK dan SYN dalam satu mesej. Dihantar kepada pelanggan. Apabila menutup sambungan, apabila menerima mesej FIN pihak lain, ia hanya bermakna pihak lain tidak lagi menghantar data tetapi masih Jika anda boleh menerima data, pihak anda mungkin tidak menghantar semua data kepada pihak lain, jadi anda boleh menutupnya dengan segera, atau anda boleh menghantar beberapa Selepas menghantar data kepada pihak lain, hantar mesej FIN kepada pihak lain untuk menyatakan persetujuan untuk menutup sambungan sekarang Oleh itu, ACK dan FIN sendiri secara amnya Hantar secara berasingan.


Penjelasan terperinci protokol UDP:

UDP(User Datagram Protocol) User Datagram Protocol, protokol bukan sambungan, sumber dan terminal tidak berkomunikasi sebelum menghantar data. Sambungan diwujudkan dan apabila ia ingin dihantar, ia hanya mengambil data dari aplikasi dan membuangnya ke rangkaian secepat mungkin. Pada penghujung penghantaran, kelajuan UDP menghantar data hanya dihadkan oleh kelajuan aplikasi menjana data, keupayaan komputer dan lebar jalur penghantaran. Had; pada bahagian penerima, UDP meletakkan setiap segmen mesej dalam baris gilir, dan aplikasi membaca satu segmen mesej daripada baris gilir pada satu masa. Berbanding dengan TCP, tidak perlu mewujudkan pautan, strukturnya mudah, ketepatannya tidak dapat dijamin, dan kehilangan paket adalah mudah

- Kandungan di atas sebahagiannya dipetik daripada:

TCP/IP jabat tangan tiga hala dan Wave empat kali

Perbezaan antara TCP dan UDP (pemindahan)


4. Beberapa kelas utama yang disediakan untuk rangkaian dalam Java:

Untuk tahap komunikasi rangkaian yang berbeza, Java menyediakan kami dengan empat kategori utama fungsi rangkaian:

  • InetAddress: Digunakan untuk mengenal pasti sumber perkakasan pada rangkaian
  • URL: Pencari sumber seragam, anda boleh terus membaca atau menulis data pada rangkaian melalui URL
  • Soket dan ServerSocket: Kelas berkaitan soket
  • Datagram yang menggunakan protokol TCP untuk melaksanakan komunikasi rangkaian: Gunakan protokol UDP untuk menyimpan data dalam datagram dan berkomunikasi melalui rangkaian

Dalam bahagian ini kami hanya memperkenalkan dua kelas pertama, Socket dan Datagram, dan kemudian menerangkannya dalam bab TCP dan UDP!

~Contoh penggunaan InetAddress:

Kod sampel:

public class InetAddressTest {
	public static void main(String[] args) throws Exception{
		//获取本机InetAddress的实例:
		InetAddress address = InetAddress.getLocalHost();
		System.out.println("本机名:" + address.getHostName());
		System.out.println("IP地址:" + address.getHostAddress());
		byte[] bytes = address.getAddress();
		System.out.println("字节数组形式的IP地址:" + Arrays.toString(bytes));
		System.out.println("直接输出InetAddress对象:" + address);
	}
}

Graf hasil berjalan:

7.png

~URL: Ini tidak perlu diperkatakan jika anda terlupa, anda boleh membaca penjelasan protokol HTTP dalam mesyuarat sebelumnya~


Ringkasan bahagian ini:

Bahagian ini mungkin kelihatan hebat, tetapi tidak mengapa jika anda tidak memahaminya lapisan model tujuh lapisan dipanggil Untuk apa, ia mungkin digunakan? Terdapat jabat tangan tiga hala TCP dan empat gelombang, dan itu sahaja! Sudah tentu, ini hanya untuk Menghadapi temu bual~ Bagaimana kita boleh bergelut dengan ini dalam perkembangan sebenar... Just Socket, kan~ Nah, kita akan mula belajar di bahagian seterusnya Komunikasi soket dalam Android~Terima kasih~