Skip to main content

Command Palette

Search for a command to run...

অধ্যায় ১: কম্পিউটার নেটওয়ার্ক ও ইন্টারনেট

Updated
14 min readView as Markdown

আজকের ইন্টারনেট মানুষের তৈরি করা সবচেয়ে বড় একটা প্রযুক্তি সিস্টেম। যেখানে কোটি কোটি কম্পিউটার , যোগাযোগ মাধ্যম , এবং সুইচ রয়েছে একসাথে সংযুক্ত; এতে বিলিয়ন সংখ্যক ব্যবহারকারী রয়েছেন, যারা ল্যাপটপ, ট্যাবলেট ও স্মার্টফোনের মাধ্যমে ইন্টারনেটে সংযুক্ত হন। এছাড়াও গেম কনসোল, নিরাপত্তা ক্যামেরা, ঘড়ি, চশমা, তাপমাত্রা নিয়ন্ত্রণ যন্ত্র এবং গাড়ির মতো নানা ধরনের নতুন ইন্টারনেট-সংযুক্ত যন্ত্রও যুক্ত হয়েছে। যেহেতু ইন্টারনেট এত বিশাল এবং এতে এত বৈচিত্র্যময় উপাদান ও ব্যবহার রয়েছে, তাই এটি কীভাবে কাজ করে তা বোঝা কি সম্ভব?

ইন্টারনেট যখন এত বিশাল আর এর মধ্যে এতরকমের জিনিস এর ব্যবহার আছে, তখন এটা কিভাবে কাজ করে সেটা কি আদৌ বোঝা সম্ভব? এত বড় আর জটিল একটা সিস্টেম বোঝার জন্য কি কোনো নির্দিষ্ট নিয়ম বা কাঠামো আছে? আর যদি থাকে, তাহলে কম্পিউটার নেটওয়ার্ক সম্পর্কে শেখাটা কি একই সাথে মজাদার আর আকর্ষণীয় হতে পারে?

এই সব প্রশ্নের উত্তর হচ্ছে, হ্যাঁ! একদম সম্ভব!

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

আচ্ছা, এই অধ্যায়ে আমরা কম্পিউটার নেটওয়ার্ক নিয়ে যেভাবে আলোচনা করব, তার একটা ধারণা দিচ্ছি:

প্রথমে আমরা কিছু মৌলিক শব্দ আর ধারণা নিয়ে কথা বলব। এরপর নেটওয়ার্ক সিস্টেম যে হার্ডওয়্যার আর সফটওয়্যার দিয়ে তৈরি, সেগুলো দেখব। শুরুটা করব নেটওয়ার্কের একদম শেষ প্রান্ত থেকে—অর্থাৎ, আপনার ব্যবহার করা কম্পিউটার বা ফোন (যাদেরকে এন্ড সিস্টেম বলে) এবং সেগুলোতে চলা বিভিন্ন অ্যাপস (নেটওয়ার্ক অ্যাপ্লিকেশন) কেমন হয়, সেটা জানব।

তারপর আমরা যাব নেটওয়ার্কের ভেতরের মূল অংশে (Core)। এখানে দেখব ডেটা আদান প্রদানের জন্য যে লিঙ্ক আর সুইচগুলো ব্যবহার করা হয়, সেগুলো কিভাবে কাজ করে। এছাড়াও, জানব কিভাবে অ্যাক্সেস নেটওয়ার্ক আর ফিজিক্যাল মিডিয়া এন্ড সিস্টেমগুলোকে এই মূল নেটওয়ার্কের সাথে যুক্ত করে।

সবশেষে, আমরা বুঝতে পারব যে ইন্টারনেট আসলে অনেকগুলো নেটওয়ার্কের এর সমন্বয়ে তৈরী একটা বিরাট নেটওয়ার্ক, এবং দেখব এই নেটওয়ার্কগুলো কিভাবে একে অপরের সাথে সংযুক্ত থাকে।


কম্পিউটার নেটওয়ার্কের একদম শেষ প্রান্ত (edge) আর মূল অংশ (core) সম্পর্কে জেনে ফেলার পর, আমরা এই অধ্যায়ের দ্বিতীয় অংশে আরও বিস্তৃত কিছু বিষয়ে নজর দেব।

আমরা দেখব একটি কম্পিউটার নেটওয়ার্কে ডেটার দেরি (delay), ক্ষতি (loss), এবং প্রবাহের হার (throughput) কেমন হয়। এরপর আমরা এন্ড-টু-এন্ড থ্রুপুট (end-to-end-throughput) ও দেরির(delay) জন্য কিছু সহজ গাণিতিক মডেল দেখব। এই মডেলগুলোতে ডেটা ট্রান্সমিশন, প্রোপাগেশন এবং কিউইংয়ের কারণে হওয়া বিলম্বগুলো বিবেচনা করা হবে।

