Misteri Utama Sambungan TCP Broker Paket Rangkaian: Menjelaskan keperluan untuk Triple Handshake

Persediaan Sambungan TCP
Apabila kami menyemak imbas web, menghantar e-mel atau bermain permainan dalam talian, kami sering tidak memikirkan sambungan rangkaian kompleks di belakangnya. Walau bagaimanapun, langkah-langkah yang kelihatan kecil inilah yang memastikan komunikasi yang stabil antara kami dan pelayan. Salah satu langkah yang paling penting ialah persediaan sambungan TCP, dan teras ini ialah jabat tangan tiga hala.

Artikel ini akan membincangkan prinsip, proses dan kepentingan jabat tangan tiga hala secara terperinci. Langkah demi langkah, kami akan menerangkan sebab jabat tangan tiga hala diperlukan, cara ia memastikan kestabilan dan kebolehpercayaan sambungan, dan betapa pentingnya untuk pemindahan data. Dengan pemahaman yang lebih mendalam tentang jabat tangan tiga hala, kami akan memperoleh pemahaman yang lebih baik tentang mekanisme asas komunikasi rangkaian dan pandangan yang lebih jelas tentang kebolehpercayaan sambungan TCP.

Proses Jabat Tangan Tiga Hala TCP dan Peralihan Keadaan
TCP ialah protokol pengangkutan berorientasikan sambungan, yang memerlukan penubuhan sambungan sebelum penghantaran data. Proses penubuhan sambungan ini dilakukan dengan berjabat tangan tiga hala.

 TCP berjabat tangan tiga hala

Mari kita lihat lebih dekat pada paket TCP yang dihantar dalam setiap sambungan.

Pada mulanya, kedua-dua klien dan pelayan TUTUP. Pertama, pelayan secara aktif mendengar pada port dan berada dalam keadaan LISTEN, yang bermaksud bahawa pelayan mesti dimulakan. Seterusnya, pelanggan bersedia untuk mula mengakses halaman web. Ia perlu mewujudkan sambungan dengan pelayan. Format paket sambungan pertama adalah seperti berikut:

 Paket SYN

Apabila pelanggan memulakan sambungan, ia menjana nombor jujukan awal rawak (client_isn) dan meletakkannya dalam medan "Nombor jujukan" pengepala TCP. Pada masa yang sama, pelanggan menetapkan kedudukan bendera SYN kepada 1 untuk menunjukkan bahawa paket keluar ialah paket SYN. Pelanggan menunjukkan bahawa ia ingin mewujudkan sambungan dengan pelayan dengan menghantar paket SYN pertama ke pelayan. Paket ini tidak mengandungi data lapisan aplikasi (iaitu, data dihantar). Pada ketika ini, status pelanggan ditandakan sebagai SYN-SENT.

Paket SYN+ACK

Apabila pelayan menerima paket SYN daripada klien, ia secara rawak memulakan nombor sirinya sendiri (server_isn) dan kemudian meletakkan nombor itu dalam medan "Nombor siri" pengepala TCP. Seterusnya, pelayan memasukkan client_isn + 1 dalam medan "Nombor pengakuan" dan menetapkan kedua-dua bit SYN dan ACK kepada 1. Akhirnya, pelayan menghantar paket kepada klien, yang tidak mengandungi data lapisan aplikasi (dan tiada data untuk pelayan untuk menghantar). Pada masa ini, pelayan berada dalam keadaan SYN-RCVD.

Paket ACK

Sebaik sahaja pelanggan menerima paket daripada pelayan, ia perlu melakukan pengoptimuman berikut untuk bertindak balas kepada paket balasan akhir: Pertama, pelanggan menetapkan bit ACK pengepala TCP paket balasan kepada 1; Kedua, pelanggan memasukkan nilai server_isn + 1 dalam medan "Sahkan nombor jawapan"; Akhirnya, pelanggan menghantar paket ke pelayan. Paket ini boleh membawa data dari klien ke pelayan. Setelah selesai operasi ini, pelanggan akan memasuki keadaan ESTABLISHED.

Sebaik sahaja pelayan menerima paket balasan daripada klien, ia juga bertukar kepada keadaan ESTABLISHED.

