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

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

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

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

 TCP થ્રી-વે હેન્ડશેક

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

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

 SYN પેકેટ

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

SYN+ACK પેકેટ

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

ACK પેકેટ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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