তারপর, কম্পিউটার নেটওয়ার্কিংয়ের কিছু গুরুত্বপূর্ণ স্থাপত্য নীতি (architectural principles) নিয়ে আলোচনা করব। এর মধ্যে প্রোটোকল লেয়ারিং (protocol layering) এবং সার্ভিস মডেল (service models) অন্যতম।

আমরা আরও শিখব যে কম্পিউটার নেটওয়ার্কগুলো বিভিন্ন ধরনের আক্রমণের শিকার হতে পারে। আমরা এমন কিছু আক্রমণের ধরন নিয়ে আলোচনা করব এবং দেখব কিভাবে কম্পিউটার নেটওয়ার্কগুলোকে আরও নিরাপদ করা যায়।

সবশেষে, কম্পিউটার নেটওয়ার্কিংয়ের একটি সংক্ষিপ্ত ইতিহাস দিয়ে এই অধ্যায়টি শেষ করব, ইনশাআল্লাহ।

১.১ ইন্টারনেট আসলে কী?

কম্পিউটার নেটওয়ার্কিং এর ব্লগের সব পোষ্টজুড়ে আমরা কম্পিউটার নেটওয়ার্ক এবং তাদের প্রোটোকলগুলো নিয়ে আলোচনার জন্য মূল মাধ্যম হিসেবে পাবলিক ইন্টারনেট-কে ব্যবহার করব, যা একটি নির্দিষ্ট কম্পিউটার নেটওয়ার্ক। কিন্তু ইন্টারনেট আসলে কী? এই প্রশ্নের উত্তর কয়েকভাবে দেওয়া যায়।

প্রথমত, আমরা ইন্টারনেটের ভেতরের যন্ত্রাংশ (nuts and bolts) অর্থাৎ, এটিকে তৈরি করা মৌলিক হার্ডওয়্যার ও সফটওয়্যার উপাদানগুলো বর্ণনা করতে পারি। দ্বিতীয়ত, আমরা ইন্টারনেটকে এমন একটি নেটওয়ার্কিং অবকাঠামো হিসেবে বর্ণনা করতে পারি যা বিভিন্ন ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোকে (যেমন ফেসবুক, ইউটিউব) সার্ভিস দেয়।

চলুন, আমরা প্রথমে ইন্টারনেটের ভেতরের যন্ত্রাংশের বর্ণনা দিয়ে শুরু করি, এবং এর ব্যাখ্যা দেওয়ার জন্য চিত্র ১.১ ব্যবহার করব।

১.১.১ একটা সহজ-সরল বর্ণনা:

ইন্টারনেট বলতে আমরা আসলে কী বুঝি, এর ভেতরের জিনিসপত্রগুলো কেমন — সে সম্পর্কে একটা প্রাথমিক ধারণা।

ইন্টারনেট হলো একটি বিশাল কম্পিউটার নেটওয়ার্ক যা সারা বিশ্বের কোটি কোটি কম্পিউটিং ডিভাইসকে একে অপরের সাথে সংযুক্ত করে।

কিছুদিন আগেও, এই ডিভাইসগুলো বলতে প্রধানত ডেস্কটপ কম্পিউটার, লিনাক্স ওয়ার্কস্টেশন এবং সার্ভার বোঝাতো, যা ওয়েবপেজ বা ইমেলের মতো তথ্য সংরক্ষণ ও আদান-প্রদান করতো। তবে এখন ছবিটা বদলেছে! আজকাল ব্যবহারকারীরা স্মার্টফোন আর ট্যাবলেট দিয়ে ইন্টারনেটে যুক্ত হচ্ছেন। বর্তমানে, বিশ্বের প্রায় অর্ধেক মানুষ সক্রিয় মোবাইল ইন্টারনেট ব্যবহারকারী, এবং বর্তমানে বিশ্বের মোট জনসংখ্যার প্রায় ৬৪.৭ শতাংশ মানুষ ইন্টারনেট ব্যবহার করে অর্থাৎ, প্রায় ৫.৩ বিলিয়ন মানুষ ইন্টারনেটের সাথে যুক্ত আছে।

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

ইন্টারনেটের পরিভাষায়, এই সব ডিভাইসকে হোস্ট (host) বা এন্ড সিস্টেম (end systems) বলা হয়।

চিত্র ১.১: ইন্টারনেট এর কিছু অংশ


ইন্টারনেট হলো পৃথিবীর সবচেয়ে বড় একটা কম্পিউটার নেটওয়ার্ক। এখানে আপনার ফোন, ল্যাপটপ থেকে শুরু করে স্মার্টওয়াচ, গাড়ি পর্যন্ত সবকিছুই যুক্ত। এই সব যুক্ত হওয়া জিনিসগুলোকে এন্ড সিস্টেম (end system) বা হোস্ট (host) বলা হয়।

