কম্পিউটার টিউটোরিয়াল

TCP নেটওয়ার্ক কমিউনিকেশনের জন্য ন্যাগল অ্যালগরিদমের ওভারভিউ

ন্যাগল অ্যালগরিদম, エンジニア জন ন্যাগলের নামানুসারে নামকৃত, TCP অ্যাপ্লিকেশনগুলোর সাথে ছোট প্যাকেট সমস্যার কারণে নেটওয়ার্ক কংজেশন কমাতে ডিজাইন করা হয়েছিল। ইউনিক্স ইমপ্লিমেন্টেশন ১৯৮০ के দশকে ন্যাগল অ্যালগরিদম ব্যবহার করা শুরু করেছিল, এবং এটি আজও TCP-এর একটি স্ট্যান্ডার্ড ফিচার।

ন্যাগল অ্যালগরিদম কীভাবে কাজ করে

ন্যাগল অ্যালগরিদম TCP অ্যাপ্লিকেশনের প্রেরক পক্ষের ডেটা প্রক্রিয়া করে "ন্যাগলিং" (nagling) নামে একটি পদ্ধতিতে। এটি ছোট আকারের মেসেজ ডিটেক্ট করে এবং ডেটা তারের জুড়ে পাঠানোর আগে সেগুলো বড় TCP প্যাকেটগুলোর মধ্যে জমা করে। এই প্রক্রিয়াটি অপ্রয়োজনীয়ভাবে বড় সংখ্যক ছোট প্যাকেট জেনারেট হওয়া থেকে বাঁচায়।

ন্যাগল অ্যালগরিদমের টেকনিক্যাল স্পেসিফিকেশন ১৯৮৪ সালে RFC 896-এ প্রকাশিত হয়েছিল। কতটুকু ডেটা জমা করা হবে এবং পাঠানোর মধ্যে কতক্ষণ অপেক্ষা করা হবে সিদ্ধান্তগুলো এর সামগ্রিক পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।

ন্যাগলিং-এর সুবিধা

ন্যাগলিং একটি নেটওয়ার্ক কানেকশনের ব্যান্ডউইথ দক্ষতার সাথে ব্যবহার করতে পারে লেটেন্সি বা বিলম্বের খर्चে। RFC 896-এ বর্ণিত একটি উদাহরণ সম্ভাব্য ব্যান্ডউইথ সুবিধা এবং এর সৃষ্টির কারণ ব্যাখ্যা করে:

  • যদি একটি TCP অ্যাপ্লিকেশন কীবোর্ড কিস্ট্রোক ইন্টারসেপ্ট করে এবং প্রতিটি টাইপ করা ক্যারেক্টার রিসিভারের কাছে যোগাযোগ করতে চায়, তবে এটি মেসেজের একটি সিরিজ জেনারেট করতে পারে, প্রতিটিতে ১ বাইট ডেটা রয়েছে।
  • এই মেসেজগুলো নেটওয়ার্ক জুড়ে পাঠানোর আগে, প্রতিটিকে TCP/IP দ্বারা প্রয়োজনীয় TCP হেডার ইনফোর্মেশন সহ প্যাকেজ করা উচিত। প্রতিটি হেডার ২০ থেকে ৬০ বাইটের মধ্যে আকারের।
  • ন্যাগলিং ছাড়া, এই উদাহরণ অ্যাপ্লিকেশন ৯৫ শতাংশ বা তার বেশি হেডার ইনফোর্মেশন (কমপক্ষে ২১ বাইটে ২০ বাইট) এবং ৫ শতাংশ বা তার কম প্রকৃত ডেটা নিয়ে নেটওয়ার্ক মেসেজ জেনারেট করবে। ন্যাগল অ্যালগরিদম ব্যবহার করে, একই ডেটা কম মেসেজ ব্যবহার করে ডেলিভার করা যেতে পারে, যার ফলে বড় ব্যান্ডউইথ বাঁচানো যায়।

অ্যাপ্লিকেশন TCP_NODELAY সকেট প্রোগ্রামিং অপশন দিয়ে ন্যাগল অ্যালগরিদমের ব্যবহার নিয়ন্ত্রণ করে। উইন্ডোজ, লিনাক্স, এবং জাভা সিস্টেম সাধারণত ডিফল্টভাবে ন্যাগল সক্ষম রাখে। তাই সেই এনভায়রনমেন্টের জন্য লেখা অ্যাপ্লিকেশনগুলোর TCP_NODELAY স্পেসিফাই করতে হবে অ্যালগরিদম বন্ধ করার জন্য।

সীমাবদ্ধতা

দ্রুত নেটওয়ার্ক রেসপন্স প্রয়োজন এমন অ্যাপ্লিকেশন, যেমন ভিডিও কল এবং অনলাইন গেমিং, ন্যাগল সক্ষম থাকলে ভালো কাজ নাও করতে পারে। অ্যালগরিদম ছোট চাংক ডেটা জমা করার জন্য এক্সট্রা সময় নেয় সেই কারণে ল্যাগ ভিজ্যুয়ালি স্ক্রিনে বা ডিজিটাল অডিও স্ট্রিমে দেখা যেতে পারে। এই ধরনের অ্যাপ্লিকেশন সাধারণত ন্যাগল নিষ্ক্রিয় করে।

এই অ্যালগরিদম মূলত এক সময়ে উন্নত করা হয়েছিল যখন কম্পিউটার নেটওয়ার্ক আজকের চেয়ে কম ব্যান্ডউইথ সমর্থন করত। উপরের উদাহরণটি জন ন্যাগলের ফোর্ড এরোস্পেস에서의 অভিজ্ঞতা অনুভূত ১৯৮০ এর দশকের শুরুতে, যেখানে ফোর্ডের ধীর, ভারী-লোডেড, লম্বা দুরীর নেটওয়ার্কে ন্যাগলিং ট্রেড-অফ অর্থপূর্ণ ছিল। আজ নেটওয়ার্ক অ্যাপ্লিকেশন তার অ্যালগরিদম থেকে লাভ পেতে পারে এমন পরিস্থিতি কমতে যাচ্ছে।

ন্যাগল অ্যালগরিদম শুধুমাত্র TCP-এর সাথে ব্যবহারযোগ্য। অন্যান্য প্রোটোকল, যেমন UDP, এটি সমর্থন করে না।

  1. TCP নেটওয়ার্ক কমিউনিকেশনের জন্য ন্যাগল অ্যালগরিদমের ওভারভিউ

  2. AT&T নেটওয়ার্কের জন্য নেটওয়ার্ক সিকিউরিটি কী (Network Security Key) কী এবং কোথায় পাবেন

  3. AT&T-এর নেটওয়ার্ক নিরাপত্তা কী?

  4. Linksys 05480 রাউটারের নেটওয়ার্ক নিরাপত্তা কী?