Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Contoh analisis jabat tangan tiga hala TCP untuk mewujudkan pautan dan gelombang empat hala untuk memutuskan pautan

Contoh analisis jabat tangan tiga hala TCP untuk mewujudkan pautan dan gelombang empat hala untuk memutuskan pautan

WBOY
WBOYke hadapan
2023-05-11 22:34:24808semak imbas

Satu langkah pada satu masa.

Pertama, mari kita perkenalkan secara ringkas protokol TCP.

TCP (Transmission Control Protocol) ialah protokol lapisan pengangkutan berasaskan aliran bait yang berorientasikan sambungan, boleh dipercayai. Ia rumit, tetapi ia adalah kemahiran asas yang mesti diketahui oleh pengaturcara dan kakitangan operasi dan penyelenggaraan.

Berorientasikan objek - kedua-dua pihak perlu mewujudkan sambungan terlebih dahulu sebelum berkomunikasi Ini seperti membuat panggilan telefon dalam kehidupan sebenar.

Boleh Dipercayai - Terdapat banyak peraturan dalam protokol TCP untuk memastikan kebolehpercayaan pautan komunikasi, termasuk aplikasi pemisahan data, mekanisme penghantaran semula, pengepala dan pengesahan data, dan pengisihan data yang diterima lapisan aplikasi, dan hujung penerima akan membuang data pendua dan melaksanakan kawalan aliran.

Data TCP dikapsulkan dalam datagram IP dengan format berikut:

Contoh analisis jabat tangan tiga hala TCP untuk mewujudkan pautan dan gelombang empat hala untuk memutuskan pautan

Mengandungi: nombor port [16bit], nombor jujukan [32bit], offset [ 4bit], Terpelihara [6bit], bendera [6bit], saiz tetingkap (tetingkap) [16bit], checksum [16bit], penunjuk kecemasan [16bit], pilihan TCP

Perkara yang perlu diperhatikan di sini:

  • Paket TCP tidak mempunyai alamat IP Itu adalah masalah pada lapisan IP, tetapi terdapat port sumber dan port destinasi.

  • Sambungan TCP memerlukan empat tupel untuk mewakili sambungan yang sama (src_ip, src_port, dst_ip, dst_port Untuk tepatnya, ia ialah lima tuple, dan satu ialah protokol). Tetapi kerana kita hanya bercakap tentang protokol TCP di sini, saya hanya bercakap tentang empat kali ganda di sini.

  • Nombor Jujukan ialah nombor jujukan paket digunakan untuk menyelesaikan masalah penyusunan semula paket rangkaian.

  • Nombor Pengakuan ialah ACK - digunakan untuk mengesahkan penerimaan, digunakan untuk menyelesaikan masalah tidak kehilangan paket.

  • Tetingkap juga dipanggil Advertised-Window, iaitu tetingkap gelongsor (Sliding Window) yang terkenal, digunakan untuk menyelesaikan kawalan aliran.

  • Bendera TCP, iaitu jenis paket, digunakan terutamanya untuk mengawal mesin keadaan TCP .

    URG: Penunjuk kecemasan adalah sah

    ACK: Nombor urutan pengesahan adalah sah

    PSH: Penerima harus menyerahkan segmen ini ke lapisan aplikasi secepat mungkin

    RST : Membina semula sambungan

    SYN: Nombor jujukan penyegerakan, digunakan untuk memulakan sambungan

    FIN: Pemula menyelesaikan tugas penghantaran (tutup secara aktif)

Jabat tangan tiga hala diwujudkan Pautan

1 Penghujung permintaan (klien) menghantar SYN=1 untuk menunjukkan port pelayan yang ingin disambungkan oleh pelanggan menetapkan bahawa data tidak boleh dibawa apabila SYN=1, tetapi nombor jujukan digunakan, jadi Isytiharkan nombor jujukan awal anda seq sebagai nombor rawak dengan andaian seq=x.

2 Pelayan mengesahkan segmen mesej pelanggan dan menetapkan nombor urutan pengesahan kepada ACK=x+1. Pada masa yang sama, ia juga meminta untuk menyambung kepada pelanggan, menghantar SYN=1, dan menghantar nombor seq awal dengan andaian seq=y.

3 Pelanggan mengesahkan segmen mesej pelayan, menghantar nombor urutan pengesahan dan bersetuju untuk mewujudkan sambungan dengan pelayan ACK=y+1.

Tiga segmen mesej ini melengkapkan penubuhan sambungan. Proses ini juga dipanggil jabat tangan tiga hala

Melambai empat kali untuk memutuskan pautan

