TCP ਕਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ
ਜਦੋਂ ਅਸੀਂ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ ਕਰਦੇ ਹਾਂ, ਈਮੇਲ ਭੇਜਦੇ ਹਾਂ, ਜਾਂ ਔਨਲਾਈਨ ਗੇਮ ਖੇਡਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਅਕਸਰ ਇਸਦੇ ਪਿੱਛੇ ਗੁੰਝਲਦਾਰ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਬਾਰੇ ਨਹੀਂ ਸੋਚਦੇ। ਹਾਲਾਂਕਿ, ਇਹ ਛੋਟੇ-ਛੋਟੇ ਕਦਮ ਹਨ ਜੋ ਸਾਡੇ ਅਤੇ ਸਰਵਰ ਵਿਚਕਾਰ ਸਥਿਰ ਸੰਚਾਰ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ। ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਕਦਮਾਂ ਵਿੱਚੋਂ ਇੱਕ TCP ਕਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ ਹੈ, ਅਤੇ ਇਸਦਾ ਮੂਲ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਹੈ।
ਇਹ ਲੇਖ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੇ ਸਿਧਾਂਤ, ਪ੍ਰਕਿਰਿਆ ਅਤੇ ਮਹੱਤਵ ਬਾਰੇ ਵਿਸਥਾਰ ਵਿੱਚ ਚਰਚਾ ਕਰੇਗਾ। ਕਦਮ-ਦਰ-ਕਦਮ, ਅਸੀਂ ਦੱਸਾਂਗੇ ਕਿ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੀ ਲੋੜ ਕਿਉਂ ਹੈ, ਇਹ ਕਨੈਕਸ਼ਨ ਸਥਿਰਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਇਹ ਡੇਟਾ ਟ੍ਰਾਂਸਫਰ ਲਈ ਕਿੰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੀ ਡੂੰਘੀ ਸਮਝ ਦੇ ਨਾਲ, ਅਸੀਂ ਨੈੱਟਵਰਕ ਸੰਚਾਰ ਦੇ ਅੰਤਰੀਵ ਵਿਧੀਆਂ ਦੀ ਬਿਹਤਰ ਸਮਝ ਅਤੇ TCP ਕਨੈਕਸ਼ਨਾਂ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਦਾ ਇੱਕ ਸਪਸ਼ਟ ਦ੍ਰਿਸ਼ ਪ੍ਰਾਪਤ ਕਰਾਂਗੇ।
TCP ਥ੍ਰੀ-ਵੇ ਹੈਂਡਸ਼ੇਕ ਪ੍ਰਕਿਰਿਆ ਅਤੇ ਸਟੇਟ ਟ੍ਰਾਂਜਿਸ਼ਨ
TCP ਇੱਕ ਕਨੈਕਸ਼ਨ-ਅਧਾਰਿਤ ਟ੍ਰਾਂਸਪੋਰਟ ਪ੍ਰੋਟੋਕੋਲ ਹੈ, ਜਿਸ ਲਈ ਡੇਟਾ ਟ੍ਰਾਂਸਮਿਸ਼ਨ ਤੋਂ ਪਹਿਲਾਂ ਕਨੈਕਸ਼ਨ ਸਥਾਪਨਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਕਨੈਕਸ਼ਨ ਸਥਾਪਨਾ ਪ੍ਰਕਿਰਿਆ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
ਆਓ ਹਰੇਕ ਕਨੈਕਸ਼ਨ ਵਿੱਚ ਭੇਜੇ ਜਾਣ ਵਾਲੇ TCP ਪੈਕੇਟਾਂ 'ਤੇ ਇੱਕ ਡੂੰਘੀ ਵਿਚਾਰ ਕਰੀਏ।
ਸ਼ੁਰੂ ਵਿੱਚ, ਕਲਾਇੰਟ ਅਤੇ ਸਰਵਰ ਦੋਵੇਂ ਬੰਦ ਹੁੰਦੇ ਹਨ। ਪਹਿਲਾਂ, ਸਰਵਰ ਸਰਗਰਮੀ ਨਾਲ ਇੱਕ ਪੋਰਟ 'ਤੇ ਸੁਣਦਾ ਹੈ ਅਤੇ LISTEN ਸਥਿਤੀ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਰਵਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਲਾਜ਼ਮੀ ਹੈ। ਅੱਗੇ, ਕਲਾਇੰਟ ਵੈੱਬਪੇਜ ਤੱਕ ਪਹੁੰਚ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ। ਇਸਨੂੰ ਸਰਵਰ ਨਾਲ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਪਹਿਲੇ ਕਨੈਕਸ਼ਨ ਪੈਕੇਟ ਦਾ ਫਾਰਮੈਟ ਇਸ ਪ੍ਰਕਾਰ ਹੈ:
ਜਦੋਂ ਕੋਈ ਕਲਾਇੰਟ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਬੇਤਰਤੀਬ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ (client_isn) ਤਿਆਰ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ TCP ਹੈਡਰ ਦੇ "ਕ੍ਰਮ ਨੰਬਰ" ਖੇਤਰ ਵਿੱਚ ਰੱਖਦਾ ਹੈ। ਉਸੇ ਸਮੇਂ, ਕਲਾਇੰਟ SYN ਫਲੈਗ ਸਥਿਤੀ ਨੂੰ 1 ਤੇ ਸੈੱਟ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਦਰਸਾਇਆ ਜਾ ਸਕੇ ਕਿ ਬਾਹਰ ਜਾਣ ਵਾਲਾ ਪੈਕੇਟ ਇੱਕ SYN ਪੈਕੇਟ ਹੈ। ਕਲਾਇੰਟ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਉਹ ਸਰਵਰ ਨੂੰ ਪਹਿਲਾ SYN ਪੈਕੇਟ ਭੇਜ ਕੇ ਸਰਵਰ ਨਾਲ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ। ਇਸ ਪੈਕੇਟ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਲੇਅਰ ਡੇਟਾ (ਭਾਵ, ਭੇਜਿਆ ਗਿਆ ਡੇਟਾ) ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ। ਇਸ ਬਿੰਦੂ 'ਤੇ, ਕਲਾਇੰਟ ਦੀ ਸਥਿਤੀ ਨੂੰ SYN-SENT ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਜਦੋਂ ਇੱਕ ਸਰਵਰ ਇੱਕ ਕਲਾਇੰਟ ਤੋਂ ਇੱਕ SYN ਪੈਕੇਟ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਬੇਤਰਤੀਬੇ ਨਾਲ ਆਪਣਾ ਸੀਰੀਅਲ ਨੰਬਰ (server_isn) ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਅਤੇ ਫਿਰ ਉਸ ਨੰਬਰ ਨੂੰ TCP ਹੈਡਰ ਦੇ "ਸੀਰੀਅਲ ਨੰਬਰ" ਖੇਤਰ ਵਿੱਚ ਰੱਖਦਾ ਹੈ। ਅੱਗੇ, ਸਰਵਰ "ਸਵੀਕਾਰ ਨੰਬਰ" ਖੇਤਰ ਵਿੱਚ client_isn + 1 ਦਰਜ ਕਰਦਾ ਹੈ ਅਤੇ SYN ਅਤੇ ACK ਬਿੱਟ ਦੋਵਾਂ ਨੂੰ 1 ਤੇ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਅੰਤ ਵਿੱਚ, ਸਰਵਰ ਕਲਾਇੰਟ ਨੂੰ ਪੈਕੇਟ ਭੇਜਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ-ਲੇਅਰ ਡੇਟਾ ਨਹੀਂ ਹੁੰਦਾ (ਅਤੇ ਸਰਵਰ ਨੂੰ ਭੇਜਣ ਲਈ ਕੋਈ ਡੇਟਾ ਨਹੀਂ ਹੁੰਦਾ)। ਇਸ ਸਮੇਂ, ਸਰਵਰ SYN-RCVD ਸਥਿਤੀ ਵਿੱਚ ਹੈ।
ਇੱਕ ਵਾਰ ਜਦੋਂ ਕਲਾਇੰਟ ਸਰਵਰ ਤੋਂ ਪੈਕੇਟ ਪ੍ਰਾਪਤ ਕਰ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਅੰਤਿਮ ਜਵਾਬ ਪੈਕੇਟ ਦਾ ਜਵਾਬ ਦੇਣ ਲਈ ਹੇਠ ਲਿਖੇ ਅਨੁਕੂਲਨ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: ਪਹਿਲਾਂ, ਕਲਾਇੰਟ ਜਵਾਬ ਪੈਕੇਟ ਦੇ TCP ਹੈਡਰ ਦੇ ACK ਬਿੱਟ ਨੂੰ 1 'ਤੇ ਸੈੱਟ ਕਰਦਾ ਹੈ; ਦੂਜਾ, ਕਲਾਇੰਟ "ਉੱਤਰ ਨੰਬਰ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" ਖੇਤਰ ਵਿੱਚ ਮੁੱਲ server_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 ਪੈਕੇਟ ਭੇਜਦਾ ਹੈ ਅਤੇ ਸਰਵਰ ਨੂੰ ਇੱਕ ACK ਪੈਕੇਟ ਨਾਲ ਜਵਾਬ ਦੇਣ ਦੀ ਮੰਗ ਕਰਦਾ ਹੈ ਜੋ ਕਲਾਇੰਟ ਦੇ SYN ਪੈਕੇਟ ਦੇ ਸਫਲ ਰਿਸੈਪਸ਼ਨ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਫਿਰ, ਸਰਵਰ ਕਲਾਇੰਟ ਨੂੰ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ ਦੇ ਨਾਲ SYN ਪੈਕੇਟ ਭੇਜਦਾ ਹੈ ਅਤੇ ਕਲਾਇੰਟ ਦੇ ਜਵਾਬ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ, ਇੱਕ ਵਾਰ ਅਤੇ ਹਮੇਸ਼ਾ ਲਈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਸਮਕਾਲੀ ਹਨ।
ਹਾਲਾਂਕਿ ਚਾਰ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੋਵਾਂ ਧਿਰਾਂ ਦੇ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰਾਂ ਨੂੰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਸਮਕਾਲੀ ਬਣਾਉਣ ਲਈ ਵੀ ਸੰਭਵ ਹੈ, ਦੂਜੇ ਅਤੇ ਤੀਜੇ ਕਦਮਾਂ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਕਦਮ ਵਿੱਚ ਜੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸਦੇ ਨਤੀਜੇ ਵਜੋਂ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਦੋਵੇਂ ਹੈਂਡਸ਼ੇਕ ਸਿਰਫ ਇਸ ਗੱਲ ਦੀ ਗਰੰਟੀ ਦੇ ਸਕਦੇ ਹਨ ਕਿ ਇੱਕ ਧਿਰ ਦਾ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ ਦੂਜੀ ਧਿਰ ਦੁਆਰਾ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰਾਪਤ ਹੋ ਗਿਆ ਹੈ, ਪਰ ਇਸ ਗੱਲ ਦੀ ਕੋਈ ਗਰੰਟੀ ਨਹੀਂ ਹੈ ਕਿ ਦੋਵਾਂ ਧਿਰਾਂ ਦੇ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਸ ਲਈ, TCP ਕਨੈਕਸ਼ਨਾਂ ਦੀ ਸਥਿਰਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪ ਹੈ।
ਕਾਰਨ 3: ਸਰੋਤਾਂ ਦੀ ਬਰਬਾਦੀ ਤੋਂ ਬਚੋ
ਜੇਕਰ ਸਿਰਫ਼ "ਦੋ-ਹੱਥ ਮਿਲਾਉਣ" ਦੀ ਗੱਲ ਹੈ, ਜਦੋਂ ਕਲਾਇੰਟ SYN ਬੇਨਤੀ ਨੈੱਟਵਰਕ ਵਿੱਚ ਬਲੌਕ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਕਲਾਇੰਟ ਸਰਵਰ ਦੁਆਰਾ ਭੇਜਿਆ ਗਿਆ ACK ਪੈਕੇਟ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਇਸ ਲਈ SYN ਨੂੰ ਮੁੜ ਬੇਨਤੀ ਕੀਤੀ ਜਾਵੇਗੀ। ਹਾਲਾਂਕਿ, ਕਿਉਂਕਿ ਕੋਈ ਤੀਜਾ ਹੈਂਡਸ਼ੇਕ ਨਹੀਂ ਹੈ, ਸਰਵਰ ਇਹ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿ ਕਲਾਇੰਟ ਨੂੰ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨ ਲਈ ACK ਰਸੀਦ ਪ੍ਰਾਪਤ ਹੋਈ ਹੈ ਜਾਂ ਨਹੀਂ। ਇਸ ਲਈ, ਸਰਵਰ ਹਰੇਕ SYN ਬੇਨਤੀ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਬਾਅਦ ਹੀ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਹੇਠ ਲਿਖਿਆਂ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ:
ਸਰੋਤਾਂ ਦੀ ਬਰਬਾਦੀ: ਜੇਕਰ ਕਲਾਇੰਟ ਦੀ SYN ਬੇਨਤੀ ਨੂੰ ਬਲੌਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸਦੇ ਨਤੀਜੇ ਵਜੋਂ ਕਈ SYN ਪੈਕੇਟਾਂ ਦਾ ਵਾਰ-ਵਾਰ ਸੰਚਾਰ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਸਰਵਰ ਬੇਨਤੀ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਬਾਅਦ ਕਈ ਬੇਲੋੜੇ ਅਵੈਧ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰੇਗਾ। ਇਸ ਨਾਲ ਸਰਵਰ ਸਰੋਤਾਂ ਦੀ ਬੇਲੋੜੀ ਬਰਬਾਦੀ ਹੁੰਦੀ ਹੈ।
ਸੁਨੇਹਾ ਧਾਰਨ: ਤੀਜੇ ਹੈਂਡਸ਼ੇਕ ਦੀ ਘਾਟ ਕਾਰਨ, ਸਰਵਰ ਕੋਲ ਇਹ ਜਾਣਨ ਦਾ ਕੋਈ ਤਰੀਕਾ ਨਹੀਂ ਹੈ ਕਿ ਕਲਾਇੰਟ ਨੇ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨ ਲਈ ACK ਰਸੀਦ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤੀ ਹੈ ਜਾਂ ਨਹੀਂ। ਨਤੀਜੇ ਵਜੋਂ, ਜੇਕਰ ਸੁਨੇਹੇ ਨੈੱਟਵਰਕ ਵਿੱਚ ਫਸ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਕਲਾਇੰਟ ਵਾਰ-ਵਾਰ SYN ਬੇਨਤੀਆਂ ਭੇਜਦਾ ਰਹੇਗਾ, ਜਿਸ ਨਾਲ ਸਰਵਰ ਲਗਾਤਾਰ ਨਵੇਂ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਦਾ ਰਹੇਗਾ। ਇਸ ਨਾਲ ਨੈੱਟਵਰਕ ਭੀੜ ਅਤੇ ਦੇਰੀ ਵਧੇਗੀ ਅਤੇ ਸਮੁੱਚੇ ਨੈੱਟਵਰਕ ਪ੍ਰਦਰਸ਼ਨ 'ਤੇ ਨਕਾਰਾਤਮਕ ਪ੍ਰਭਾਵ ਪਵੇਗਾ।
ਇਸ ਲਈ, ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਸਥਿਰਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, TCP ਇਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਵਾਪਰਨ ਤੋਂ ਬਚਣ ਲਈ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨ ਲਈ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
ਸੰਖੇਪ
ਦਨੈੱਟਵਰਕ ਪੈਕੇਟ ਬ੍ਰੋਕਰTCP ਕਨੈਕਸ਼ਨ ਸਥਾਪਨਾ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਨਾਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਦੌਰਾਨ, ਕਲਾਇੰਟ ਪਹਿਲਾਂ ਸਰਵਰ ਨੂੰ SYN ਫਲੈਗ ਵਾਲਾ ਇੱਕ ਪੈਕੇਟ ਭੇਜਦਾ ਹੈ, ਜੋ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਉਹ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ। ਕਲਾਇੰਟ ਤੋਂ ਬੇਨਤੀ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਸਰਵਰ ਕਲਾਇੰਟ ਨੂੰ SYN ਅਤੇ ACK ਫਲੈਗ ਵਾਲਾ ਇੱਕ ਪੈਕੇਟ ਜਵਾਬ ਦਿੰਦਾ ਹੈ, ਜੋ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਨੈਕਸ਼ਨ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰ ਲਈ ਗਈ ਹੈ, ਅਤੇ ਆਪਣਾ ਸ਼ੁਰੂਆਤੀ ਕ੍ਰਮ ਨੰਬਰ ਭੇਜਦਾ ਹੈ। ਅੰਤ ਵਿੱਚ, ਕਲਾਇੰਟ ਸਰਵਰ ਨੂੰ ਇੱਕ ACK ਫਲੈਗ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਇਹ ਦਰਸਾਉਣ ਲਈ ਕਿ ਕਨੈਕਸ਼ਨ ਸਫਲਤਾਪੂਰਵਕ ਸਥਾਪਿਤ ਹੋ ਗਿਆ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਦੋਵੇਂ ਧਿਰਾਂ ਸਥਾਪਤ ਸਥਿਤੀ ਵਿੱਚ ਹਨ ਅਤੇ ਇੱਕ ਦੂਜੇ ਨੂੰ ਡੇਟਾ ਭੇਜਣਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦੀਆਂ ਹਨ।
ਆਮ ਤੌਰ 'ਤੇ, TCP ਕਨੈਕਸ਼ਨ ਸਥਾਪਨਾ ਲਈ ਤਿੰਨ-ਪੱਖੀ ਹੈਂਡਸ਼ੇਕ ਪ੍ਰਕਿਰਿਆ ਕਨੈਕਸ਼ਨ ਸਥਿਰਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ, ਇਤਿਹਾਸਕ ਕਨੈਕਸ਼ਨਾਂ 'ਤੇ ਉਲਝਣ ਅਤੇ ਸਰੋਤਾਂ ਦੀ ਬਰਬਾਦੀ ਤੋਂ ਬਚਣ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ ਕਿ ਦੋਵੇਂ ਧਿਰਾਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਭੇਜਣ ਦੇ ਯੋਗ ਹਨ।
ਪੋਸਟ ਸਮਾਂ: ਜਨਵਰੀ-08-2025