ନେଟୱାର୍କ ପ୍ୟାକେଟ୍ ବ୍ରୋକର 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 ସ୍ଥିତିକୁ ସ୍ୱିଚ୍ କରେ।

ଉପରୋକ୍ତ ପ୍ରକ୍ରିୟାରୁ ଆପଣ ଦେଖିପାରିବେ ଯେ, ତ୍ରି-ପାଖିଆ ହାତମିଳନ କରିବା ସମୟରେ, ତୃତୀୟ ହାତମିଳନକୁ ତଥ୍ୟ ବହନ କରିବାକୁ ଅନୁମତି ଦିଆଯାଏ, କିନ୍ତୁ ପ୍ରଥମ ଦୁଇଟି ହାତମିଳନ ନୁହେଁ। ଏହା ଏକ ପ୍ରଶ୍ନ ଯାହା ପ୍ରାୟତଃ ସାକ୍ଷାତକାରରେ ପଚରାଯାଏ। ତ୍ରି-ପାଖିଆ ହାତମିଳନ ସମାପ୍ତ ହେବା ପରେ, ଉଭୟ ପକ୍ଷ ସ୍ଥାପନ ଅବସ୍ଥାରେ ପ୍ରବେଶ କରନ୍ତି, ଯାହା ସୂଚିତ କରେ ଯେ ସଂଯୋଗ ସଫଳତାର ସହିତ ସ୍ଥାପିତ ହୋଇଛି, ଯେଉଁଠାରେ କ୍ଲାଏଣ୍ଟ ଏବଂ ସର୍ଭର ପରସ୍ପରକୁ ତଥ୍ୟ ପଠାଇବା ଆରମ୍ଭ କରିପାରିବେ।

ତିନିଥର ହାତ ମିଳାଇବା କାହିଁକି? ଦୁଇଥର ନୁହେଁ, ଚାରିଥର?
ସାଧାରଣ ଉତ୍ତର ହେଉଛି, "କାରଣ ତ୍ରିମୁଖୀ ହାତମିଳନ ଗ୍ରହଣ ଏବଂ ପଠାଇବାର କ୍ଷମତାକୁ ସୁନିଶ୍ଚିତ କରେ।" ଏହି ଉତ୍ତରଟି ସଠିକ୍, କିନ୍ତୁ ଏହା କେବଳ ପୃଷ୍ଠ କାରଣ, ମୁଖ୍ୟ କାରଣକୁ ଉପସ୍ଥାପନ କରେ ନାହିଁ। ନିମ୍ନଲିଖିତରେ, ମୁଁ ଏହି ସମସ୍ୟା ବିଷୟରେ ଆମର ବୁଝାମଣାକୁ ଗଭୀର କରିବା ପାଇଁ ତିନୋଟି ଦିଗରୁ ତିନିଥର ହାତମିଳନର କାରଣଗୁଡ଼ିକୁ ବିଶ୍ଳେଷଣ କରିବି।

ତ୍ରି-ପାଖିଆ ହାତମିଳନ ଐତିହାସିକ ଭାବରେ ପୁନରାବୃତ୍ତି ସଂଯୋଗର ପ୍ରାରମ୍ଭକୁ ପ୍ରଭାବଶାଳୀ ଭାବରେ ଏଡାଇପାରେ (ମୁଖ୍ୟ କାରଣ)
ତ୍ରି-ପାଖିଆ ହାତମିଳନ ନିଶ୍ଚିତ କରେ ଯେ ଉଭୟ ପକ୍ଷ ଏକ ନିର୍ଭରଯୋଗ୍ୟ ପ୍ରାରମ୍ଭିକ କ୍ରମ ସଂଖ୍ୟା ପାଇଛନ୍ତି।
ତ୍ରିମୁଖୀ ହାତମିଳନ ସମ୍ବଳ ଅପଚୟକୁ ଏଡାଏ।