এই এন্ড সিস্টেমগুলো একে অপরের সাথে কিছু তার (যেমন অপটিক্যাল ফাইবার, কপার তার) বা তারবিহীন মাধ্যমের (যেমন রেডিও সিগনাল) সাহায্যে যুক্ত থাকে। এই মাধ্যমগুলোকে কমিউনিকেশন লিংক বলে, আর এদের ডেটা পাঠানোর গতি ভিন্ন ভিন্ন হয়।

যখন একটা এন্ড সিস্টেম অন্য এন্ড সিস্টেমে কিছু পাঠাতে চায়, তখন সে মূল ডেটাটাকে ছোট ছোট অংশে ভেঙে ফেলে। এই ছোট অংশগুলোকে প্যাকেট (packet) বলে, আর প্রতিটি প্যাকেটে কিছু বাড়তি তথ্য যোগ করা হয়।

এই প্যাকেটগুলো এরপর প্যাকেট সুইচ নামের কিছু যন্ত্রের মাধ্যমে এক জায়গা থেকে অন্য জায়গায় যায়। রাউটার আর লিংক-লেয়ার সুইচ হলো এমন দুটি প্রধান প্যাকেট সুইচ। এই সুইচগুলোই প্যাকেটগুলোকে সঠিক গন্তব্যে পৌঁছে দিতে সাহায্য করে। প্যাকেটগুলো যে পথ ধরে যায়, তাকে রুট (route) বা পাথ (path) বলে।

আসলে ইন্টারনেটে প্রতিদিন এতো বিপুল পরিমাণ ডেটা আদান-প্রদান হয় যে এর পরিমাণটা কল্পনারও অতীত, আর এই ডেটার পরিমাণ প্রতি বছর বেড়েই চলেছে।

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


প্যাকেট-সুইচড নেটওয়ার্ক (যেখানে প্যাকেট চলাচল করে) অনেকটা মহাসড়ক, রাস্তা এবং মোড়ের পরিবহন ব্যবস্থার (যেখানে গাড়ি চলাচল করে) মতোই।

উদাহরণস্বরূপ, একটি কারখানার কথা ভাবুন। কারখানা থেকে হাজার হাজার কিলোমিটার দূরে অবস্থিত একটি গুদামে প্রচুর পণ্য পাঠাতে হবে। কারখানায় প্রথমে পণ্যগুলোকে ছোট ছোট ভাগে ভাগ করা হয় এবং ট্রাকের বহরে লোড করা হয়। এরপর প্রতিটি ট্রাক আলাদাভাবে মহাসড়ক, রাস্তা এবং মোড়ের এই নেটওয়ার্ক দিয়ে গন্তব্যের গুদামের দিকে যাত্রা করে। গুদামে পৌঁছানোর পর, পণ্যগুলো ট্রাক থেকে নামানো হয় এবং একই চালান থেকে আসা বাকি পণ্যের সাথে একত্রিত করা হয়।

সাদৃশ্য

অনেক দিক থেকেই:

  • প্যাকেট হলো ট্রাকের মতো।

  • কমিউনিকেশন লিংক হলো মহাসড়ক আর রাস্তার মতো।

  • প্যাকেট সুইচ হলো মোড় বা সংযোগস্থলের মতো।

  • আর এন্ড সিস্টেম হলো বিল্ডিংয়ের মতো।


এন্ড সিস্টেমগুলো (যেমন আপনার কম্পিউটার বা মোবাইল) ইন্টারনেট সার্ভিস প্রোভাইডার (ISP)-এর মাধ্যমে ইন্টারনেট ব্যবহার করে। এই ISP-গুলোর মধ্যে আছে আপনার এলাকার কেবল বা টেলিফোন কোম্পানি, অফিসের ISP, বিশ্ববিদ্যালয়ের ISP, অথবা এয়ারপোর্ট, হোটেল, কফি শপের মতো পাবলিক জায়গায় ওয়াইফাই সুবিধা দেওয়া ISP-গুলো। এছাড়া, মোবাইল ফোনে ইন্টারনেট ব্যবহারের জন্য রয়েছে সেলুলার ডেটা ISP।

এন্ড সিস্টেমগুলো (যেমন আপনার কম্পিউটার বা মোবাইল) ইন্টারনেট সার্ভিস প্রোভাইডার (ISP)-এর মাধ্যমে ইন্টারনেট ব্যবহার করে। এই ISP-গুলোর মধ্যে আছে আপনার এলাকার কেবল বা টেলিফোন কোম্পানি, অফিসের ISP, বিশ্ববিদ্যালয়ের ISP, অথবা এয়ারপোর্ট, হোটেল, কফি শপের মতো পাবলিক জায়গায় ওয়াইফাই সুবিধা দেওয়া ISP-গুলো। এছাড়া, মোবাইল ফোনে ইন্টারনেট ব্যবহারের জন্য রয়েছে সেলুলার ডেটা ISP।


