નેટવર્ક પેકેટ બ્રોકર TCP કનેક્શન્સના મુખ્ય રહસ્યો: ટ્રિપલ હેન્ડશેકની જરૂરિયાતને દૂર કરી

TCP કનેક્શન સેટઅપ
જ્યારે આપણે વેબ બ્રાઉઝ કરીએ છીએ, ઇમેઇલ મોકલીએ છીએ, અથવા ઑનલાઇન ગેમ રમીએ છીએ, ત્યારે આપણે ઘણીવાર તેની પાછળ રહેલા જટિલ નેટવર્ક કનેક્શન વિશે વિચારતા નથી. જો કે, આ નાના દેખાતા પગલાં જ આપણી અને સર્વર વચ્ચે સ્થિર વાતચીત સુનિશ્ચિત કરે છે. સૌથી મહત્વપૂર્ણ પગલાંઓમાંનું એક TCP કનેક્શન સેટઅપ છે, અને આનો મુખ્ય ભાગ ત્રણ-માર્ગી હેન્ડશેક છે.

આ લેખમાં ત્રિ-માર્ગી હેન્ડશેકના સિદ્ધાંત, પ્રક્રિયા અને મહત્વની વિગતવાર ચર્ચા કરવામાં આવશે. તબક્કાવાર, આપણે સમજાવીશું કે ત્રિ-માર્ગી હેન્ડશેક શા માટે જરૂરી છે, તે કનેક્શન સ્થિરતા અને વિશ્વસનીયતા કેવી રીતે સુનિશ્ચિત કરે છે, અને ડેટા ટ્રાન્સફર માટે તે કેટલું મહત્વપૂર્ણ છે. ત્રિ-માર્ગી હેન્ડશેકની ઊંડી સમજણ સાથે, આપણે નેટવર્ક સંચારના અંતર્ગત મિકેનિઝમ્સની વધુ સારી સમજણ અને TCP કનેક્શન્સની વિશ્વસનીયતાનો સ્પષ્ટ દૃષ્ટિકોણ મેળવીશું.

TCP થ્રી-વે હેન્ડશેક પ્રક્રિયા અને સ્થિતિ સંક્રમણો
TCP એક કનેક્શન-લક્ષી ટ્રાન્સપોર્ટ પ્રોટોકોલ છે, જેમાં ડેટા ટ્રાન્સમિશન પહેલાં કનેક્શન સ્થાપના જરૂરી છે. આ કનેક્શન સ્થાપના પ્રક્રિયા ત્રિ-માર્ગી હેન્ડશેક દ્વારા કરવામાં આવે છે.

 TCP ત્રિ-માર્ગી હેન્ડશેક

ચાલો દરેક કનેક્શનમાં મોકલવામાં આવતા TCP પેકેટો પર નજીકથી નજર કરીએ.

શરૂઆતમાં, ક્લાયંટ અને સર્વર બંને બંધ હોય છે. પ્રથમ, સર્વર સક્રિય રીતે પોર્ટ પર સાંભળે છે અને LISTEN સ્થિતિમાં હોય છે, જેનો અર્થ એ છે કે સર્વર શરૂ થવું આવશ્યક છે. આગળ, ક્લાયંટ વેબપેજને ઍક્સેસ કરવાનું શરૂ કરવા માટે તૈયાર છે. તેને સર્વર સાથે જોડાણ સ્થાપિત કરવાની જરૂર છે. પ્રથમ કનેક્શન પેકેટનું ફોર્મેટ નીચે મુજબ છે:

 SYN પેકેટ

જ્યારે ક્લાયંટ કનેક્શન શરૂ કરે છે, ત્યારે તે એક રેન્ડમ પ્રારંભિક ક્રમ નંબર (client_isn) જનરેટ કરે છે અને તેને TCP હેડરના "સિક્વન્સ નંબર" ફીલ્ડમાં મૂકે છે. તે જ સમયે, ક્લાયંટ SYN ફ્લેગ પોઝિશન 1 પર સેટ કરે છે જે દર્શાવે છે કે આઉટગોઇંગ પેકેટ SYN પેકેટ છે. ક્લાયંટ સૂચવે છે કે તે સર્વર પર પ્રથમ SYN પેકેટ મોકલીને સર્વર સાથે જોડાણ સ્થાપિત કરવા માંગે છે. આ પેકેટમાં એપ્લિકેશન લેયર ડેટા (એટલે ​​કે, મોકલેલ ડેટા) શામેલ નથી. આ બિંદુએ, ક્લાયંટની સ્થિતિ SYN-SENT તરીકે ચિહ્નિત થયેલ છે.

SYN+ACK પેકેટ

જ્યારે સર્વર ક્લાયંટ પાસેથી SYN પેકેટ મેળવે છે, ત્યારે તે રેન્ડમલી તેનો પોતાનો સીરીયલ નંબર (server_isn) શરૂ કરે છે અને પછી તે નંબરને TCP હેડરના "સીરીયલ નંબર" ફીલ્ડમાં મૂકે છે. આગળ, સર્વર "સ્વીકૃતિ નંબર" ફીલ્ડમાં client_isn + 1 દાખલ કરે છે અને SYN અને ACK બંને બિટ્સને 1 પર સેટ કરે છે. અંતે, સર્વર ક્લાયંટને પેકેટ મોકલે છે, જેમાં કોઈ એપ્લિકેશન-લેયર ડેટા નથી (અને સર્વર માટે મોકલવા માટે કોઈ ડેટા નથી). આ સમયે, સર્વર SYN-RCVD સ્થિતિમાં છે.

ACK પેકેટ

એકવાર ક્લાયન્ટ સર્વરમાંથી પેકેટ પ્રાપ્ત કરે છે, પછી તેને અંતિમ જવાબ પેકેટનો જવાબ આપવા માટે નીચેના ઑપ્ટિમાઇઝેશન કરવાની જરૂર છે: પ્રથમ, ક્લાયન્ટ જવાબ પેકેટના TCP હેડરના ACK બીટને 1 પર સેટ કરે છે; બીજું, ક્લાયન્ટ "જવાબ નંબરની પુષ્ટિ કરો" ફીલ્ડમાં server_isn + 1 મૂલ્ય દાખલ કરે છે; અંતે, ક્લાયન્ટ પેકેટને સર્વર પર મોકલે છે. આ પેકેટ ક્લાયન્ટથી સર્વર પર ડેટા લઈ જઈ શકે છે. આ કામગીરી પૂર્ણ થયા પછી, ક્લાયન્ટ ESTABLISHED સ્થિતિમાં પ્રવેશ કરશે.

એકવાર સર્વરને ક્લાયંટ તરફથી જવાબ પેકેટ મળે, તે પછી તે ESTABLISHED સ્થિતિમાં પણ સ્વિચ થાય છે.

ઉપરોક્ત પ્રક્રિયા પરથી તમે જોઈ શકો છો કે, ત્રિ-માર્ગી હેન્ડશેક કરતી વખતે, ત્રીજા હેન્ડશેકને ડેટા વહન કરવાની મંજૂરી આપવામાં આવે છે, પરંતુ પહેલા બે હેન્ડશેકને નહીં. આ એક એવો પ્રશ્ન છે જે ઘણીવાર ઇન્ટરવ્યુમાં પૂછવામાં આવે છે. એકવાર ત્રિ-માર્ગી હેન્ડશેક પૂર્ણ થઈ જાય, પછી બંને પક્ષો ESTABLISHED સ્થિતિમાં પ્રવેશ કરે છે, જે દર્શાવે છે કે કનેક્શન સફળતાપૂર્વક સ્થાપિત થઈ ગયું છે, તે સમયે ક્લાયંટ અને સર્વર એકબીજાને ડેટા મોકલવાનું શરૂ કરી શકે છે.

ત્રણ વાર હાથ મિલાવવાનું કેમ? બે વાર નહીં, ચાર વાર?
સામાન્ય જવાબ છે, "કારણ કે ત્રિ-માર્ગી હેન્ડશેક પ્રાપ્ત કરવા અને મોકલવાની ક્ષમતાની ખાતરી આપે છે." આ જવાબ સાચો છે, પરંતુ તે ફક્ત સપાટીનું કારણ છે, મુખ્ય કારણ આગળ મૂકતું નથી. નીચે, હું આ મુદ્દાની આપણી સમજને વધુ ઊંડી બનાવવા માટે ત્રણ પાસાઓથી ટ્રિપલ હેન્ડશેકના કારણોનું વિશ્લેષણ કરીશ.