କାରଣ ୧: ଐତିହାସିକ ଡୁପ୍ଲିକେଟ୍ ଯୋଗଦାନକୁ ଏଡ଼ାନ୍ତୁ
ସଂକ୍ଷେପରେ, ପୁରୁଣା ଡୁପ୍ଲିକେଟ ସଂଯୋଗ ପ୍ରାରମ୍ଭିକୀକରଣ ଦ୍ୱାରା ସୃଷ୍ଟି ହୋଇଥିବା ଦ୍ୱନ୍ଦ୍ୱକୁ ଏଡାଇବା ପାଇଁ ତ୍ରି-ପାଖିଆ ହାତ ମିଳାଇବାର ମୁଖ୍ୟ କାରଣ। ଏକ ଜଟିଳ ନେଟୱାର୍କ ପରିବେଶରେ, ନିର୍ଦ୍ଦିଷ୍ଟ ସମୟ ଅନୁସାରେ ଡାଟା ପ୍ୟାକେଟଗୁଡ଼ିକର ପ୍ରସାରଣ ସର୍ବଦା ଗନ୍ତବ୍ୟସ୍ଥଳ ହୋଷ୍ଟକୁ ପଠାଯାଏ ନାହିଁ, ଏବଂ ନେଟୱାର୍କ ଭିଡ଼ ଏବଂ ଅନ୍ୟାନ୍ୟ କାରଣ ଯୋଗୁଁ ପୁରୁଣା ଡାଟା ପ୍ୟାକେଟଗୁଡ଼ିକ ପ୍ରଥମେ ଗନ୍ତବ୍ୟସ୍ଥଳ ହୋଷ୍ଟରେ ପହଞ୍ଚିପାରେ। ଏହାକୁ ଏଡାଇବା ପାଇଁ, TCP ସଂଯୋଗ ସ୍ଥାପନ କରିବା ପାଇଁ ତ୍ରି-ପାଖିଆ ହାତ ମିଳାଇବା ବ୍ୟବହାର କରେ।

ତ୍ରି-ପାଖିଆ ହାତମିଳନ ଐତିହାସିକ ଡୁପ୍ଲିକେଟ୍ ସଂଯୋଗକୁ ଏଡ଼ାଇ ଦିଏ

ଯେତେବେଳେ ଜଣେ କ୍ଲାଏଣ୍ଟ କ୍ରମାଗତ ଭାବରେ ଏକାଧିକ SYN ସଂଯୋଗ ସ୍ଥାପନ ପ୍ୟାକେଟ ପଠାଏ, ନେଟୱାର୍କ ଭିଡ଼ ଭଳି ପରିସ୍ଥିତିରେ, ନିମ୍ନଲିଖିତ ଘଟଣା ଘଟିପାରେ:

୧- ନୂତନତମ SYN ପ୍ୟାକେଟଗୁଡ଼ିକ ପୂର୍ବରୁ ପୁରୁଣା SYN ପ୍ୟାକେଟଗୁଡ଼ିକ ସର୍ଭରରେ ପହଞ୍ଚିଯାଏ।
୨- ପୁରୁଣା SYN ପ୍ୟାକେଟ ପାଇବା ପରେ ସର୍ଭର କ୍ଲାଏଣ୍ଟକୁ SYN + ACK ପ୍ୟାକେଟର ଉତ୍ତର ଦେବ।
3- ଯେତେବେଳେ କ୍ଲାଏଣ୍ଟ SYN + ACK ପ୍ୟାକେଟ୍ ଗ୍ରହଣ କରେ, ଏହା ନିର୍ଣ୍ଣୟ କରେ ଯେ ସଂଯୋଗଟି ଏହାର ନିଜସ୍ୱ ପ୍ରସଙ୍ଗ ଅନୁସାରେ ଏକ ଐତିହାସିକ ସଂଯୋଗ (କ୍ରମ ସଂଖ୍ୟା ସମାପ୍ତ କିମ୍ବା ସମୟ ସମାପ୍ତ) ଏବଂ ତା’ପରେ ସଂଯୋଗକୁ ବନ୍ଦ କରିବା ପାଇଁ RST ପ୍ୟାକେଟ୍ ସର୍ଭରକୁ ପଠାଏ।