ISP: একটি নেটওয়ার্কের ভেতরে আরেকটি নেটওয়ার্ক

প্রত্যেক ISP নিজেই আসলে প্যাকেট সুইচ আর কমিউনিকেশন লিংকের একটি নেটওয়ার্ক। তারা এন্ড সিস্টেমগুলোকে বিভিন্ন ধরনের নেটওয়ার্ক অ্যাক্সেস সুবিধা দেয়। এর মধ্যে আছে বাসাবাড়িতে ব্যবহৃত ক্যাবল মডেম বা DSL-এর মতো ব্রডব্যান্ড ইন্টারনেট, হাই-স্পিড লোকাল এরিয়া নেটওয়ার্ক অ্যাক্সেস, এবং মোবাইল ওয়্যারলেস অ্যাক্সেস। ISP-গুলো বিভিন্ন কন্টেন্ট প্রোভাইডারকেও (যেমন গুগল, ফেসবুক) ইন্টারনেট অ্যাক্সেস দেয়, যেখানে সার্ভারগুলো সরাসরি ইন্টারনেটের সাথে যুক্ত থাকে।


ISP-গুলোর মধ্যে সংযোগ

ইন্টারনেটের মূল উদ্দেশ্যই হলো এন্ড সিস্টেমগুলোকে একে অপরের সাথে সংযুক্ত করা। তাই, যে ISP-গুলো এন্ড সিস্টেমগুলোকে অ্যাক্সেস দেয়, তাদের নিজেদের মধ্যেও সংযোগ থাকা দরকার। এই ছোট স্তরের ISP-গুলো তখন জাতীয় ও আন্তর্জাতিক বড় স্তরের ISP-গুলোর (upper-tier ISPs) মাধ্যমে একে অপরের সাথে যুক্ত হয়। আর এই বড় স্তরের ISP-গুলো আবার সরাসরি একে অপরের সাথে সংযুক্ত থাকে।

একটি বড় স্তরের ISP তৈরি হয় হাই-স্পিড রাউটার এবং হাই-স্পিড ফাইবার-অপটিক লিংকের সমন্বয়ে। প্রতিটি ISP নেটওয়ার্ক, সেটা ছোট বা বড় যে স্তরেরই হোক না কেন, স্বাধীনভাবে পরিচালিত হয়। এরা সবাই IP প্রোটোকল (যা নিয়ে পরে আরও আলোচনা হবে) ব্যবহার করে এবং নির্দিষ্ট কিছু নামকরণ ও অ্যাড্রেস নিয়ম মেনে চলে। ISP এবং তাদের পারস্পরিক সংযোগ সম্পর্কে আমরা ১.৩ অনুচ্ছেদে আরও বিস্তারিত জানব।


১.১.২ কী কী কাজ করা যায়:

ইন্টারনেট ব্যবহার করে আমরা কী কী সুবিধা পাই বা কী কী সেবা নিতে পারি, তার একটা বর্ণনা।

এতক্ষণ আমরা ইন্টারনেট কী কী অংশ দিয়ে তৈরি, তা নিয়ে কথা বলছিলাম। কিন্তু ইন্টারনেটকে সম্পূর্ণ অন্যভাবেও দেখা যায়—যেমন, এটি এমন একটি অবকাঠামো (infrastructure), যা বিভিন্ন অ্যাপ্লিকেশনকে সেবা (service) প্রদান করে।

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

এই অ্যাপ্লিকেশনগুলোকে ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন (distributed applications) বলা হয়, কারণ এগুলো একাধিক এন্ড সিস্টেমের (যেমন আপনার ফোন ও যে সার্ভার থেকে তথ্য আসছে) মধ্যে ডেটা আদান-প্রদান করে কাজ করে।


গুরুত্বপূর্ণ বিষয়: অ্যাপ্লিকেশন কোথায় চলে?

একটা গুরুত্বপূর্ণ বিষয় হলো, ইন্টারনেটের এই অ্যাপ্লিকেশনগুলো এন্ড সিস্টেমেই চলে—এগুলো নেটওয়ার্কের মূল অংশের প্যাকেট সুইচগুলোতে চলে না। যদিও প্যাকেট সুইচগুলো এন্ড সিস্টেমগুলোর মধ্যে ডেটা আদান-প্রদানে সাহায্য করে, কিন্তু কোন অ্যাপ্লিকেশন ডেটার উৎস বা গন্তব্য, তা নিয়ে তাদের কোনো মাথাব্যথা থাকে না। তারা শুধু প্যাকেটগুলোকে তাদের গন্তব্যে পৌঁছে দেওয়ার কাজটা করে।


অ্যাপ্লিকেশনকে সেবা দেওয়া: ইন্টারনেট কিভাবে কাজ করে?

ধরুন, আপনার কাছে ডিস্ট্রিবিউটেড ইন্টারনেট অ্যাপ্লিকেশনের একটা দারুণ নতুন আইডিয়া আছে, যেটা হয়তো মানুষের অনেক উপকার করবে, অথবা আপনাকে ধনী আর বিখ্যাত বানিয়ে দেবে। এই আইডিয়াটাকে কিভাবে একটা সত্যিকারের ইন্টারনেট অ্যাপ্লিকেশনে রূপান্তরিত করবেন?

এখন প্রশ্ন হলো, আপনি কীভাবে এই আইডিয়াটিকে একটি বাস্তব ইন্টারনেট অ্যাপ্লিকেশনে পরিণত করবেন?

কারণ অ্যাপ্লিকেশনগুলো চলে ব্যবহারকারীর কম্পিউটার বা মোবাইল ফোনে—যাকে বলা হয় end system। সুতরাং, আপনাকে এমন প্রোগ্রাম লিখতে হবে যা এই end system এ চলবে। আপনি চাইলে Java, C অথবা Python ব্যবহার করে এই প্রোগ্রাম লিখতে পারেন।

তবে যেহেতু এটি একটি distributed application—অর্থাৎ, এটি একাধিক ডিভাইসে চলবে এবং একে অপরের সঙ্গে তথ্য আদান-প্রদান করবে—তাই বিভিন্ন ডিভাইসে চলা প্রোগ্রামগুলোর মধ্যে যোগাযোগ করার দরকার হবে।

এখানেই একটি গুরুত্বপূর্ণ প্রশ্ন উঠে আসে, যা ইন্টারনেটকে অ্যাপ্লিকেশনের প্ল্যাটফর্ম হিসেবে বর্ণনা করার বিকল্প উপায়ের দিকে পরিচালিত করে। কীভাবে একটা এন্ড সিস্টেমে চলা প্রোগ্রাম ইন্টারনেটকে নির্দেশ দেবে যে অন্য এন্ড সিস্টেমে চলা আরেকটা প্রোগ্রামের কাছে ডেটা পৌঁছে দিতে হবে?


ইন্টারনেটের সাথে যুক্ত এন্ড সিস্টেমগুলো একটি সকেট ইন্টারফেস (socket interface) সরবরাহ করে। এই ইন্টারফেসটি নির্দিষ্ট করে দেয় যে, একটি এন্ড সিস্টেমে চলা প্রোগ্রাম কীভাবে ইন্টারনেট অবকাঠামোকে বলবে অন্য এন্ড সিস্টেমে চলা একটি নির্দিষ্ট গন্তব্যের প্রোগ্রামের কাছে ডেটা পৌঁছে দিতে। এই ইন্টারনেট সকেট ইন্টারফেস হলো কিছু নিয়মের সমষ্টি, যা ডেটা প্রেরণকারী প্রোগ্রামকে অবশ্যই মেনে চলতে হবে, যাতে ইন্টারনেট ডেটাগুলো গন্তব্যের প্রোগ্রামের কাছে পৌঁছে দিতে পারে। আমরা দ্বিতীয় অধ্যায়ে ইন্টারনেট সকেট ইন্টারফেস নিয়ে বিস্তারিত আলোচনা করব।

একটি সহজ উদাহরণ: চিঠির এনালজি

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

অর্থাৎ, পোস্টাল সার্ভিসের নিজস্ব "পোস্টাল সার্ভিস ইন্টারফেস" বা নিয়মের একটি সেট আছে, যা তামিমকে অবশ্যই মেনে চলতে হবে যাতে পোস্টাল সার্ভিস তার চিঠিটা মিশুর কাছে পৌঁছে দেয়। একইভাবে, ইন্টারনেটেরও একটি সকেট ইন্টারফেস আছে যা ডেটা প্রেরণকারী প্রোগ্রামকে অবশ্যই মেনে চলতে হবে, যাতে ইন্টারনেট ডেটাগুলো গ্রহণকারী প্রোগ্রামের কাছে পৌঁছে দিতে পারে।


ইন্টারনেটের বিভিন্ন পরিষেবা

পোস্টাল সার্ভিস, অবশ্যই, তার গ্রাহকদের একাধিক সেবা প্রদান করে। যেমন: এক্সপ্রেস ডেলিভারি, রসিদ নিশ্চিতকরণ (reception confirmation), সাধারণ ব্যবহার, এবং আরও অনেক সেবা । একইভাবে, ইন্টারনেটও তার অ্যাপ্লিকেশনগুলোকে বিভিন্ন সেবা প্রদান করে। যখন আপনি একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করবেন, তখন আপনার অ্যাপ্লিকেশনটির জন্য ইন্টারনেটের একটি সেবা বেছে নিতে হবে। আমরা দ্বিতীয় অধ্যায়ে ইন্টারনেটের এই সেবাগুলো সম্পর্কে বিস্তারিত বর্ণনা করব।


আমরা এইমাত্র ইন্টারনেটের দুটি বর্ণনা দিলাম; একটি তার হার্ডওয়্যার এবং সফটওয়্যার উপাদানগুলোর ভিত্তিতে, অন্যটি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোকে সেবা প্রদানের অবকাঠামো হিসেবে। কিন্তু ইন্টারনেট আসলে কী, তা নিয়ে আপনার মনে হয়তো এখনও কিছু বিভ্রান্তি আছে। প্যাকেট সুইচিং এবং TCP/IP কী? রাউটার কী? ইন্টারনেটে কী ধরনের কমিউনিকেশন লিংক আছে? একটি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন কী? একটি থার্মোস্ট্যাট বা শরীরের ওজন মাপার স্কেল কিভাবে ইন্টারনেটে সংযুক্ত হতে পারে?

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

১.১.৩ প্রোটোকল মানে কী?:

প্রোটোকল কী এবং কেন এটা দরকার, তা নিয়ে আলোচনা।

প্রোটোকল কী?

প্রোটোকল হলো কিছু নিয়মকানুন যা কম্পিউটার নেটওয়ার্কে তথ্য পাঠানো ও গ্রহণ করার পদ্ধতিকে নিয়ন্ত্রণ করে। যখন দুটি কম্পিউটার বা ডিভাইস একে অপরের সাথে যোগাযোগ করতে চায়, তখন তারা কী ভাষায় কথা বলবে, কিভাবে কথা বলবে, কখন চুপ থাকবে বা কখন উত্তর দেবে – এই সবকিছুরই একটা নির্দিষ্ট সেট অফ রুলস বা নিয়ম লাগে। এই নিয়মগুলোকেই প্রোটোকল বলা হয়।

কম্পিউটার নেটওয়ার্ক প্রোটোকল কী, তা বোঝার সবচেয়ে সহজ উপায় সম্ভবত কিছু মানুষের আচরণের উদাহরণ দেখা। কারণ, আমরা মানুষরা সারাক্ষণই প্রোটোকল মেনে চলি।

কম্পিউটার নেটওয়ার্ক প্রোটোকল কী, সেটা বোঝার সবচেয়ে সহজ উপায় হলো মানুষের কিছু আচরণ খেয়াল করা, কারণ আমরা মানুষরা সবসময়ই প্রোটোকল মেনে চলি।

ধরুন, আপনি কারো কাছে সময় জানতে চাইলেন। চিত্র ১.২-এ যেমন দেখানো হয়েছে, সাধারণত এমন একটা কথোপকথন হয়। আমাদের মানুষের প্রোটোকল (বা অন্তত ভালো আচরণ) বলে যে, প্রথমে কারো সাথে কথা শুরু করার জন্য একটা সম্ভাষণ জানানো উচিত (চিত্র ১.২-এর প্রথম "হাই")। "হাই" বললে সাধারণত উত্তরও "হাই" আসে। এই বন্ধুত্বপূর্ণ "হাই" পেলে আমরা ধরে নিই যে আমরা এবার মূল প্রশ্নটা (যেমন সময় কত) করতে পারি।

চিত্র ১.২ : একটি মানব প্রোটোকল এবং একটি কম্পিউটার নেটওয়ার্ক প্রোটোকল

কিন্তু যদি শুরুর "হাই" এর জবাবে ভিন্ন কিছু আসে (যেমন "বিরক্ত করো না!" অথবা "আমি ইংরেজি জানি না," অথবা আরও খারাপ কিছু), তাহলে বোঝা যায় যে সে কথা বলতে আগ্রহী নয় বা অক্ষম। এই ক্ষেত্রে, আমাদের মানবীয় প্রোটোকল অনুযায়ী আর সময় জানতে চাওয়া উচিত নয়। কখনও কখনও প্রশ্নের কোনো উত্তরই আসে না; তখন আমরা সাধারণত সেই ব্যক্তিকে আর সময় জিজ্ঞাসা করার চেষ্টা করি না।

লক্ষ্য করুন, আমাদের এই মানবীয় প্রোটোকলে কিছু নির্দিষ্ট মেসেজ আমরা পাঠাই, এবং পাওয়া উত্তরের (বা কোনো উত্তর না পাওয়ার মতো ঘটনা) ওপর ভিত্তি করে কিছু নির্দিষ্ট কাজ করি। পরিষ্কারভাবে, পাঠানো ও গ্রহণ করা মেসেজ এবং সেই মেসেজগুলো পাঠানো বা গ্রহণ করার পর অথবা অন্য কোনো ঘটনা ঘটলে যে কাজগুলো করা হয়, সেগুলো একটি মানবীয় প্রোটোকলে খুব গুরুত্বপূর্ণ ভূমিকা পালন করে।