1 (boleh menjadi pelanggan atau pelayan), tetapkan Nombor Urutan dan Nombor Pengakuan , hantar segmen FIN ke hos 2 pada masa ini, hos 1 memasuki keadaan FIN_WAIT_1 ini bermakna hos 1 tidak mempunyai data untuk dihantar ke hos 2; dihantar oleh 1 mengembalikan segmen mesej ACK ke hos 1. Nombor Pengakuan ialah Nombor Urutan tambah 1; hos 1 memasuki keadaan FIN_WAIT_2 memberitahu hos 1 bahawa saya tiada data untuk dihantar dan boleh menutup sambungan >

3. Hos 2 menghantar segmen FIN ke hos 1, meminta untuk menutup sambungan, dan hos 2 memasuki keadaan CLOSE_WAIT;

4 menerima FIN yang dihantar oleh hos 2 segmen ACK ke Hos 2, dan kemudian Hos 1 memasuki keadaan TIME_WAIT selepas Hos 2 menerima segmen ACK daripada Hos 1, ia menutup sambungan pada masa ini, Hos 1 masih tidak menerima balasan selepas menunggu 2MSL , ia membuktikan bahawa bahagian pelayan telah ditutup seperti biasa, maka hos 1 juga boleh menutup sambungan.

Pada ketika ini, empat pemisahan TCP telah diselesaikan dengan gembira.

Ikon untuk mewujudkan dan memutuskan pautan adalah seperti berikut:

Mari kita pecahkan mengapa ia adalah jabat tangan tiga hala? Contoh analisis jabat tangan tiga hala TCP untuk mewujudkan pautan dan gelombang empat hala untuk memutuskan pautan

Untuk mengelakkan segmen permintaan pautan yang tidak sah daripada dihantar secara tiba-tiba ke pelayan, menyebabkan ralat. Beri buah berangan.

Segmen permintaan sambungan pertama yang dihantar oleh klien tidak hilang, tetapi kekal di nod rangkaian tertentu untuk masa yang lama, supaya ia ditangguhkan sehingga masa tertentu selepas sambungan dikeluarkan sebelum sampai ke pelayan. Ternyata ini adalah segmen mesej yang telah lama tamat tempoh. Walau bagaimanapun, selepas pelayan menerima segmen permintaan sambungan yang tidak sah ini, ia tersalah anggap bahawa ia adalah permintaan sambungan baharu yang dihantar oleh pelanggan sekali lagi. Jadi ia menghantar segmen mesej pengesahan kepada pelanggan dan bersetuju untuk mewujudkan sambungan. Dengan mengandaikan bahawa "jabat tangan tiga hala" tidak digunakan, selagi pelayan menghantar pengesahan, sambungan baharu diwujudkan. Oleh kerana pelanggan tidak mengeluarkan permintaan untuk mewujudkan sambungan, ia tidak akan memberi perhatian kepada pengesahan pelayan dan tidak akan menghantar data ke pelayan. Tetapi pelayan berpendapat bahawa sambungan pengangkutan baharu telah diwujudkan dan telah menunggu pelanggan menghantar data. Dengan cara ini, banyak sumber pelayan dibazirkan. Kaedah "jabat tangan tiga hala" boleh mengelakkan fenomena di atas daripada berlaku. Sebagai contoh, dalam situasi tadi, pelanggan tidak akan menghantar pengesahan kepada pengesahan pelayan. Oleh kerana pelayan tidak dapat menerima pengesahan, ia mengetahui bahawa pelanggan tidak meminta untuk membuat sambungan. "

Ini sangat jelas, menghalang pelayan daripada membazir sumber dengan menunggu selama-lamanya.

Jadi mengapa terdapat empat gelombang?

Protokol TCP ialah berorientasikan A bersambung, boleh dipercayai , protokol komunikasi lapisan pengangkutan berasaskan aliran bait TCP berada dalam mod dupleks penuh, yang bermaksud bahawa apabila hos 1 menghantar segmen FIN, ia hanya bermakna hos 1 tidak mempunyai data untuk dihantar telah dihantar; walau bagaimanapun, hos 1 masih boleh menerima data daripada hos 2 pada masa ini apabila hos 2 mengembalikan segmen mesej ACK, ini bermakna ia sudah mengetahui bahawa hos 1 tidak mempunyai data untuk dihantar Hos 1; apabila Hos 2 juga menghantar segmen FIN, ini bermakna Hos 2 tidak mempunyai data untuk dihantar, dan ia akan memberitahu Hos 1 bahawa saya tidak mempunyai data untuk dihantar , maka satu sama lain akan dengan senang hati menamatkan sambungan TCP ingin memahami dengan betul prinsip empat perpisahan, anda perlu memahami perubahan keadaan semasa empat perpisahan

Atas ialah kandungan terperinci Contoh analisis jabat tangan tiga hala TCP untuk mewujudkan pautan dan gelombang empat hala untuk memutuskan pautan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam