SOCKS ରିଲେରେ ଫୁଲ୍-ଡୁପ୍ଲେକ୍ସ ପ୍ରବାହ ଏବଂ ବ୍ୟାକପ୍ରେସର
ଅନୁମାନିତ ପ୍ରତିକ୍ରିୟା ଆକାର ପରିବର୍ତ୍ତେ ସ୍ୱାଧୀନ ବାଇଟ୍ ଷ୍ଟ୍ରିମ୍, ଆଂଶିକ I/O, ସୀମିତ ବଫର୍ ଏବଂ ବ୍ୟାକପ୍ରେସର ଚାରିପାଖରେ ରିଲେ ପ୍ରବାହ ଡିଜାଇନ୍ କରନ୍ତୁ।
SOCKS ହ୍ୟାଣ୍ଡସେକ୍ ସଫଳ ହେଲା। ବର୍ତ୍ତମାନ ରିଲେ କ୍ଲାଏଣ୍ଟରୁ ପଢ଼େ, ଗନ୍ତବ୍ୟସ୍ଥାନକୁ ଲେଖେ, ସମ୍ପୂର୍ଣ୍ଣ ପ୍ରତିକ୍ରିୟା ପାଇଁ ଅପେକ୍ଷା କରେ ଏବଂ ତା’ପରେ ହିଁ ପୁଣି କ୍ଲାଏଣ୍ଟରୁ ପଢ଼େ। ସେହି କ୍ରମ ଏକ ସମ୍ପୂର୍ଣ୍ଣ ବୈଧ ଆପ୍ଲିକେସନକୁ ଡେଡଲକ୍ କରିପାରେ।
TCP ଟନେଲ୍ ସ୍ଥାପିତ ହେବା ପରେ, SOCKS ଏହା ଭିତରର ସନ୍ଦେଶଗୁଡ଼ିକୁ ନିର୍ଦ୍ଧାରଣ କରେ ନାହିଁ। ଗନ୍ତବ୍ୟସ୍ଥାନ ପ୍ରଥମେ ପଠାଇପାରେ। ଉଭୟ ପକ୍ଷ ସ୍ୱାଧୀନଭାବେ ପଠାଇପାରନ୍ତି। ଗୋଟିଏ ପକ୍ଷ ଏକ ଛୋଟ ରେକର୍ଡ ପଠାଇ ପରେ ଅନ୍ୟର ଉତ୍ତର ଅପେକ୍ଷା କରିପାରେ।
ଅନୁମାନିତ କାରବାର ନୁହେଁ, ବାଇଟ୍ ପଠାନ୍ତୁ
ଏକ ରିସିଭ୍ କଲ୍ ଏହାର ଫ୍ଲାଗ୍ ଏବଂ ସକେଟ୍ ସ୍ଥିତି ଅନୁସାରେ ଉପଲବ୍ଧ ବାଇଟ୍ ଫେରାଏ। ଏହା ଏକ ସାଧାରଣ ରିଲେକୁ ଆପ୍ଲିକେସନ ପ୍ରତିକ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି ବୋଲି କୁହେ ନାହିଁ। ଏକ ଇଚ୍ଛାଧୀନ ବଡ଼ ବଫର୍ ଭରିବା ପର୍ଯ୍ୟନ୍ତ ଅପେକ୍ଷା କରିବା ସାଥୀକୁ ଜାରି ରଖିବା ପାଇଁ ଆବଶ୍ୟକ ଛୋଟ ସନ୍ଦେଶ ପଠାଇବାକୁ ରୋକିପାରେ।
ଉଭୟ ଦିଗକୁ ସେବା କରିବା ପାଇଁ ଆପ୍ଲିକେସନର ବିଦ୍ୟମାନ ସମବର୍ତ୍ତୀ ମଡେଲ୍ ବ୍ୟବହାର କରନ୍ତୁ: ଏକ ଇଭେଣ୍ଟ ଲୁପ୍, ଅସିଙ୍କ୍ରୋନସ୍ I/O କିମ୍ବା ଅନ୍ୟ ଉଦ୍ଦେଶ୍ୟପୂର୍ଣ୍ଣ ଭାବେ ଚୟନିତ ଡିଜାଇନ୍। ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଆଚରଣ ହେଉଛି ଗୋଟିଏ ଦିଗରେ ଅଗ୍ରଗତି ପାଇଁ ଅନ୍ୟ ଦିଗରେ ଏକ କାଳ୍ପନିକ ସନ୍ଦେଶ ସୀମା ଆବଶ୍ୟକ ନୁହେଁ।
ଦୁଇଟି ସୀମିତ ଅପେକ୍ଷାରତ ବଫର୍ ରଖନ୍ତୁ
କ୍ଲାଏଣ୍ଟରୁ ପଢ଼ାଯାଇଥିବା ଡାଟା ଏବେ ମଧ୍ୟ ଗନ୍ତବ୍ୟସ୍ଥାନରେ ପହଞ୍ଚିବା ପାଇଁ ଅପେକ୍ଷା କରିପାରେ, ଯେତେବେଳେ ଗନ୍ତବ୍ୟସ୍ଥାନରୁ ଡାଟା କ୍ଲାଏଣ୍ଟରେ ପହଞ୍ଚିବା ପାଇଁ ଅପେକ୍ଷା କରେ। ସେହି ଅପେକ୍ଷାରତ ବାଇଟ୍ଗୁଡ଼ିକୁ ଅଲଗା ଭାବେ ଟ୍ରାକ୍ କରନ୍ତୁ।
ଏକ ସେଣ୍ଡ ଅନୁରୋଧିତଠାରୁ କମ୍ ବାଇଟ୍ ଲେଖିପାରେ। ଅଲିଖିତ ଅଂଶକୁ ରଖନ୍ତୁ; ଏହାକୁ ଫିଙ୍ଗନ୍ତୁ ନାହିଁ କିମ୍ବା ସମଗ୍ର ବଫର୍ ପୁନଃ ଚଲାନ୍ତୁ ନାହିଁ। ସାମୟିକ ଭାବେ ଲେଖା ନ ଯାଉଥିବା ସକେଟ୍ ସଠିକ୍ ପ୍ରସ୍ତୁତି ଇଭେଣ୍ଟ ପାଇଁ ଅପେକ୍ଷା କରିବାର କାରଣ, ନିରନ୍ତର ଘୂରିବାର ନୁହେଁ।
ବଫର୍ଗୁଡ଼ିକୁ ସୀମିତ କରନ୍ତୁ। ଯଦି ଗନ୍ତବ୍ୟସ୍ଥାନ ମନ୍ଥର, ଅସୀମିତ କ୍ଲାଏଣ୍ଟ ଡାଟା ପଢ଼ିବା କେବଳ ଧାଡ଼ିକୁ ରିଲେର ସ୍ମୃତିରେ ସ୍ଥାନାନ୍ତର କରେ। ବ୍ୟାକପ୍ରେସର ଅର୍ଥ ହେଉଛି ସମ୍ପୃକ୍ତ ଅପେକ୍ଷାରତ ବଫର୍ ପୂର୍ଣ୍ଣ ହେଲେ ପଢ଼ିବା ସ୍ଥଗିତ ରଖିବା ଏବଂ ଲେଖା ସ୍ଥାନ ତିଆରି କଲେ ପୁନଃ ଆରମ୍ଭ କରିବା।
ଗୋଟିଏ ଦିଗରେ ଶେଷ ପାଇଁ ଏକ ନୀତି ଆବଶ୍ୟକ
ଅନ୍ୟ ଦିଗରେ ଏବେ ମଧ୍ୟ ଉପଯୋଗୀ ଡାଟା ଥିବାବେଳେ TCP ଏକ ପଠାଇବା ଦିଗ ବନ୍ଦ କରିପାରେ। ବଫର୍ ହୋଇଥିବା ବାଇଟ୍ ଶେଷ ହେବା ପରେ ସେହି ସ୍ଥିତିକୁ କିପରି ପ୍ରସାରିତ କରିବେ ତାହା ସ୍ଥିର କରନ୍ତୁ, ଏବଂ ନିୟମିତ ବନ୍ଦକୁ ତ୍ରୁଟି କିମ୍ବା ସମୟସୀମାରୁ ଅଲଗା କରନ୍ତୁ।
ଏଥିମଧ୍ୟରୁ କିଛି ମଧ୍ୟ ରିଲେକୁ ଆପ୍ଲିକେସନର ପେଲୋଡ୍ ଡିକ୍ରିପ୍ଟ କିମ୍ବା ପାର୍ସ କରିବାକୁ ଆବଶ୍ୟକ କରେ ନାହିଁ। ଏହାକୁ ସଠିକ୍ ଷ୍ଟ୍ରିମ୍ ପରିଚାଳନା ଆବଶ୍ୟକ। କେବଳ ବଫର୍ ଆକାର ବଢ଼ାଇବା ଭୁଲ ପକ୍ଷକୁ ଅପେକ୍ଷା କରୁଥିବା କିମ୍ବା ପ୍ରତ୍ୟେକ ପଠନ ଏକ ସମ୍ପୂର୍ଣ୍ଣ ଅନୁରୋଧ ସହିତ ମେଳ ଖାଉଛି ବୋଲି ଧରି ନେଉଥିବା ରିଲେକୁ ସମାଧାନ କରିପାରିବ ନାହିଁ।