যদি ভিন্ন ভিন্ন প্রোটোকল মেনে চলে (উদাহরণস্বরূপ, যদি একজন ভদ্র হয় কিন্তু অন্যজন অভদ্র, অথবা একজন সময়ের ধারণা বোঝে কিন্তু অন্যজন বোঝে না), তাহলে প্রোটোকলগুলো একসাথে কাজ করবে না এবং কোনো কাজের কাজ হবে না। নেটওয়ার্কিংয়েও একই কথা খাটে—একটি কাজ সম্পন্ন করার জন্য দুই (বা তার বেশি) যোগাযোগকারী সত্তাকে একই প্রোটোকল মেনে চলতে হয়।


এবার দ্বিতীয় একটি মানবীয় উদাহরণের কথা ভাবি। ধরুন, আপনি কলেজের ক্লাসে বসে আছেন (যেমন কম্পিউটার নেটওয়ার্কিং ক্লাসে!)। শিক্ষক প্রোটোকল নিয়ে একঘেয়ে কথা বলে যাচ্ছেন আর আপনি কিছুই বুঝতে পারছেন না।

হঠাৎ শিক্ষক থেমে গিয়ে জিজ্ঞেস করলেন, "কারও কোনো প্রশ্ন আছে?" (এটা একটা মেসেজ, যা ক্লাসের সব ছাত্রছাত্রীর কাছে পৌঁছেছে, যারা ঘুমিয়ে নেই)। আপনি তখন হাত তুললেন (শিক্ষকের কাছে একটি অব্যক্ত মেসেজ পাঠালেন)। আপনার শিক্ষক হাসি দিয়ে আপনাকে সম্মতি জানালেন, বললেন "হ্যাঁ..." (এটি একটি প্রেরিত মেসেজ, যা আপনাকে প্রশ্ন করতে উৎসাহিত করছে—শিক্ষকরা প্রশ্ন পেলে খুব খুশি হন), এবং আপনি তখন আপনার প্রশ্নটি করলেন (অর্থাৎ, আপনার মেসেজটি শিক্ষককে পাঠালেন)।

আপনার শিক্ষক আপনার প্রশ্ন শুনলেন (আপনার প্রশ্নের মেসেজটি গ্রহণ করলেন) এবং উত্তর দিলেন (আপনাকে একটি উত্তর পাঠিয়ে দিলেন)।

এখানেও আমরা দেখতে পাচ্ছি যে, মেসেজ পাঠানো ও গ্রহণ করা, এবং এই মেসেজগুলো পাঠানো ও গ্রহণ করার পর কিছু প্রচলিত কাজ করা—এগুলোই এই প্রশ্ন-উত্তরের প্রোটোকলের মূল ভিত্তি।


নেটওয়ার্ক প্রোটোকল

একটি নেটওয়ার্ক প্রোটোকল মানুষের প্রোটোকলের মতোই, তবে এখানে মেসেজ আদান-প্রদানকারী এবং কাজ সম্পাদনকারী সত্তাগুলো হলো কোনো ডিভাইসের (যেমন কম্পিউটার, স্মার্টফোন, ট্যাবলেট, রাউটার বা অন্য কোনো নেটওয়ার্ক-সক্ষম ডিভাইস) হার্ডওয়্যার বা সফটওয়্যার উপাদান।

ইন্টারনেটে যত ধরনের কাজ হয়, যেখানে দুটি বা তার বেশি দূরবর্তী সত্তার মধ্যে যোগাযোগ জড়িত, তা সবই একটি প্রোটোকল দ্বারা নিয়ন্ত্রিত হয়।

উদাহরণ হিসেবে:

  • দুটি কম্পিউটার সরাসরি তারের মাধ্যমে যুক্ত থাকলে, তাদের নেটওয়ার্ক ইন্টারফেস কার্ড (NIC)-এর মধ্যে তথ্য পাঠানোর নিয়ন্ত্রণ করে হার্ডওয়্যারে তৈরি বিশেষ প্রোটোকল।

  • প্রেরক এবং গ্রহীতার মধ্যে ডেটা পাঠানোর গতি নির্ধারণ করে congestion-control protocols

  • রাউটারগুলো কোন প্যাকেট কোন পথ ধরে গন্তব্যে যাবে, তা নির্ধারণ করে নিজস্ব প্রোটোকলের মাধ্যমে।

যখন আপনি একটি ওয়েব ব্রাউজারে কোনো ওয়েবপেজের URL লিখে এন্টার চাপেন, তখন আসলে কী ঘটে তা ভাবুন।