ଦୁଇ-ହସ୍ତସେକ୍ ସଂଯୋଗ ସହିତ, ବର୍ତ୍ତମାନର ସଂଯୋଗ ଏକ ଐତିହାସିକ ସଂଯୋଗ କି ନାହିଁ ତାହା ନିର୍ଣ୍ଣୟ କରିବାର କୌଣସି ଉପାୟ ନାହିଁ। ତ୍ରି-ପାଖ ହାତସେକ୍ କ୍ଲାଏଣ୍ଟକୁ ତୃତୀୟ ପ୍ୟାକେଟ ପଠାଇବାକୁ ପ୍ରସ୍ତୁତ ହେବା ସମୟରେ ପ୍ରସଙ୍ଗ ଉପରେ ଆଧାର କରି ବର୍ତ୍ତମାନର ସଂଯୋଗ ଏକ ଐତିହାସିକ ସଂଯୋଗ କି ନାହିଁ ତାହା ନିର୍ଣ୍ଣୟ କରିବାକୁ ଅନୁମତି ଦିଏ:

୧- ଯଦି ଏହା ଏକ ଐତିହାସିକ ସଂଯୋଗ (କ୍ରମ ସଂଖ୍ୟା ସମାପ୍ତ କିମ୍ବା ସମୟ ସମାପ୍ତ), ତେବେ ତୃତୀୟ ହ୍ୟାଣ୍ଡସେକ୍ ଦ୍ୱାରା ପଠାଯାଇଥିବା ପ୍ୟାକେଟଟି ଐତିହାସିକ ସଂଯୋଗକୁ ରଦ୍ଦ କରିବା ପାଇଁ ଏକ RST ପ୍ୟାକେଟ।
୨- ଯଦି ଏହା ଏକ ଐତିହାସିକ ସଂଯୋଗ ନୁହେଁ, ତେବେ ତୃତୀୟ ଥର ପାଇଁ ପଠାଯାଇଥିବା ପ୍ୟାକେଟ୍ ହେଉଛି ଏକ ACK ପ୍ୟାକେଟ୍, ଏବଂ ଦୁଇ ଯୋଗାଯୋଗକାରୀ ପକ୍ଷ ସଫଳତାର ସହିତ ସଂଯୋଗ ସ୍ଥାପନ କରନ୍ତି।

ତେଣୁ, TCP ତ୍ରି-ପାଖିଆ ହାତମିଳନ ବ୍ୟବହାର କରିବାର ମୁଖ୍ୟ କାରଣ ହେଉଛି ଏହା ଐତିହାସିକ ସଂଯୋଗକୁ ରୋକିବା ପାଇଁ ସଂଯୋଗକୁ ଆରମ୍ଭ କରିଥାଏ।

କାରଣ ୨: ଉଭୟ ପକ୍ଷର ପ୍ରାରମ୍ଭିକ କ୍ରମ ସଂଖ୍ୟାଗୁଡ଼ିକୁ ସମନ୍ୱିତ କରିବା
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 ସଂଯୋଗ ସ୍ଥାପନ ପାଇଁ ତ୍ରି-ପାଖିଆ ହାତମିଳନ ପ୍ରକ୍ରିୟା ସଂଯୋଗ ସ୍ଥିରତା ଏବଂ ନିର୍ଭରଯୋଗ୍ୟତା ସୁନିଶ୍ଚିତ କରିବା, ଐତିହାସିକ ସଂଯୋଗ ଉପରେ ଦ୍ୱନ୍ଦ୍ୱ ଏବଂ ସମ୍ବଳର ଅପଚୟକୁ ଏଡାଇବା ଏବଂ ଉଭୟ ପକ୍ଷ ତଥ୍ୟ ଗ୍ରହଣ ଏବଂ ପଠାଇବାରେ ସକ୍ଷମ ହେବା ନିଶ୍ଚିତ କରିବା ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଛି।


ପୋଷ୍ଟ ସମୟ: ଜାନୁଆରୀ-୦୮-୨୦୨୫