ત્રિ-માર્ગી હેન્ડશેક ઐતિહાસિક રીતે પુનરાવર્તિત જોડાણોના પ્રારંભને અસરકારક રીતે ટાળી શકે છે (મુખ્ય કારણ)
ત્રિ-માર્ગી હેન્ડશેક ખાતરી આપે છે કે બંને પક્ષોને વિશ્વસનીય પ્રારંભિક ક્રમ નંબર મળ્યો છે.
ત્રિ-માર્ગી હેન્ડશેક સંસાધનોનો બગાડ ટાળે છે.

કારણ ૧: ઐતિહાસિક ડુપ્લિકેટ જોડાવાનું ટાળો
ટૂંકમાં, ત્રિ-માર્ગી હેન્ડશેકનું મુખ્ય કારણ જૂના ડુપ્લિકેટ કનેક્શન ઇનિશિયલાઇઝેશનને કારણે થતી મૂંઝવણ ટાળવાનું છે. જટિલ નેટવર્ક વાતાવરણમાં, ડેટા પેકેટનું ટ્રાન્સમિશન હંમેશા નિર્ધારિત સમય અનુસાર ગંતવ્ય હોસ્ટને મોકલવામાં આવતું નથી, અને નેટવર્ક ભીડ અને અન્ય કારણોસર જૂના ડેટા પેકેટ પહેલા ગંતવ્ય હોસ્ટ પર પહોંચી શકે છે. આને ટાળવા માટે, TCP કનેક્શન સ્થાપિત કરવા માટે ત્રિ-માર્ગી હેન્ડશેકનો ઉપયોગ કરે છે.

ત્રિ-માર્ગી હેન્ડશેક ઐતિહાસિક ડુપ્લિકેટ જોડાણોને ટાળે છે

જ્યારે કોઈ ક્લાયન્ટ નેટવર્ક ભીડ જેવી પરિસ્થિતિઓમાં, એક પછી એક અનેક SYN કનેક્શન સ્થાપના પેકેટ મોકલે છે, ત્યારે નીચેની બાબતો થઈ શકે છે:

૧- જૂના SYN પેકેટો નવીનતમ SYN પેકેટો પહેલાં સર્વર પર પહોંચે છે.
2- જૂનું SYN પેકેટ પ્રાપ્ત કર્યા પછી સર્વર ક્લાયન્ટને SYN + ACK પેકેટનો જવાબ આપશે.
૩- જ્યારે ક્લાયન્ટ SYN + ACK પેકેટ મેળવે છે, ત્યારે તે નક્કી કરે છે કે કનેક્શન તેના પોતાના સંદર્ભ અનુસાર એક ઐતિહાસિક કનેક્શન છે (સિક્વન્સ નંબર સમાપ્ત થઈ ગયો છે અથવા સમયસમાપ્ત થયો છે), અને પછી કનેક્શન રદ કરવા માટે RST પેકેટને સર્વર પર મોકલે છે.

બે-હેન્ડશેક કનેક્શન સાથે, વર્તમાન કનેક્શન ઐતિહાસિક જોડાણ છે કે નહીં તે નક્કી કરવાનો કોઈ રસ્તો નથી. ત્રિ-માર્ગી હેન્ડશેક ક્લાયન્ટને ત્રીજું પેકેટ મોકલવા માટે તૈયાર હોય ત્યારે સંદર્ભના આધારે વર્તમાન કનેક્શન ઐતિહાસિક જોડાણ છે કે નહીં તે નક્કી કરવાની મંજૂરી આપે છે:

૧- જો તે ઐતિહાસિક જોડાણ હોય (ક્રમ નંબર સમાપ્ત થઈ ગયો હોય અથવા સમયસમાપ્તિ થઈ ગઈ હોય), તો ત્રીજા હેન્ડશેક દ્વારા મોકલવામાં આવેલ પેકેટ એ ઐતિહાસિક જોડાણને રદ કરવા માટે RST પેકેટ છે.
2- જો તે ઐતિહાસિક જોડાણ ન હોય, તો ત્રીજી વખત મોકલવામાં આવેલ પેકેટ ACK પેકેટ હોય છે, અને બે વાતચીત કરનારા પક્ષો સફળતાપૂર્વક જોડાણ સ્થાપિત કરે છે.