Seperti yang anda boleh lihat daripada proses di atas, apabila melakukan jabat tangan tiga hala, jabat tangan ketiga dibenarkan untuk membawa data, tetapi dua jabat tangan pertama tidak. Ini adalah soalan yang sering ditanya dalam temuduga. Setelah jabat tangan tiga hala selesai, kedua-dua pihak memasuki keadaan ESTABLISHED, menunjukkan bahawa sambungan telah berjaya diwujudkan, di mana klien dan pelayan boleh mula menghantar data antara satu sama lain.

Mengapa tiga jabat tangan? Bukan dua kali, empat kali?
Jawapan biasa ialah, "Kerana jabat tangan tiga hala menjamin keupayaan untuk menerima dan menghantar." Jawapan ini betul, tetapi ia hanya alasan permukaan, tidak mengemukakan alasan utama. Dalam perkara berikut, saya akan menganalisis sebab jabat tangan tiga kali ganda dari tiga aspek untuk mendalami pemahaman kita tentang isu ini.

Jabat tangan tiga hala boleh mengelakkan permulaan sambungan berulang secara sejarah (sebab utama)
Jabat tangan tiga hala menjamin bahawa kedua-dua pihak telah menerima nombor urutan awal yang boleh dipercayai.
Jabat tangan tiga hala mengelakkan pembaziran sumber.

Sebab 1: Elakkan Gabungan Pendua Bersejarah
Ringkasnya, sebab utama jabat tangan tiga hala adalah untuk mengelakkan kekeliruan yang disebabkan oleh pemulaan sambungan pendua lama. Dalam persekitaran rangkaian yang kompleks, penghantaran paket data tidak selalu dihantar ke hos destinasi mengikut masa yang ditentukan, dan paket data lama mungkin tiba di hos destinasi terlebih dahulu kerana kesesakan rangkaian dan sebab-sebab lain. Untuk mengelakkan ini, TCP menggunakan jabat tangan tiga hala untuk mewujudkan sambungan.

jabat tangan tiga hala mengelakkan sambungan pendua sejarah

Apabila pelanggan menghantar beberapa paket penubuhan sambungan SYN secara berturut-turut, dalam situasi seperti kesesakan rangkaian, perkara berikut mungkin berlaku:

1- Paket SYN lama tiba di pelayan sebelum paket SYN terkini.
2- Pelayan akan membalas paket SYN + ACK kepada klien selepas menerima paket SYN lama.
3- Apabila pelanggan menerima paket SYN + ACK, ia menentukan bahawa sambungan adalah sambungan sejarah (nombor urutan tamat tempoh atau tamat masa) mengikut konteksnya sendiri, dan kemudian menghantar paket RST ke pelayan untuk membatalkan sambungan.

Dengan sambungan dua jabat tangan, tiada cara untuk menentukan sama ada sambungan semasa ialah sambungan sejarah. Jabat tangan tiga hala membolehkan pelanggan menentukan sama ada sambungan semasa ialah sambungan sejarah berdasarkan konteks apabila ia bersedia untuk menghantar paket ketiga:

1- Jika ia adalah sambungan sejarah (nombor urutan tamat tempoh atau tamat masa), paket yang dihantar oleh jabat tangan ketiga ialah paket RST untuk membatalkan sambungan sejarah.
2- Jika ia bukan sambungan sejarah, paket yang dihantar untuk kali ketiga ialah paket ACK, dan kedua-dua pihak yang berkomunikasi berjaya mewujudkan sambungan.

Oleh itu, sebab utama TCP menggunakan jabat tangan tiga hala ialah ia memulakan sambungan untuk menghalang sambungan sejarah.

Sebab 2: Untuk menyegerakkan nombor jujukan awal kedua-dua pihak
Kedua-dua belah protokol TCP mesti mengekalkan nombor urutan, yang merupakan faktor utama untuk memastikan penghantaran yang boleh dipercayai. Nombor jujukan memainkan peranan penting dalam sambungan TCP. Mereka melakukan perkara berikut:

Penerima boleh menghapuskan data pendua dan memastikan ketepatan data.

Penerima boleh menerima paket mengikut urutan nombor urutan untuk memastikan integriti data.

● Nombor jujukan boleh mengenal pasti paket data yang telah diterima oleh pihak lain, membolehkan penghantaran data yang boleh dipercayai.