চিত্র ১.২-এর ডান পাশে এই প্রক্রিয়াটি দেখানো হয়েছে।

  1. প্রথমে, আপনার কম্পিউটার ওয়েব সার্ভারে একটি সংযোগের অনুরোধ (connection request message) পাঠায় এবং উত্তরের জন্য অপেক্ষা করে।

  2. ওয়েব সার্ভারটি আপনার অনুরোধটি পেলে একটি সংযোগ নিশ্চিতকরণের উত্তর (connection reply message) পাঠায়।

  3. আপনার কম্পিউটার যখন জানতে পারে যে এবার ওয়েব ডকুমেন্টটি চাওয়া ঠিক হবে, তখন এটি একটি 'GET' মেসেজ পাঠিয়ে ওয়েব সার্ভারকে সেই ওয়েবপেজের নাম জানায়।

  4. সবশেষে, ওয়েব সার্ভারটি সেই অনুরোধ করা ওয়েবপেজটি (ফাইল) আপনার কম্পিউটারে পাঠিয়ে দেয়।

    এই পুরো প্রক্রিয়াটি HTTP (Hypertext Transfer Protocol) নামক একটি প্রোটোকল মেনে চলে। এটি ওয়েব ক্লায়েন্ট (আপনার ব্রাউজার) এবং ওয়েব সার্ভারের মধ্যে যোগাযোগের নিয়মগুলো নির্ধারণ করে।


উপরে মানুষের এবং নেটওয়ার্কিংয়ের উদাহরণগুলো থেকে আমরা বুঝতে পারি যে, মেসেজ আদান-প্রদান এবং এই মেসেজগুলো পাঠানো ও গ্রহণ করার সময় যে কাজগুলো করা হয়, সেগুলোই প্রোটোকলের মূল বৈশিষ্ট্য।

একটি প্রোটোকল দুই বা তার বেশি যোগাযোগকারী সত্তার মধ্যে আদান-প্রদান হওয়া মেসেজের বিন্যাস (format) এবং ক্রম (order) নির্ধারণ করে। একই সাথে, কোনো মেসেজ পাঠানো বা গ্রহণ করার পর অথবা অন্য কোনো ঘটনা ঘটলে কী ধরনের কাজ করতে হবে, সেটাও প্রোটোকল ঠিক করে দেয়।

ইন্টারনেট এবং সাধারণ কম্পিউটার নেটওয়ার্কগুলো ব্যাপকভাবে প্রোটোকল ব্যবহার করে। বিভিন্ন যোগাযোগের কাজ সম্পন্ন করার জন্য বিভিন্ন প্রোটোকল ব্যবহৃত হয়।

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

More from this blog

ডাটা স্ট্রাকচার এবং এলগোরিদম কি ?

আজকের পর্বে আমরা ডাটা স্ট্রাকচার এবং এলগোরিদম কি এবং ডাটা স্ট্রাকচার এবং এলগোরিদম এর প্রয়োজনীয়তা কি? কেন আমাদের ডাটা স্ট্রাকচার এবং এলগোরিদম শিখা উচিত এই নিয়ে বিস্তারিত আলোচনা করবো ইনশাআল্লাহ। ডাটা স্ট্রাকচার কি ?In computer science, a data structure...

Mar 11, 20243 min read22

কেন কমান্ড লাইন শিখা উচিত?

কমান্ড লাইন শিখার পূর্বে আমরা জানার চেষ্টা করি কেন আমাদের কমান্ড লাইন শিখা উচিত? ওয়েব ডেভেলপার, ডাটা সায়েন্টিস্ট, ডেভঅপস ইঞ্জিনিয়ার, সিস্টেম অ্যাডমিন, সিকিউরিটি অ্যাডমিন, মেশিন লার্নিং ইঞ্জিনিয়ার যা ই আপনি হতে চান না কেন দৈনন্দিন কাজে আপনাকে কমান্ড ল...

Jun 7, 20233 min read47

টাইম কমপ্লেক্সিটি, স্পেস কমপ্লেক্সিটি, বিগ ও নোটেশন(পর্ব-০৩)

টাইম কমপ্লেক্সিটি, স্পেস কমপ্লেক্সিটি, বিগ ও নোটেশন(পর্ব ০২) এ আমরা কনস্ট্যান্ট টাইম এলগোরিদম Big O(1) নিয়ে কথা বলছিলাম। আজকে আমরা অন্যান্য টাইম কমপ্লেক্সিটিগুলো নিয়ে কথা বলবো ইনশাআল্লাহ। প্রথমে একটা একটা প্রোগ্রামিং সমস্যা নিয়ে কথা বলি। ধরেন একটা অ্...

Nov 10, 20225 min read93

জাভাস্ক্রিপ্ট স্টেটমেন্ট এবং এক্সপ্রেশন

প্রোগ্রামিং শেখার শুরুর দিকে স্টেটমেন্ট এবং এক্সপ্রেশন এই দুইটা কথা আমরা হরহামেশায় শুনে থাকি। কিন্তু হটাৎ করে যখন কেউ জিজ্ঞেস করে স্টেটমেন্ট কি আর এক্সপ্রেশন কি? এই দুইটার মধ্যে পার্থ্ক্য কি ? এই রকম প্রশ্ন শোনার পর আমরা একটু কনফিউশন এ থাকি অথবা ব্যা...

Oct 28, 20223 min read138

Untitled Publication

10 posts