તેથી, TCP ત્રિ-માર્ગી હેન્ડશેકનો ઉપયોગ કરે છે તેનું મુખ્ય કારણ એ છે કે તે ઐતિહાસિક જોડાણોને રોકવા માટે જોડાણને પ્રારંભ કરે છે.

કારણ ૨: બંને પક્ષોના પ્રારંભિક ક્રમ નંબરોને સમન્વયિત કરવા
TCP પ્રોટોકોલની બંને બાજુએ એક ક્રમાંક જાળવવો આવશ્યક છે, જે વિશ્વસનીય ટ્રાન્સમિશન સુનિશ્ચિત કરવા માટે એક મુખ્ય પરિબળ છે. TCP જોડાણોમાં ક્રમાંકાંક મહત્વપૂર્ણ ભૂમિકા ભજવે છે. તેઓ નીચે મુજબ કરે છે:

રીસીવર ડુપ્લિકેટ ડેટાને દૂર કરી શકે છે અને ડેટાની ચોકસાઈની ખાતરી કરી શકે છે.

ડેટાની અખંડિતતા સુનિશ્ચિત કરવા માટે રીસીવર ક્રમ નંબરના ક્રમમાં પેકેટો પ્રાપ્ત કરી શકે છે.

● ક્રમ નંબર બીજા પક્ષ દ્વારા પ્રાપ્ત થયેલા ડેટા પેકેટને ઓળખી શકે છે, જેનાથી વિશ્વસનીય ડેટા ટ્રાન્સમિશન શક્ય બને છે.

તેથી, TCP કનેક્શન સ્થાપિત કર્યા પછી, ક્લાયંટ પ્રારંભિક ક્રમ નંબર સાથે SYN પેકેટ મોકલે છે અને સર્વરને ACK પેકેટ સાથે જવાબ આપવા માટે કહે છે જે ક્લાયંટના SYN પેકેટના સફળ સ્વાગતને દર્શાવે છે. પછી, સર્વર ક્લાયંટને પ્રારંભિક ક્રમ નંબર સાથે SYN પેકેટ મોકલે છે અને ક્લાયંટ દ્વારા જવાબ મળે તેની રાહ જુએ છે, એકવાર અને બધા માટે, ખાતરી કરવા માટે કે પ્રારંભિક ક્રમ નંબરો વિશ્વસનીય રીતે સમન્વયિત છે.

બંને પક્ષોના પ્રારંભિક સીરીયલ નંબરોને સિંક્રનાઇઝ કરો.

જોકે ચાર-માર્ગી હેન્ડશેક બંને પક્ષોના પ્રારંભિક ક્રમ નંબરોને વિશ્વસનીય રીતે સુમેળ કરવા માટે પણ શક્ય છે, બીજા અને ત્રીજા પગલાને એક જ પગલામાં જોડી શકાય છે, જેના પરિણામે ત્રણ-માર્ગી હેન્ડશેક થાય છે. જો કે, બે હેન્ડશેક ફક્ત ખાતરી આપી શકે છે કે એક પક્ષનો પ્રારંભિક ક્રમ નંબર બીજા પક્ષ દ્વારા સફળતાપૂર્વક પ્રાપ્ત થયો છે, પરંતુ એવી કોઈ ગેરંટી નથી કે બંને પક્ષોના પ્રારંભિક ક્રમ નંબરની પુષ્ટિ થઈ શકે છે. તેથી, TCP કનેક્શન્સની સ્થિરતા અને વિશ્વસનીયતા સુનિશ્ચિત કરવા માટે ત્રણ-માર્ગી હેન્ડશેક એ શ્રેષ્ઠ પસંદગી છે.

કારણ ૩: સંસાધનોનો બગાડ ટાળો
જો ફક્ત "બે-હેન્ડશેક" હોય, જ્યારે ક્લાયંટ SYN વિનંતી નેટવર્કમાં અવરોધિત હોય, તો ક્લાયંટ સર્વર દ્વારા મોકલવામાં આવેલ ACK પેકેટ પ્રાપ્ત કરી શકતો નથી, તેથી SYN ફરીથી મોકલવામાં આવશે. જોકે, કોઈ ત્રીજો હેન્ડશેક ન હોવાથી, સર્વર નક્કી કરી શકતું નથી કે ક્લાયંટને કનેક્શન સ્થાપિત કરવા માટે ACK સ્વીકૃતિ મળી છે કે નહીં. તેથી, સર્વર દરેક SYN વિનંતી પ્રાપ્ત કર્યા પછી જ સક્રિય રીતે કનેક્શન સ્થાપિત કરી શકે છે. આ નીચેના તરફ દોરી જાય છે:

