ការដំឡើងការតភ្ជាប់ TCP
នៅពេលដែលយើងរុករកគេហទំព័រ ផ្ញើអ៊ីមែល ឬលេងហ្គេមអនឡាញ ជារឿយៗយើងមិនគិតពីការតភ្ជាប់បណ្តាញដ៏ស្មុគស្មាញនៅពីក្រោយវានោះទេ។ ទោះយ៉ាងណាក៏ដោយ វាជាជំហានតូចតាចទាំងនេះ ដែលធានាបាននូវការទំនាក់ទំនងប្រកបដោយស្ថិរភាពរវាងយើង និងម៉ាស៊ីនមេ។ ជំហានដ៏សំខាន់បំផុតមួយគឺការដំឡើងការតភ្ជាប់ TCP ហើយស្នូលនៃការចាប់ដៃបីផ្លូវ។
អត្ថបទនេះនឹងពិភាក្សាអំពីគោលការណ៍ ដំណើរការ និងសារៈសំខាន់នៃការចាប់ដៃទាំងបីយ៉ាងលម្អិត។ មួយជំហានម្តងៗ យើងនឹងពន្យល់ពីមូលហេតុដែលការចាប់ដៃបីផ្លូវគឺចាំបាច់ របៀបដែលវាធានានូវស្ថេរភាពនៃការតភ្ជាប់ និងភាពជឿជាក់ និងថាតើវាមានសារៈសំខាន់យ៉ាងណាសម្រាប់ការផ្ទេរទិន្នន័យ។ ជាមួយនឹងការយល់ដឹងកាន់តែស៊ីជម្រៅអំពីការចាប់ដៃបីផ្លូវ យើងនឹងទទួលបាននូវការយល់ដឹងកាន់តែប្រសើរឡើងអំពីយន្តការមូលដ្ឋាននៃការទំនាក់ទំនងបណ្តាញ និងទិដ្ឋភាពកាន់តែច្បាស់អំពីភាពជឿជាក់នៃការតភ្ជាប់ TCP ។
ដំណើរការចាប់ដៃបីផ្លូវ TCP និងការផ្លាស់ប្តូររដ្ឋ
TCP គឺជាពិធីការដឹកជញ្ជូនដែលផ្តោតលើការតភ្ជាប់ ដែលតម្រូវឱ្យមានការបង្កើតការតភ្ជាប់មុនពេលបញ្ជូនទិន្នន័យ។ ដំណើរការបង្កើតការតភ្ជាប់នេះធ្វើឡើងដោយការចាប់ដៃបីផ្លូវ។
ចូរយើងពិនិត្យមើលឱ្យកាន់តែដិតដល់នូវកញ្ចប់ព័ត៌មាន TCP ដែលត្រូវបានផ្ញើក្នុងការតភ្ជាប់នីមួយៗ។
ដំបូង ទាំងម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេត្រូវបានបិទ។ ទីមួយ ម៉ាស៊ីនមេស្តាប់យ៉ាងសកម្មនៅលើច្រកមួយ ហើយស្ថិតក្នុងស្ថានភាពស្តាប់ ដែលមានន័យថាម៉ាស៊ីនមេត្រូវតែចាប់ផ្តើម។ បន្ទាប់មក អតិថិជនត្រៀមខ្លួនរួចរាល់ហើយដើម្បីចាប់ផ្តើមចូលប្រើគេហទំព័រ។ វាត្រូវបង្កើតការតភ្ជាប់ជាមួយម៉ាស៊ីនមេ។ ទម្រង់នៃកញ្ចប់តភ្ជាប់ដំបូងមានដូចខាងក្រោម៖
នៅពេលម៉ាស៊ីនភ្ញៀវចាប់ផ្តើមការតភ្ជាប់ វាបង្កើតលេខលំដាប់ដំបូងចៃដន្យ (client_isn) ហើយដាក់វានៅក្នុងវាល "លេខលំដាប់" នៃបឋមកថា TCP ។ ក្នុងពេលជាមួយគ្នានោះ អតិថិជនកំណត់ទីតាំងទង់ SYN ទៅ 1 ដើម្បីបង្ហាញថាកញ្ចប់ព័ត៌មានចេញគឺជាកញ្ចប់ព័ត៌មាន SYN ។ ម៉ាស៊ីនភ្ញៀវបង្ហាញថាខ្លួនចង់បង្កើតការតភ្ជាប់ជាមួយម៉ាស៊ីនមេដោយផ្ញើកញ្ចប់ SYN ដំបូងទៅម៉ាស៊ីនមេ។ កញ្ចប់ព័ត៌មាននេះមិនមានទិន្នន័យស្រទាប់កម្មវិធីទេ (នោះគឺទិន្នន័យដែលបានផ្ញើ)។ នៅចំណុចនេះ ស្ថានភាពរបស់អតិថិជនត្រូវបានសម្គាល់ថា SYN-SENT ។
នៅពេលដែលម៉ាស៊ីនមេទទួលបានកញ្ចប់ព័ត៌មាន SYN ពីម៉ាស៊ីនភ្ញៀវ វាចាប់ផ្តើមដោយចៃដន្យនូវលេខស៊េរីផ្ទាល់ខ្លួន (server_isn) ហើយបន្ទាប់មកដាក់លេខនោះនៅក្នុងវាល "លេខស៊េរី" នៃបឋមកថា TCP ។ បន្ទាប់មក ម៉ាស៊ីនមេចូល client_isn + 1 ក្នុងវាល "លេខទទួលស្គាល់" ហើយកំណត់ទាំង SYN និង ACK bits ទៅជា 1។ ចុងក្រោយ ម៉ាស៊ីនមេបញ្ជូនកញ្ចប់ព័ត៌មានទៅម៉ាស៊ីនភ្ញៀវ ដែលមិនមានទិន្នន័យស្រទាប់កម្មវិធី (និងគ្មានទិន្នន័យសម្រាប់ម៉ាស៊ីនមេ ដើម្បីផ្ញើ) ។ នៅពេលនេះ ម៉ាស៊ីនមេស្ថិតនៅក្នុងស្ថានភាព SYN-RCVD ។
នៅពេលដែលម៉ាស៊ីនភ្ញៀវទទួលបានកញ្ចប់ព័ត៌មានពីម៉ាស៊ីនមេ វាចាំបាច់ត្រូវអនុវត្តការបង្កើនប្រសិទ្ធភាពខាងក្រោមដើម្បីឆ្លើយតបទៅនឹងកញ្ចប់ឆ្លើយតបចុងក្រោយ៖ ដំបូង អតិថិជនកំណត់ ACK ប៊ីតនៃបឋមកថា TCP នៃកញ្ចប់ឆ្លើយតបទៅ 1; ទីពីរ អតិថិជនបញ្ចូលតម្លៃ server_isn + 1 ក្នុងវាល "បញ្ជាក់លេខចម្លើយ"; ចុងក្រោយ អតិថិជនផ្ញើកញ្ចប់ព័ត៌មានទៅម៉ាស៊ីនមេ។ កញ្ចប់ព័ត៌មាននេះអាចផ្ទុកទិន្នន័យពីម៉ាស៊ីនភ្ញៀវទៅកាន់ម៉ាស៊ីនមេ។ នៅពេលបញ្ចប់ប្រតិបត្តិការទាំងនេះ អតិថិជននឹងចូលទៅក្នុងស្ថានភាព ESTABLISHED ។
នៅពេលដែលម៉ាស៊ីនមេទទួលបានកញ្ចប់ឆ្លើយតបពីអតិថិជន វាក៏ប្តូរទៅស្ថានភាព ESTABLISHED ផងដែរ។
ដូចដែលអ្នកអាចមើលឃើញពីដំណើរការខាងលើ នៅពេលអនុវត្តការចាប់ដៃបីផ្លូវ ការចាប់ដៃទីបីត្រូវបានអនុញ្ញាតឱ្យផ្ទុកទិន្នន័យ ប៉ុន្តែការចាប់ដៃពីរដំបូងគឺមិនមានទេ។ នេះជាសំណួរដែលគេសួរញឹកញាប់ក្នុងកិច្ចសម្ភាសន៍។ នៅពេលដែលការចាប់ដៃបីផ្លូវត្រូវបានបញ្ចប់ ភាគីទាំងពីរចូលទៅក្នុងស្ថានភាព ESTABLISHED ដែលបង្ហាញថាការតភ្ជាប់ត្រូវបានបង្កើតឡើងដោយជោគជ័យ នៅចំណុចនោះម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេអាចចាប់ផ្តើមបញ្ជូនទិន្នន័យទៅគ្នាទៅវិញទៅមក។
ហេតុអ្វីបានជាចាប់ដៃបី? មិនមែនពីរដង បួនដងទេ?
ចម្លើយទូទៅគឺ "ព្រោះការចាប់ដៃបីផ្លូវធានានូវលទ្ធភាពទទួលនិងផ្ញើ"។ ចម្លើយនេះគឺត្រឹមត្រូវ ប៉ុន្តែវាគ្រាន់តែជាហេតុផលផ្ទៃខាងមុខប៉ុណ្ណោះ មិនបានលើកឡើងពីមូលហេតុចម្បងនោះទេ។ ខាងក្រោមនេះ ខ្ញុំនឹងធ្វើការវិភាគអំពីហេតុផលនៃការចាប់ដៃបីដងពីទិដ្ឋភាពបី ដើម្បីពង្រឹងការយល់ដឹងរបស់យើងអំពីបញ្ហានេះ។
ការចាប់ដៃទាំងបីយ៉ាងមានប្រសិទ្ធភាពអាចជៀសវាងការចាប់ផ្តើមនៃការតភ្ជាប់ម្តងហើយម្តងទៀតជាប្រវត្តិសាស្ត្រ (មូលហេតុចម្បង)
ការចាប់ដៃបីផ្លូវធានាថាភាគីទាំងពីរបានទទួលលេខលំដាប់ដំបូងដែលអាចទុកចិត្តបាន។
ការចាប់ដៃបីផ្លូវ ជៀសវាងការខ្ជះខ្ជាយធនធាន។
ហេតុផលទី 1: ជៀសវាងការភ្ជាប់គ្នាជាប្រវត្តិសាស្ត្រ
សរុបមក ហេតុផលចម្បងសម្រាប់ការចាប់ដៃបីផ្លូវគឺដើម្បីជៀសវាងការភ័ន្តច្រឡំដែលបណ្តាលមកពីការចាប់ផ្តើមការតភ្ជាប់ស្ទួនចាស់។ នៅក្នុងបរិយាកាសបណ្តាញស្មុគ្រស្មាញ ការបញ្ជូនកញ្ចប់ទិន្នន័យមិនតែងតែត្រូវបានផ្ញើទៅកាន់ម៉ាស៊ីនគោលដៅស្របតាមពេលវេលាដែលបានបញ្ជាក់នោះទេ ហើយកញ្ចប់ទិន្នន័យចាស់អាចទៅដល់ម៉ាស៊ីនគោលដៅមុនគេ ដោយសារការកកស្ទះបណ្តាញ និងហេតុផលផ្សេងទៀត។ ដើម្បីជៀសវាងបញ្ហានេះ TCP ប្រើការចាប់ដៃបីផ្លូវដើម្បីបង្កើតការតភ្ជាប់។
នៅពេលម៉ាស៊ីនភ្ញៀវផ្ញើកញ្ចប់ព័ត៌មានបង្កើតការតភ្ជាប់ SYN ច្រើនជាប់ៗគ្នា ក្នុងស្ថានភាពដូចជាការកកស្ទះបណ្តាញ កត្តាខាងក្រោមអាចកើតឡើង៖
1- កញ្ចប់ SYN ចាស់មកដល់ម៉ាស៊ីនមេ មុនពេលកញ្ចប់ SYN ចុងក្រោយបង្អស់។
2- ម៉ាស៊ីនមេនឹងឆ្លើយតបកញ្ចប់ SYN + ACK ទៅអតិថិជនបន្ទាប់ពីទទួលបានកញ្ចប់ SYN ចាស់។
3- នៅពេលដែលអតិថិជនទទួលបានកញ្ចប់ព័ត៌មាន SYN + ACK វាកំណត់ថាការតភ្ជាប់គឺជាការតភ្ជាប់ប្រវត្តិសាស្រ្ត (លេខលំដាប់ផុតកំណត់ ឬអស់ពេល) តាមបរិបទរបស់វា ហើយបន្ទាប់មកផ្ញើកញ្ចប់ព័ត៌មាន RST ទៅកាន់ម៉ាស៊ីនមេ ដើម្បីបោះបង់ការតភ្ជាប់។
ជាមួយនឹងការតភ្ជាប់ការចាប់ដៃពីរមិនមានវិធីដើម្បីកំណត់ថាតើការតភ្ជាប់បច្ចុប្បន្នគឺជាការតភ្ជាប់ប្រវត្តិសាស្រ្តទេ។ ការចាប់ដៃបីផ្លូវអនុញ្ញាតឱ្យអតិថិជនកំណត់ថាតើការតភ្ជាប់បច្ចុប្បន្នគឺជាការតភ្ជាប់ប្រវត្តិសាស្រ្តដោយផ្អែកលើបរិបទនៅពេលដែលវារួចរាល់ដើម្បីផ្ញើកញ្ចប់ទីបី៖
1- ប្រសិនបើវាជាការតភ្ជាប់ប្រវត្តិសាស្រ្ត (លេខលំដាប់ផុតកំណត់ ឬអស់ពេល) កញ្ចប់ព័ត៌មានដែលបានផ្ញើដោយការចាប់ដៃទីបីគឺជាកញ្ចប់ព័ត៌មាន RST ដើម្បីបោះបង់ការតភ្ជាប់ជាប្រវត្តិសាស្ត្រ។
2- ប្រសិនបើវាមិនមែនជាការតភ្ជាប់ជាប្រវត្តិសាស្ត្រ កញ្ចប់ព័ត៌មានដែលបានផ្ញើជាលើកទីបីគឺជាកញ្ចប់ព័ត៌មាន ACK ហើយភាគីទំនាក់ទំនងទាំងពីរបានបង្កើតការតភ្ជាប់ដោយជោគជ័យ។
ដូច្នេះហើយ មូលហេតុចម្បងដែល TCP ប្រើការចាប់ដៃបីផ្លូវ គឺវាចាប់ផ្តើមការតភ្ជាប់ដើម្បីការពារការភ្ជាប់ជាប្រវត្តិសាស្ត្រ។
ហេតុផលទី 2: ដើម្បីធ្វើសមកាលកម្មលេខលំដាប់ដំបូងនៃភាគីទាំងពីរ
ភាគីទាំងពីរនៃពិធីការ TCP ត្រូវតែរក្សាលេខលំដាប់ដែលជាកត្តាសំខាន់ដើម្បីធានាការបញ្ជូនដែលអាចទុកចិត្តបាន។ លេខលំដាប់ដើរតួនាទីយ៉ាងសំខាន់ក្នុងការតភ្ជាប់ TCP។ ពួកគេធ្វើដូចខាងក្រោម៖
អ្នកទទួលអាចលុបបំបាត់ទិន្នន័យស្ទួន និងធានាបាននូវភាពត្រឹមត្រូវនៃទិន្នន័យ។
អ្នកទទួលអាចទទួលកញ្ចប់ព័ត៌មានតាមលំដាប់លេខរៀង ដើម្បីធានាបាននូវភាពត្រឹមត្រូវនៃទិន្នន័យ។
● លេខលំដាប់អាចកំណត់អត្តសញ្ញាណកញ្ចប់ទិន្នន័យដែលត្រូវបានទទួលដោយភាគីម្ខាងទៀត ដែលអនុញ្ញាតឱ្យបញ្ជូនទិន្នន័យដែលអាចទុកចិត្តបាន។
ដូច្នេះនៅពេលបង្កើតការភ្ជាប់ TCP ម៉ាស៊ីនភ្ញៀវផ្ញើកញ្ចប់ SYN ជាមួយលេខលំដាប់ដំបូង ហើយតម្រូវឱ្យម៉ាស៊ីនមេឆ្លើយតបជាមួយកញ្ចប់ព័ត៌មាន ACK ដែលបង្ហាញពីការទទួលកញ្ចប់ SYN របស់អតិថិជនដោយជោគជ័យ។ បន្ទាប់មក ម៉ាស៊ីនមេផ្ញើកញ្ចប់ព័ត៌មាន SYN ដែលមានលេខលំដាប់ដំបូងទៅម៉ាស៊ីនភ្ញៀវ ហើយរង់ចាំឱ្យអតិថិជនឆ្លើយតបម្តង និងសម្រាប់ទាំងអស់ ដើម្បីធានាថាលេខលំដាប់ដំបូងត្រូវបានធ្វើសមកាលកម្មគួរឱ្យទុកចិត្ត។
ទោះបីជាការចាប់ដៃបួនផ្លូវក៏អាចធ្វើទៅបានដើម្បីធ្វើសមកាលកម្មលេខលំដាប់ដំបូងនៃភាគីទាំងពីរយ៉ាងគួរឱ្យទុកចិត្តក៏ដោយ ជំហានទីពីរ និងទីបីអាចត្រូវបានបញ្ចូលគ្នាទៅក្នុងជំហានតែមួយ ដែលបណ្តាលឱ្យមានការចាប់ដៃបីផ្លូវ។ ទោះជាយ៉ាងណាក៏ដោយ ការចាប់ដៃទាំងពីរអាចធានាបានថា លេខលំដាប់ដំបូងនៃភាគីមួយត្រូវបានទទួលដោយជោគជ័យដោយភាគីម្ខាងទៀត ប៉ុន្តែមិនមានការធានាថាលេខលំដាប់ដំបូងនៃភាគីទាំងពីរអាចបញ្ជាក់បានទេ។ ដូច្នេះ ការចាប់ដៃបីផ្លូវ គឺជាជម្រើសដ៏ល្អបំផុតក្នុងការទទួលយក ដើម្បីធានាបាននូវស្ថេរភាព និងភាពជឿជាក់នៃការតភ្ជាប់ TCP ។
ហេតុផលទី ៣៖ ជៀសវាងការខ្ជះខ្ជាយធនធាន
ប្រសិនបើមានតែ "ការចាប់ដៃពីរ" នៅពេលដែលសំណើរបស់អតិថិជន SYN ត្រូវបានរារាំងនៅក្នុងបណ្តាញ អតិថិជនមិនអាចទទួលបានកញ្ចប់ព័ត៌មាន ACK ដែលផ្ញើដោយម៉ាស៊ីនមេទេ ដូច្នេះ SYN នឹងត្រូវបានបញ្ជូនបន្ត។ ទោះយ៉ាងណាក៏ដោយ ដោយសារមិនមានការចាប់ដៃទីបី នោះម៉ាស៊ីនមេមិនអាចកំណត់ថាតើម៉ាស៊ីនភ្ញៀវបានទទួលការទទួលស្គាល់ ACK ដើម្បីបង្កើតការតភ្ជាប់ឬអត់។ ដូច្នេះ ម៉ាស៊ីនមេអាចបង្កើតការភ្ជាប់យ៉ាងសកម្មបានតែបន្ទាប់ពីទទួលបានសំណើ SYN នីមួយៗ។ នេះនាំឱ្យមានដូចខាងក្រោមៈ
ខ្ជះខ្ជាយធនធាន៖ ប្រសិនបើសំណើ SYN របស់អតិថិជនត្រូវបានរារាំង ដែលបណ្តាលឱ្យមានការបញ្ជូនម្តងហើយម្តងទៀតនៃកញ្ចប់ SYN ច្រើននោះ ម៉ាស៊ីនមេនឹងបង្កើតការតភ្ជាប់មិនត្រឹមត្រូវច្រើនដងបន្ទាប់ពីទទួលបានសំណើ។ នេះនាំឱ្យមានការខ្ជះខ្ជាយធនធានដែលមិនចាំបាច់នៃម៉ាស៊ីនមេ។
ការរក្សាទុកសារ៖ ដោយសារកង្វះការចាប់ដៃទីបី នោះម៉ាស៊ីនមេមិនមានវិធីដឹងថាតើអតិថិជនបានទទួលការទទួលស្គាល់ ACK ត្រឹមត្រូវដើម្បីបង្កើតការតភ្ជាប់នោះទេ។ ជាលទ្ធផល ប្រសិនបើសារជាប់គាំងក្នុងបណ្តាញ អតិថិជននឹងបន្តផ្ញើសំណើ SYN ម្តងហើយម្តងទៀត ដែលបណ្តាលឱ្យម៉ាស៊ីនមេបង្កើតការតភ្ជាប់ថ្មីឥតឈប់ឈរ។ វានឹងបង្កើនការកកស្ទះបណ្តាញ និងការពន្យារពេល និងជះឥទ្ធិពលអវិជ្ជមានដល់ដំណើរការបណ្តាញទាំងមូល។
ដូច្នេះ ដើម្បីធានាបាននូវស្ថេរភាព និងភាពជឿជាក់នៃការតភ្ជាប់បណ្តាញ TCP ប្រើការចាប់ដៃបីផ្លូវ ដើម្បីបង្កើតការតភ្ជាប់ ដើម្បីជៀសវាងការកើតឡើងនៃបញ្ហាទាំងនេះ។
សង្ខេប
នេះ។ឈ្មួញកណ្តាលកញ្ចប់បណ្តាញការបង្កើតការតភ្ជាប់ TCP ត្រូវបានធ្វើឡើងដោយការចាប់ដៃបីផ្លូវ។ ក្នុងអំឡុងពេលនៃការចាប់ដៃបីផ្លូវ អតិថិជនដំបូងផ្ញើកញ្ចប់ព័ត៌មានដែលមានទង់ SYN ទៅម៉ាស៊ីនមេ ដោយបង្ហាញថាវាចង់បង្កើតការតភ្ជាប់។ បន្ទាប់ពីទទួលបានសំណើពីអតិថិជន ម៉ាស៊ីនមេឆ្លើយតបកញ្ចប់ព័ត៌មានដែលមានទង់ SYN និង ACK ទៅកាន់អតិថិជន ដោយបង្ហាញថាសំណើការតភ្ជាប់ត្រូវបានទទួលយក ហើយផ្ញើលេខលំដាប់ដំបូងរបស់វា។ ជាចុងក្រោយ អតិថិជនឆ្លើយតបជាមួយនឹងទង់ ACK ទៅកាន់ម៉ាស៊ីនមេ ដើម្បីបង្ហាញថាការតភ្ជាប់ត្រូវបានបង្កើតឡើងដោយជោគជ័យ។ ដូច្នេះ ភាគីទាំងពីរស្ថិតក្នុងស្ថានភាព ESTABLISHED ហើយអាចចាប់ផ្តើមបញ្ជូនទិន្នន័យទៅគ្នាទៅវិញទៅមក។
ជាទូទៅ ដំណើរការចាប់ដៃបីផ្លូវសម្រាប់ការបង្កើតការតភ្ជាប់ TCP ត្រូវបានរៀបចំឡើងដើម្បីធានាបាននូវស្ថេរភាពនៃការតភ្ជាប់ និងភាពជឿជាក់ ជៀសវាងការភ័ន្តច្រឡំ និងការខ្ជះខ្ជាយធនធានលើការតភ្ជាប់ជាប្រវត្តិសាស្ត្រ និងធានាថាភាគីទាំងពីរអាចទទួល និងបញ្ជូនទិន្នន័យ។
ពេលវេលាបង្ហោះ៖ ០៨-មករា-២០២៥