Misteri Utama Pakej Rangkaian Broker TCP Sambungan: Demystified Keperluan untuk Triple Handshake

Persediaan Sambungan TCP
Apabila kami melayari web, menghantar e -mel, atau bermain permainan dalam talian, kami sering tidak memikirkan sambungan rangkaian kompleks di belakangnya. Walau bagaimanapun, ia adalah langkah -langkah yang seolah -olah kecil yang memastikan komunikasi yang stabil antara kami dan pelayan. Salah satu langkah yang paling penting ialah persediaan sambungan TCP, dan terasnya adalah jabat tangan tiga hala.

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

Proses jabat tangan TCP dan peralihan negeri
TCP adalah protokol pengangkutan berorientasikan sambungan, yang memerlukan penubuhan sambungan sebelum penghantaran data. Proses penubuhan sambungan ini dilakukan oleh jabat tangan tiga hala.

 TCP Handshake tiga hala

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

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

 Packet Syn

Apabila pelanggan memulakan sambungan, ia menghasilkan nombor urutan awal rawak (client_isn) dan meletakkannya dalam bidang "urutan nombor" tajuk TCP. Pada masa yang sama, pelanggan menetapkan kedudukan bendera SYN kepada 1 untuk menunjukkan bahawa paket keluar adalah 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.

SYN+ACK Packet

Apabila pelayan menerima paket SYN dari klien, ia secara rawak memulakan nombor siri sendiri (server_isn) dan kemudian meletakkan nombor itu dalam bidang "nombor siri" header TCP. Seterusnya, pelayan memasuki klien_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 dihantar). Pada masa ini, pelayan berada dalam keadaan Syn-RCVD.

Paket ACK

Sebaik sahaja pelanggan menerima paket dari pelayan, ia perlu melakukan pengoptimuman berikut untuk bertindak balas kepada paket balasan akhir: Pertama, pelanggan menetapkan bit ACK tajuk TCP dari paket balasan kepada 1; Kedua, klien memasuki nilai server_isn + 1 dalam medan "Sahkan Jawapan Nombor"; Akhirnya, pelanggan menghantar paket ke pelayan. Paket ini boleh membawa data dari klien ke pelayan. Setelah selesai operasi ini, pelanggan akan memasuki negara yang ditubuhkan.

Sebaik sahaja pelayan menerima paket balasan dari klien, ia juga beralih ke keadaan yang ditubuhkan.

Seperti yang anda dapat lihat dari proses di atas, ketika 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 wawancara. Sebaik sahaja jabat tangan tiga hala selesai, kedua-dua pihak memasuki keadaan yang ditubuhkan, menunjukkan bahawa sambungan telah berjaya ditubuhkan, di mana klien dan pelayan boleh mula menghantar data kepada satu sama lain.

Mengapa tiga jabat tangan? Tidak dua kali, empat kali?
Jawapan umum ialah, "Kerana jabat tangan tiga arah menjamin keupayaan untuk menerima dan menghantar." Jawapan ini betul, tetapi hanya sebab permukaan, tidak mengemukakan sebab utama. Dalam berikut, saya akan menganalisis sebab -sebab jabat tangan tiga dari tiga aspek untuk memperdalam pemahaman kita tentang isu ini.

Jabat tangan tiga hala secara berkesan dapat mengelakkan permulaan hubungan berulang 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 membuang sumber.

Sebab 1: Elakkan pendua sejarah bergabung
Ringkasnya, sebab utama jabat tangan tiga hala adalah untuk mengelakkan kekeliruan yang disebabkan oleh permulaan 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 arah untuk mewujudkan sambungan.

Jabat tangan tiga hala mengelakkan sambungan pendua sejarah

Apabila pelanggan menghantar pelbagai paket penubuhan sambungan SYN berturut -turut, dalam situasi seperti kesesakan rangkaian, yang 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 atau tamat) mengikut konteksnya sendiri, dan kemudian menghantar paket RST ke pelayan untuk membatalkan sambungan.

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

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

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

Sebab 2: Menyegerakkan nombor urutan awal kedua -dua pihak
Kedua -dua belah protokol TCP mesti mengekalkan nombor urutan, yang merupakan faktor utama untuk memastikan penghantaran yang boleh dipercayai. Nombor urutan 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 urutan boleh mengenal pasti paket data yang telah diterima oleh pihak lain, yang membolehkan penghantaran data yang boleh dipercayai.

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

Segerakkan nombor siri awal kedua -dua pihak

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

Sebab 3: Elakkan membuang sumber
Sekiranya terdapat hanya "dua tangan", apabila permintaan Syn Client disekat dalam rangkaian, pelanggan tidak dapat menerima paket ACK yang dihantar oleh pelayan, jadi SYN akan menjadi kebencian. Walau bagaimanapun, kerana tidak ada jabat tangan ketiga, pelayan tidak dapat menentukan sama ada klien 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:

Sisa Sumber: Jika permintaan SYN pelanggan disekat, mengakibatkan penghantaran berulang pelbagai paket SYN, pelayan akan menubuhkan pelbagai sambungan tidak sah yang berlebihan setelah menerima permintaan. Ini membawa kepada pembaziran sumber pelayan yang tidak perlu.

Pengekalan Mesej: Oleh kerana kekurangan jabat tangan ketiga, pelayan tidak mempunyai cara untuk mengetahui sama ada pelanggan dengan betul menerima pengakuan ACK untuk menubuhkan sambungan. Akibatnya, jika mesej terjebak dalam rangkaian, pelanggan akan terus menghantar permintaan SYN berulang kali, menyebabkan pelayan sentiasa menubuhkan sambungan baru. Ini akan meningkatkan kesesakan rangkaian dan kelewatan dan memberi kesan negatif terhadap prestasi rangkaian keseluruhan.

Elakkan membuang 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, klien pertama menghantar satu paket dengan bendera SYN ke pelayan, menunjukkan bahawa ia mahu mewujudkan sambungan. Selepas menerima permintaan dari klien, pelayan menjawab paket dengan bendera SYN dan ACK kepada pelanggan, menunjukkan bahawa permintaan sambungan diterima, dan menghantar nombor urutan awalnya sendiri. Akhirnya, pelanggan menjawab dengan bendera ACK ke pelayan untuk menunjukkan bahawa sambungan telah berjaya ditubuhkan. Oleh itu, kedua -dua pihak berada dalam keadaan yang ditubuhkan dan boleh mula menghantar data kepada satu sama lain.

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


Masa Post: Jan-08-2025