સંસાધનોનો બગાડ: જો ક્લાયન્ટની SYN વિનંતી અવરોધિત કરવામાં આવે છે, જેના પરિણામે બહુવિધ SYN પેકેટોનું વારંવાર ટ્રાન્સમિશન થાય છે, તો વિનંતી પ્રાપ્ત થયા પછી સર્વર બહુવિધ બિનજરૂરી અમાન્ય જોડાણો સ્થાપિત કરશે. આનાથી સર્વર સંસાધનોનો બિનજરૂરી બગાડ થાય છે.

સંદેશ રીટેન્શન: ત્રીજા હેન્ડશેકના અભાવને કારણે, સર્વર પાસે એ જાણવાનો કોઈ રસ્તો નથી કે ક્લાયન્ટને કનેક્શન સ્થાપિત કરવા માટે ACK સ્વીકૃતિ યોગ્ય રીતે મળી છે કે નહીં. પરિણામે, જો સંદેશાઓ નેટવર્કમાં અટવાઈ જાય છે, તો ક્લાયન્ટ વારંવાર SYN વિનંતીઓ મોકલવાનું ચાલુ રાખશે, જેના કારણે સર્વર સતત નવા કનેક્શન સ્થાપિત કરશે. આ નેટવર્ક ભીડ અને વિલંબમાં વધારો કરશે અને એકંદર નેટવર્ક પ્રદર્શનને નકારાત્મક અસર કરશે.

સંસાધનોનો બગાડ ટાળો

તેથી, નેટવર્ક કનેક્શનની સ્થિરતા અને વિશ્વસનીયતા સુનિશ્ચિત કરવા માટે, TCP આ સમસ્યાઓ ટાળવા માટે જોડાણ સ્થાપિત કરવા માટે ત્રિ-માર્ગી હેન્ડશેકનો ઉપયોગ કરે છે.

સારાંશ
નેટવર્ક પેકેટ બ્રોકરTCP કનેક્શન સ્થાપના ત્રણ-માર્ગી હેન્ડશેક દ્વારા કરવામાં આવે છે. ત્રણ-માર્ગી હેન્ડશેક દરમિયાન, ક્લાયન્ટ પહેલા સર્વરને SYN ફ્લેગ સાથેનું પેકેટ મોકલે છે, જે દર્શાવે છે કે તે કનેક્શન સ્થાપિત કરવા માંગે છે. ક્લાયન્ટ તરફથી વિનંતી પ્રાપ્ત કર્યા પછી, સર્વર SYN અને ACK ફ્લેગ સાથેના પેકેટનો જવાબ ક્લાયન્ટને આપે છે, જે દર્શાવે છે કે કનેક્શન વિનંતી સ્વીકારાઈ છે, અને તેનો પોતાનો પ્રારંભિક ક્રમ નંબર મોકલે છે. અંતે, ક્લાયન્ટ સર્વરને ACK ફ્લેગ સાથે જવાબ આપે છે જે દર્શાવે છે કે કનેક્શન સફળતાપૂર્વક સ્થાપિત થઈ ગયું છે. આમ, બંને પક્ષો સ્થાપિત સ્થિતિમાં છે અને એકબીજાને ડેટા મોકલવાનું શરૂ કરી શકે છે.

સામાન્ય રીતે, TCP કનેક્શન સ્થાપના માટે ત્રિ-માર્ગી હેન્ડશેક પ્રક્રિયા કનેક્શન સ્થિરતા અને વિશ્વસનીયતા સુનિશ્ચિત કરવા, ઐતિહાસિક જોડાણો પર મૂંઝવણ અને સંસાધનોનો બગાડ ટાળવા અને બંને પક્ષો ડેટા પ્રાપ્ત કરવા અને મોકલવા સક્ષમ છે તેની ખાતરી કરવા માટે રચાયેલ છે.


પોસ્ટ સમય: જાન્યુઆરી-08-2025