Oleh itu, apabila membuat sambungan TCP, pelanggan menghantar paket SYN dengan nombor jujukan awal dan memerlukan pelayan membalas dengan paket ACK yang menunjukkan penerimaan paket SYN pelanggan berjaya. Kemudian, pelayan menghantar paket SYN dengan nombor jujukan awal kepada klien dan menunggu klien membalas, sekali dan untuk semua, untuk memastikan nombor jujukan awal disegerakkan dengan pasti.

Segerakkan nombor siri awal kedua-dua pihak

Walaupun jabat tangan empat hala juga mungkin untuk menyegerakkan nombor jujukan awal kedua-dua pihak dengan pasti, langkah kedua dan ketiga boleh digabungkan menjadi satu langkah, menghasilkan jabat tangan tiga hala. Walau bagaimanapun, kedua-dua jabat tangan hanya boleh menjamin bahawa nombor urutan awal satu pihak berjaya diterima oleh pihak yang satu lagi, tetapi tidak ada jaminan bahawa nombor urutan awal kedua-dua pihak boleh disahkan. Oleh itu, jabat tangan tiga hala adalah pilihan terbaik untuk memastikan kestabilan dan kebolehpercayaan sambungan TCP.

Sebab 3: Elakkan Pembaziran Sumber
Jika terdapat hanya "two-handshake", apabila permintaan SYN pelanggan disekat dalam rangkaian, pelanggan tidak boleh menerima paket ACK yang dihantar oleh pelayan, jadi SYN akan dihantar semula. Walau bagaimanapun, kerana tiada jabat tangan ketiga, pelayan tidak dapat menentukan sama ada pelanggan menerima pengakuan ACK untuk mewujudkan sambungan. Oleh itu, pelayan hanya boleh secara proaktif mewujudkan sambungan selepas menerima setiap permintaan SYN. Ini membawa kepada perkara berikut:

Pembaziran sumber: Jika permintaan SYN pelanggan disekat, mengakibatkan penghantaran berulang bagi berbilang paket SYN, pelayan akan mewujudkan berbilang sambungan tidak sah berlebihan selepas menerima permintaan. Ini membawa kepada pembaziran sumber pelayan yang tidak perlu.

Pengekalan mesej: Disebabkan kekurangan jabat tangan ketiga, pelayan tidak mempunyai cara untuk mengetahui sama ada klien menerima pengakuan ACK dengan betul untuk mewujudkan sambungan. Akibatnya, jika mesej tersekat dalam rangkaian, pelanggan akan terus menghantar permintaan SYN berulang kali, menyebabkan pelayan sentiasa mewujudkan sambungan baharu. Ini akan meningkatkan kesesakan dan kelewatan rangkaian serta menjejaskan prestasi rangkaian keseluruhan secara negatif.

Elakkan pembaziran sumber

Oleh itu, untuk memastikan kestabilan dan kebolehpercayaan sambungan rangkaian, TCP menggunakan jabat tangan tiga hala untuk mewujudkan sambungan untuk mengelakkan berlakunya masalah ini.

Ringkasan
TheBroker Paket RangkaianPenubuhan sambungan TCP dilakukan dengan jabat tangan tiga hala. Semasa jabat tangan tiga hala, pelanggan mula-mula menghantar satu paket dengan bendera SYN ke pelayan, menunjukkan bahawa ia ingin mewujudkan sambungan. Selepas menerima permintaan daripada klien, pelayan membalas paket dengan bendera SYN dan ACK kepada klien, menunjukkan bahawa permintaan sambungan diterima, dan menghantar nombor jujukan awalnya sendiri. Akhirnya, pelanggan membalas dengan bendera ACK ke pelayan untuk menunjukkan bahawa sambungan telah berjaya diwujudkan. Oleh itu, kedua-dua pihak berada dalam keadaan ESTABLISHED dan boleh mula menghantar data antara satu sama lain.

Secara umumnya, proses jabat tangan tiga hala untuk penubuhan sambungan TCP direka untuk memastikan kestabilan dan kebolehpercayaan sambungan, mengelakkan kekeliruan dan pembaziran sumber melalui sambungan sejarah, dan memastikan kedua-dua pihak dapat menerima dan menghantar data.


Masa siaran: Jan-08-2025