নেটওয়ার্ক অ্যাপ্লিকেশনগুলো হল সেই কম্পিউটার অ্যাপ্লিকেশনগুলো যা কম্পিউটার নেটওয়ার্কে অংশ নেয়। এই অ্যাপ্লিকেশনগুলো নেটওয়ার্কে প্লাগ-ইন করে একে অপরের সাথে কথা বলে।
উদাহরণস্বরূপ, যখন আপনি google.com ভিজিট করেন, আপনার ব্রাউজার একটি নেটওয়ার্ক অ্যাপ্লিকেশন হিসেবে ইন্টারনেট ব্যবহার করে গুগলের কম্পিউটারে চলমান নেটওয়ার্ক অ্যাপ্লিকেশনের সাথে যোগাযোগ করে।
সাধারণত, এই যোগাযোগের মেকানিক্স একটি অ্যাপ্লিকেশন ডেভেলপার থেকে অভাস্ট্র্যাক্ট (তালিয়ে) থাকা।
বাহ্যিকভাবে, এই যোগাযোগ একই কম্পিউটারে চলমান দুটি অ্যাপ্লিকেশনের মধ্যে ইন্টার-প্রসেস কমিউনিকেশনের মতো দেখতে পারে। কিন্তু, নেটওয়ার্ক যোগাযোগের চ্যালেঞ্জগুলো ভিন্ন।
উদাহরণস্বরূপ, কম্পিউটার টাইমে যোগাযোগ নিতে পারে অনন্ত সময়। পৃথিবীর চারপাশে আলোর ভ্রমণের সময় ০.১৩৩৭ সেকেন্ড (২ × ৩.১৪ × ৬৪০০ / ৩০০০০)। একটি সাধারণ ১GHz CPU ১ সেকেন্ডে ১০⁹ অপারেশন সম্পাদন করতে পারে।
মান लीজिए একই মেশিনে চলমান প্রসেসরা যোগাযোগের জন্য কয়েকটি অপারেশন নেয়, মোটামুটি ১০⁻⁷ - ১০⁻⁸ সেকেন্ড। এর মানে পৃথিবীর অন্য প্রান্তে থাকা কম্পিউটারের সাথে যোগাযোগ প্রায় ১ মিলিয়ন গুণ ধীর!
এই আর্টিকেলে আমরা দেখব কীভাবে নেটওয়ার্ক অ্যাপ্লিকেশনগুলো একে অপরের সাথে কথা বলে, বিশেষ করে ইন্টারনেটের মাধ্যমে। ইন্টারনেটের হাই-লেভেল ওভারভিউ জন্য এই আর্টিকেলটি দেখুন।
কম্পিউটার নেটওয়ার্কের পরিচিতি
নেটওয়ার্ক যোগাযোগে একটি অতিরিক্ত জটিলতা হল এন্ড সিস্টেমগুলোর বৈচিত্র্য (মোবাইল ফোন, ল্যাপটপ, উইন্ডোজ, ম্যাকে)। এই জটিলতাকে পার্থক্যগুলো অভাস্ট্র্যাক্ট করে এবং একই রকম নিয়মের সেট - প্রোটোকল - পরিচয় করিয়ে দিয়ে ম্যানেজ করা হয়।
প্রোটোকলগুলো নেটওয়ার্ক অ্যাপ্লিকেশনগুলোর মধ্যে যোগাযোগের বিল্ডিং ব্লক। জনপ্রিয় প্রোটোকলগুলোর মধ্যে রয়েছে HTTP, TCP, IP, SMTP। যেন মানব ভাষা (যেমন ইংরেজি) বিভিন্ন মানুষকে অর্থবহভাবে যোগাযোগ করতে সক্ষম করে, প্রোটোকলও নেটওয়ার্ক যোগাযোগে সেক্ষেত্রে hasonló 역할을 পালন করে।
নেটওয়ার্ক যোগাযোগ নেটওয়ার্কের স্কেল এবং অনিশ্চয়তার কারণে চ্যালেঞ্জিং।
উদাহরণস্বরূপ, লিংকগুলো জ্যাম থাকতে পারে, যার ফলে প্যাকেট ড্রপ হয়। একটি জটিল সমস্যা সমাধানের একটি কৌশল হল সমস্যাটিকে উপ-সমস্যাগুলোতে ভাগ করা, উপ-সমস্যাগুলো সমাধান করা, এবং সেগুলো একসাথে মিলিয়ে মূল সমস্যা সমাধান করা।
প্রোটোকল স্ট্যাক এই ধারণা ব্যবহার করে নেটওয়ার্ক যোগাযোগ সমাধান করে।

কল্পনা করুন আপনি পিজা বেক্রি করার একটি ওয়েবসাইট বানাচ্ছেন। ব্যবহারকারী আপনার ওয়েবসাইটের সাথে ইন্টারঅ্যাক্ট করলে, ফ্রন্টএন্ডকে আপনার ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করতে হবে। কতটা ভালো হত যদি আপনি আপনার অনলাইন পিজা স্টোর বানাতে ফোকাস করতে পারতেন, ডেটা কীভাবে ফ্রন্টএন্ড থেকে ব্যাকএন্ড সার্ভারে ইন্টারনেটের মাধ্যমে পাস হয় সেটা চিন্তা না করে?
প্রোটোকল স্ট্যাক নেটওয়ার্ক যোগাযোগের যত্ন নেয়। একটি অ্যাপ্লিকেশন (ফ্রন্টএন্ড) অ্যাপ্লিকেশন লেয়ার ব্যবহার করে অন্য একটি অ্যাপ্লিকেশন (ব্যাকএন্ড) এর সাথে যোগাযোগ করে।
অ্যাপ্লিকেশন লেয়ার ট্রান্সপোর্ট লেয়ার দ্বারা প্রদত্ত "সার্ভিস" ব্যবহার করে নেটওয়ার্ক জুড়ে তথ্য প্রেরণ করে। ট্রান্সপোর্ট লেয়ারও নেটওয়ার্ক লেয়ার দ্বারা প্রদত্ত সার্ভিস ব্যবহার করে তার সার্ভিস অগ্রিমেন্ট পূরণ করে।
এইভাবে, العليا লেয়ার নিচের লেয়ারগুলো দ্বারা প্রদত্ত সার্ভিস ব্যবহার করে নেটওয়ার্ক জুড়ে অন্যান্য অ্যাপ্লিকেশনের সাথে যোগাযোগ করে। ফিজিক্যাল লেয়ার ওই তারগুলো গঠন করে যা ইলেকট্রিক্যাল সিগন্যাল বহন করে।
মৌলিকভাবে, প্রোটোকল স্ট্যাকে বিভিন্ন লেয়ার থাকে, যেখানে প্রতিটি লেয়ার বড় সমস্যার একটি অংশ সমাধানে ফোকাস করে।
প্রোটোকলগুলো উপ-সমস্যাগুলোর সমাধান বর্ণনা করে, যেটা আমাদের প্রোটোকল স্ট্যাক নাম দেয়। সাধারণত, প্রোটোকল দুই 엔টিটির মধ্যে যোগাযোগের নিয়ম নির্ধারণ করে, যেনঃ
- বার্তার ধরন, উদাহরণস্বরূপ রিকোয়েস্ট এবং রেসপন্স বার্তা
- বিভিন্ন বার্তার ধরনের সিনট্যাক্স যেমন বার্তার ফিল্ডগুলো
- ফিল্ডগুলোর সেম্যান্টিক্স, অর্থাৎ ফিল্ডে থাকা তথ্যের অর্থ
- বার্তা কখন এবং কীভাবে পাঠানো এবং রেসপন্স দেওয়া হবে তার নিয়ম
চলুন প্রোটোকল স্ট্যাকের গভীরে যাই, উপরের লেয়ার থেকে শুরু করে।
অ্যাপ্লিকেশন লেয়ার
ব্যবসায়িক অ্যাপ্লিকেশনগুলো নেটওয়ার্ক জুড়ে যোগাযোগের জন্য অ্যাপ্লিকেশন লেয়ার ব্যবহার করে। উদাহরণস্বরূপ, আপনার অনলাইন পিজা স্টোরে অর্ডার দেতে অ্যাপ্লিকেশন লেয়ার ব্যবহার করা হয়। HTTP হল আপনার ব্যাকএন্ড সার্ভারে তথ্য পোস্ট করার একটি অপশন।
অ্যাপ্লিকেশন লেয়ার প্রোটোকল নির্ধারণ করে যে বিভিন্ন এন্ড সিস্টেমে চলমান অ্যাপ্লিকেশনগুলো একে অপরের কাছে কীভাবে বার্তা পাস করে। যোগাযোগের নিয়ম (প্রোটোকল) ছাড়া, অ্যাপ্লিকেশনগুলোর একে অপরের খুঁজে বের করার উপায়ও দরকার, অর্থাৎ একে অপরের ঠিকানা জানা। একটি অ্যাপ্লিকেশন ঠিকানা নির্ধারিত হয়:
- IP ঠিকানা: একটি এন্ড সিস্টেমেアサাইন করা সাংখ্যিক লেবেল
- পোর্ট নম্বর: একটি আইডেন্টিফায়ার যা গন্তব্য হোস্টে রিসিভিং প্রসেস নির্দিষ্ট করে। পোর্ট নম্বর একই হোস্টে একাধিক নেটওয়ার্ক অ্যাপ্লিকেশন চলার জন্য অপরিহার্য। উদাহরণস্বরূপ, একটি ওয়েব ব্রাউজারের দুটি ট্যাব দুটি আলাদা প্রসেস হিসেবে কাজ করে।
একটি অ্যাপ্লিকেশনের ঠিকানা নেটওয়ার্কে তার পরিচয় নির্ধারণ করে, এবং প্রোটোকল যোগাযোগের নিয়ম নির্ধারণ করে। একসাথে, এগুলো সকেট ঠিকানা (প্রোটোকল টাইপ, IP ঠিকানা, পোর্ট নম্বর) গঠন করে।
একটি সকেট হল অ্যাপ্লিকেশন লেয়ার এবং ট্রান্সপোর্ট লেয়ারের মধ্যে ইন্টারফেস। এটি নেটওয়ার্কে এন্ট্রি পয়েন্ট হিসেবে কাজ করে, অর্থাৎ একটি অ্যাপ্লিকেশন তার সকেটের মাধ্যমে বার্তা পাঠায় এবং নেটওয়ার্ক বার্তা গ্রহণ করে।
সংক্ষেপে, অ্যাপ্লিকেশনগুলো অ্যাপ্লিকেশন লেয়ার প্রোটোকল ব্যবহার করে একে অপরের সাথে কথা বলে। অ্যাপ্লিকেশন লেয়ার ট্রান্সপোর্ট লেয়ার দ্বারা প্রদত্ত সার্ভিসের উপর নির্ভর করে এন্ড সিস্টেমের মধ্যে ডেটা পাস করে। IP ঠিকানা এবং পোর্ট নম্বরের জোড়া একটি অ্যাপ্লিকেশনকে চিহ্নিত করে। তথ্য একটি অ্যাপ্লিকেশন থেকে তার সকেটের মাধ্যমে নেটওয়ার্কে প্রবাহিত হয়।
HTTP ব্যবহার করে ইন্টারনেট জুড়ে দুটি অ্যাপ্লিকেশন কীভাবে যোগাযোগ করে তার একটি উদাহরণ দেখি।
HTTP একটি জনপ্রিয় অ্যাপ্লিকেশন লেয়ার প্রোটোকল। যোগাযোগ হচ্ছে আমার ওয়েব ব্রাউজার এবং একটি অ্যাপ্লিকেশন সার্ভার (ilovecookies.com) এর মধ্যে। যখন আমি এই ঠিকানা আমার ওয়েব ব্রাউজারে লিখি, এটি অ্যাপ্লিকেশন সার্ভারে একটি HTTP রিকোয়েস্ট বার্তা পাঠায়।

এই রিকোয়েস্ট বার্তার কিছু বিষয় লক্ষ্য করুন:
- রিকোয়েস্টের ধরন GET
- যে হোস্টে বার্তা পাঠানো হচ্ছে তা ilovecookies.com (IP ঠিকানার মানব-পাঠযোগ্য সংস্করণ যাকে হোস্টনেম বলা হয়)
- সোর্স মেশিন নির্দিষ্ট রেসপন্স ফরম্যাট, ভাষা ইত্যাদি গ্রহণ করে।
এই কাঠামো HTTP-এর অংশ যা দুটি অ্যাপ্লিকেশনের মধ্যে যোগাযোগের নিয়ম নির্ধারণ করে। হোস্ট অ্যাপ্লিকেশন এই বার্তা পেলে, একটি রেসপন্স বার্তা দিয়ে জবাব দেয়।

আমরা দেখতে পাচ্ছি যে রেসপন্স বার্তাতে প্রোটোকল-নির্দিষ্ট ডেটা যেমন স্ট্যাটাস কোড (২০০), কন্টেন্ট টাইপ ইত্যাদি এবং HTML ডেটা (ফিট করার জন্য সংক্ষিপ্ত) রয়েছে। রিকোয়েস্ট-রেসপন্স জোড়াটি দুটি অ্যাপ্লিকেশনের মধ্যে নেটওয়ার্ক যোগাযোগ সফলভাবে সাজিয়ে দেয় যা আমার স্ক্রিনে ওয়েবপেজ (ilovecookies.com) দেখায়।
ট্রান্সপোর্ট লেয়ার
এখন প্রোটোকল স্ট্যাকে এক লেয়ার নিচে যাই এবং বুঝি ট্রান্সপোর্ট লেয়ার কীভাবে নেটওয়ার্ক যোগাযোগে সাহায্য করে।
ট্রান্সপোর্ট লেয়ার লজিক্যাল যোগাযোগ প্রদান করে বিভিন্ন হোস্টে চলমান অ্যাপ্লিকেশনগুলোর মধ্যে: একটি অ্যাপ্লিকেশন দৃষ্টিকোণ থেকে, যেন দুটি হোস্ট সরাসরি সংযুক্ত। মনে রাখবেন যে ট্রান্সপোর্ট লেয়ার দ্বারা প্রদত্ত যোগাযোগ লজিক্যাল, ফিজিক্যাল নয়: এন্ড হোস্টের মধ্যে কোনো সরাসরি লিংক বা তার নেই।
ট্রান্সপোর্ট লেয়ার অ্যাপ্লিকেশন বার্তাগুলো ছোট ছোট টুকরোতে ভাগ করে, প্রতিটি টুকরোকে হেডার সহ ট্রান্সপোর্ট বার্তায় এনক্যাপসুলেট করে, এবং নেটওয়ার্ক লেয়ারে পাস করে।
তথ্যকে টুকরোতে ভাগ করার কারণ হল কার্যকর নেটওয়ার্ক ব্যবহার। ইন্টারনেট इतना বড় যে দুটি এন্ড হোস্টের মধ্যে ডেটা ট্রান্সমিশনের জন্য অনেক প্যারালেল পাথ থাকে।
উদাহরণস্বরূপ, নিউ ইয়র্ক এবং স্ট্যামফোর্ডের মধ্যে ভ্রমণের দুটি সম্ভাব্য পাথ আছে। ইন্টারনেট এই ধারণার কিছুটা চরম সংস্করণ।

চাকিং এবং কার্যকর নেটওয়ার্ক ব্যবহার حولها প্যাকেটের আপেক্ষিক ক্রম একটি স্বাভাবিক প্রশ্ন: টুকরোগুলো রিসিভিং হোস্টে সঠিক ক্রমে জুড়ে ফেলা উচিত। রিসিভিং হোস্টের ট্রান্সপোর্ট লেয়ার টুকরোগুলো সঠিক ক্রমে জুড়ে ফেলার দায়িত্বে।
ট্রান্সপোর্ট লেয়ারও তার ফাংশনগুলোর জন্য কিছু অতিরিক্ত ডেটা প্রয়োজন। উদাহরণস্বরূপ, অ্যাপ্লিকেশন বার্তা জুড়ে ফেলার জন্য টুকরোগুলোতে আপেক্ষিক সিকোয়েন্স নম্বর যোগ করা হয়।
ট্রান্সপোর্ট লেয়ার-নির্দিষ্ট তথ্যের আর একটি উদাহরণ হল পোর্ট নম্বর। রিসিভিং হোস্টে, ডেস্টিনেশন পোর্ট নম্বর বার্তাটি সঠিক অ্যাপ্লিকেশনে রুট করতে সাহায্য করে।
ইন্টারনেট দুটি ট্রান্সপোর্ট লেয়ার প্রোটোকল উপলব্ধ করে:
- ইউজার ডেটাগ্রাম প্রোটোকল (UDP)
- ট্রান্সমিশন কন্ট্রোল প্রোটোকল (TCP)
দুটি প্রোটোকল অ্যাপ্লিকেশন লেয়ারের জন্য ট্রান্সপোর্ট সার্ভিসে কিছুটা পার্থক্য রাখে।
| TCP | UDP |
|---|---|
| নির্ভরযোগ্য ডেটা ট্রান্সফার | অনির্ভরযোগ্য ডেটা ট্রান্সফার |
| হারানো বা করাপ্ট তথ্য রি-ট্রান্সমিশন দ্বারা পুনরুদ্ধার করা হয় | হারানো বা করাপ্ট ডেটা পুনরুদ্ধারের কোনো মেকানিজম নেই |
| নির্ভরযোগ্য যোগাযোগের লাগি বেশি লেটেন্সি | অনির্ভরযোগ্য যোগাযোগের লাগি কম লেটেন্সি |
একটি অ্যাপ্লিকেশনের সার্ভিস প্রয়োজনীয়তা নির্ধারণ করে আপনি কোন প্রোটোকল বেছে নেবেন। উদাহরণস্বরূপ, একটি পেমেন্ট সিস্টেমে নিশ্চিত যোগাযোগের প্রয়োজন (TCP), যেখানে একটি ভিডিও স্ট্রিমিং সার্ভিস দ্রুত স্ট্রিমিংর জন্য কিছু তথ্য হারাতে পারবে (UDP)।
সংক্ষেপে, ট্রান্সপোর্ট লেয়ার অ্যাপ্লিকেশন বার্তাগুলো টুকরোতে ভাগ করে এবং ট্রান্সপোর্ট লেয়ার-নির্দিষ্ট তথ্য সহ বার্তায় এনক্যাপসুলেট করে। টুকরোগুলো রিসিভিং সিস্টেমে সঠিক ক্রমে জুড়ে ফেলা হয় বার্তা পুনরুদ্ধার করতে এবং পোর্ট নম্বর ব্যবহার করে উপযুক্ত অ্যাপ্লিকেশনে পাস করা হয়।
আমাদের HTTP উদাহরণ যোগাযোগ চালিয়ে যাই আমার ওয়েব ব্রাউজার এবং অ্যাপ্লিকেশন সার্ভারের মধ্যে।

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

HTTP রেসপন্স (৫৭ TCP প্যাকেট) এর প্রথম দুটি প্যাকেট এখানে দেখানো হয়েছে। দুটি ছবির নিচে ডান পাশে HTTP-নির্দিষ্ট তথ্য এবং ilovecookies.com ওয়েবপেজের কিছু HTML দেখা যাচ্ছে।
ট্রান্সপোর্ট লেয়ার-নির্দিষ্ট তথ্যও দেখতে পাচ্ছেন যেমন পোর্ট নম্বর এবং সিকোয়েন্স নম্বর। লক্ষ্য করুন রিকোয়েস্ট বার্তার প্যাকেটের তুলনায় সোর্স এবং ডেস্টিনেশন পোর্ট নম্বর উল্টে গেছে।
নেটওয়ার্ক লেয়ার
ট্রান্সপোর্ট লেয়ারের বিপরীতে, নেটওয়ার্ক লেয়ার দুই এন্ড হোস্টের মধ্যে লজিক্যাল যোগাযোগ প্রদান করে। ট্রান্সপোর্ট এবং নেটওয়ার্ক লেয়ার সার্ভিসের মধ্যে এই সূক্ষ্ম পার্থক্য লক্ষ্য করুন।

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

মান लीজिए এন্ড হোস্ট ১, এন্ড হোস্ট ২-এ একটি প্যাকেট পাঠাতে চায়। এন্ড হোস্ট ১ প্যাকেটটি রাউটারের কাছে পাস করে। রাউটার নেটওয়ার্ক প্যাকেটের তথ্য দেখে বুঝতে পারে যে লিংক ২-এ প্যাকেট ফরওয়ার্ড করতে হবে, যাতে এন্ড হোস্ট ২ সংযুক্ত।
প্রতিটি রাউটারের একটি ফরওয়ার্ডিং টেবিল থাকে RAM-এ (ডাইনামিক্যালি তৈরি) যা প্যাকেটের জন্য সঠিক ফরওয়ার্ডিং লিংক রিজল্ভ করে। উদাহরণস্বরূপ, উপরের সেটআপের রাউটিং টেবিল এইরকম দেখাবে:
| ঠিকানা | লিংক |
|---|---|
| 192.168.1.1 | Link 1 |
| 168.134.1.1 | Link 2 |
| 172.158.1.2 | Link 3 |
রাউটার নেটওয়ার্ক প্যাকেট থেকে তথ্য (ডেস্টিনেশন হোস্ট ঠিকানা) ব্যবহার করে এই টেবিলে ইনডেক্স করে (বিটওয়াইজ XOR)। আপনি আপনার কম্পিউটারের রাউটিং টেবিল নিচের কমান্ডগুলো চালিয়ে দেখতে পারেন:
Mac: netstat -nrf inet
Linux: netstat -nr
Windows: Get-NetRoute -AddressFamily IPv4
আপনার রাউটিং টেবিলে একটি নির্দিষ্ট এন্ট্রি লক্ষ্য করুন, ডিফল্ট বা 0.0.0.0, যাকে ডিফল্ট গেটওয়ে বলা হয়। যদি কোনো এন্ট্রি ডেস্টিনেশন ঠিকানার সাথে মিলে না, তবে প্যাকেট ডিফল্ট গেটওয়ে রুট করা হয়।
ইন্টারনেটে এমন অসংখ্য ডিভাইস থাকে যা প্যাকেট ফরওয়ার্ড করে দুটি এন্ড হোস্টের মধ্যে লজিক্যাল যোগাযোগ সক্ষম করতে।
যেহেতু সবাই ইন্টারনেটে রাউটার এবং ডেটা বহনকারী তার শেয়ার করে, রাউটারগুলো ইনকামিং প্যাকেট ধারণ করার জন্য কিউ রাখে যাতে আউটগোইং প্যাকেট প্রসেস (/ফরওয়ার্ড) হয়। অনিশ্চয়তা নেটওয়ার্ক লেয়ার প্রোটোকলে আপনাকされ যদি কিউগুলো ফুল হয়, যা ট্রাফিক বড়ার সাথে সাথে প্যাক্ড হতে পারে।
ইন্টারনেট নেটওয়ার্ক প্রোটোকলটি ইন্টারনেট প্রোটোকল (IP)। ইন্টারনেট নেটওয়ার্ক লেয়ার کے মূল উপাদানগুলো হল,
- IP: ঠিকানাকরণ কনভেনশন (IPv4, IPv6), প্যাকেট ফরম্যাট, প্যাকেট হ্যান্ডলিং কনভেনশন নির্ধারণ করে
- রাউটিং প্রোটোকল: প্যাকেটের পথ নির্ধারণ করে সোর্স থেকে হোস্ট পর্যন্ত
- ICMP: প্যাকেটে এরর রিপোর্ট করার এবং নেটওয়ার্ক লেয়ার তথ্যের নির্দিষ্ট অনুরোধের জবাব দেওয়ার সুবিধা
সংক্ষেপে, নেটওয়ার্ক লেয়ার দুই এন্ড হোস্টের মধ্যে লজিক্যাল যোগাযোগ প্রদান করে। নেটওয়ার্ক লেয়ার প্রোটোকলগুলো এন্ড হোস্ট এবং রাউটার যেমন নেটওয়ার্ক কোর ডিভাইসে চলে। রাউটার নেটওয়ার্ক প্যাকেট ফরওয়ার্ড করে, যা দুটি এন্ড হোস্টের মধ্যে লজিক্যাল যোগাযোগ গঠন করতে সাহায্য করে।
ilovecookies.com এর সাথে যোগাযোগের আমাদের উদাহরণ চালিয়ে যাই।
আমরা দেখেছি যে আমার ওয়েব ব্রাউজার একটি HTTP রিকোয়েস্ট বার্তা তৈরি করে (অ্যাপ্লিকেশন লেয়ার প্রোটোকল) এবং ট্রান্সপোর্ট লেয়ারে পাস করে, যা TCP প্রোটোকল ব্যবহার করে আমার ওয়েব ব্রাউজার অ্যাপ্লিকেশন এবং একটি সার্ভার অ্যাপ্লিকেশন (ilovecookies.com) এর মধ্যে এন্ড-টু-এন্ড যোগাযোগ স্থাপন করে।

আমরা দেখতে পাচ্ছি যে নেটওয়ার্ক প্যাকেট TCP প্যাকেটকে এনক্যাপসুলেট করে, যা আবার অ্যাপ্লিকেশন প্যাকেটকে এনক্যাপসুলেট করে। সবুজ হাইলাইট করা টেক্সট নেটওয়ার্ক প্যাকেটের কন্টেন্ট প্রতিনিধিত্ব করে, হলুদ ট্রান্সপোর্ট প্যাকেট, এবং GET থেকে শুরু হওয়া বাকি টেক্সট অ্যাপ্লিকেশন প্যাকেট।
নেটওয়ার্ক প্যাকেটের ফিল্ডগুলো তার ফাংশনিং-এর জন্য প্রাসঙ্গিক। উদাহরণস্বরূপ, সোর্স ঠিকানা হল আমার মেশিনের IP ঠিকানা, এবং ডেস্টিনেশন ঠিকানা হল ilovecookies.com সার্ভারের ঠিকানা।
এনক্যাপসুলেশন এবং প্যাকেটে থাকা লেয়ার-নির্দিষ্ট তথ্যও হোস্ট এবং সেগুলোর ওপর চলমান অ্যাপ্লিকেশনগুলোর মধ্যে লজিক্যাল যোগাযোগের ধারণার সাথে সম্পর্কিত।
উদাহরণস্বরূপ, নেটওয়ার্ক প্যাকেট এন্ড মেশিনের IP ঠিকানা ধারণ করে, যেখানে ট্রান্সপোর্ট প্যাকেট শুধু পোর্ট নম্বর ধারণ করে। ট্রান্সপোর্ট লেয়ার নেটওয়ার্ক লেয়ারের ওপর নির্ভর করে এন্ড মেশিনের মধ্যে ডেটা সরাতে। একবার ডেটা রিসিভিং ডিভাইসে পৌঁছালে, ট্রান্সপোর্ট লেয়ার দখল করে এবং ট্রান্সপোর্ট প্যাকেটে থাকা পোর্ট নম্বর ব্যবহার করে প্যাকেটটি সঠিক অ্যাপ্লিকেশনে রুট করে।
লিংক লেয়ার
আমরা الآن পর্যন্ত যে লেয়ারগুলো দেখেছি তাদের সাথে তুলনা করলে, লিংক লেয়ারের স্কোপ সংকীর্ণ: এটি এন্ড-টু-এন্ড পথে প্রতিটি লিংকের ওপর প্যাকেট সরাতে সার্ভিস প্রদান করে।
উদাহরণস্বরূপ, লিংকগুলো হল লাল বিন্দু लगी রেখা (উপরের ইলাস্ট্রেশন দেখুন)। লিংক-লেয়ার পথে একটি লিংকের ওপর নোড-টু-নোড নেটওয়ার্ক লেয়ার প্যাকেট সরাতে সক্ষম করে।
একটি লিংক-লেয়ার প্রোটোকল নির্ধারণ করে:
- লিংকের শেষে নোডগুলোর মধ্যে এক্সচেঞ্জ হওয়া প্যাকেটের ফরম্যাট
- সেই নোডগুলোর দ্বারা প্যাকেটের ওপর কী কী অ্যাকশন নেওয়া হবে
একটি নেটওয়ার্ক অ্যাডাপ্টার লিংক লেয়ার প্রোটোকল ইমপ্লিমেন্ট করে। নেটওয়ার্ক অ্যাডাপ্টার ফিজিক্যাল হার্ডওয়্যার গঠন করে যা একটি কম্পিউটারকে নেটওয়ার্কের সাথে সংযুক্ত করতে এবং তথ্য এক্সচেঞ্জ করতে সক্ষম করে।
আপনার কম্পিউটারের নেটওয়ার্ক অ্যাডাপ্টার লিস্ট দেখতে এই কমান্ড চালান:
Mac: networksetup -listallhardwareports
Linux: lshw -class network -short
Windows: Get-NetAdapter -Name *
আউটপুটে আপনি লক্ষ্য করবেন যে প্রতিটি ডিভাইসের একটি লিংক-লেয়ার ঠিকানা থাকে যাকে MAC ঠিকানা বলা হয়। অ্যাডাপ্টারসের ROM-এ ম্যানুফ্যাকচারিং সময়ে অ্যাসাইন করা MAC ঠিকানা থাকে যা পারম্যানেন্ট বিবেচিত হয়। পথে প্রতিটি নোড (হোস্ট এবং রাউটার) এর একটি লিংক-লেয়ার ঠিকানা থাকে।
আগে আমরা IP ঠিকানা সম্পর্কে কথা বলেছিলাম, যা ডিভাইসের জন্য একটি আইডেন্টিফায়ার ও। পরিস্থিতি একে একাধিক আইডেন্টিফায়ার থাকার মতো: হোম ঠিকানা এবং সোশ্যাল সিকিউরিটি নম্বর। নোডগুলোর MAC ঠিকানা এবং নেটওয়ার্ক-লেয়ার ঠিকানা উভয় থাকার কিছু কারণ রয়েছে।
- বিভিন্ন লেয়ার প্রোটোকলগুলো সাবস্টিটিউটেবল হওয়া উচিত। উদাহরণস্বরূপ, IPX নেটওয়ার্ক লেয়ার ঠিকানা ব্যবহার করে না।
- IP ঠিকানা RAM-এ সংরক্ষিত থাকে এবং অ্যাডাপ্টার সরানো বা পাওয়ার আপ করার সময় পুনঃকনফিগার হয়, অর্থাৎ টেম্পোরারি।
- মান লিন প্রোটোকল MAC ঠিকানা বাদ দেয়। অ্যাডাপ্টার যে প্রতিটি প্যাকেট পায় সেটাকে প্রোটোকল স্ট্যাকের উপরে পাস করত। নেটওয়ার্ক লেয়ার IP ঠিকানা ম্যাচ চেক করত। কিন্তু, এটি অনেকবার করা হলে ইনইফিশিয়েন্ট হতে পারে: ইন্টারাপ্ট প্যাকেট পাস করতে সাহায্য করে যা এক্সপেনসিভ হতে পারে।
সংক্ষেপে, লেয়ারগুলো নেটওয়ার্ক আর্কিটেকচারে সুবিশেষ্ট বিল্ডিং ব্লক হিসেবে থাকতে হলে, অনেক লেয়ারকে তাদের নিজস্ব এড্রেসিং স্কিম থাকতে হয়।
দ্রুত রিক্যাপ হিসেবে, আমরা এখন পর্যন্ত তিন ধরনের ঠিকানা দেখেছি:
- অ্যাপ্লিকেশন লেয়ারের জন্য হোস্টনেম (ilovecookies.com)। DNS ব্যবহার করে এগুলো সংশ্লিষ্ট IP ঠিকানায় রূপান্তরিত হয়।
- নেটওয়ার্ক লেয়ারের জন্য IP ঠিকানা
- লিংক লেয়ারের জন্য MAC ঠিকানা
ডোমেইন নেম সিস্টেম যেন হোস্টনেম থেকে IP ঠিকানা রিজল্ভ করতে সাহায্য করে, ঠিক उसीভাবে এড্রেস রেজোলিউশন প্রোটোকল (ARP) IP ঠিকানা থেকে (ডেস্টিনেশন) MAC ঠিকানা নির্ধারণ করতে দরকারী।
ARP RAM-এ একটি টেবিল তৈরি করে যাতে IP ঠিকানা থেকে MAC ঠিকানা ম্যাপিং থাকে। প্রোটোকলে এই টেবিল স্বয়ংক্রিয়ভাবে তৈরি করার স্পেসিফিকেশন থাকে (যেমন একটি নির্দিষ্ট প্যাকেট)।
নেটওয়ার্ক লেয়ার প্যাকেট এবং ডেস্টিনেশন নোডের MAC ঠিকানা (ARP টেবিল থেকে) লিংক লেয়ারে পাস করে। লিংক-লেয়ার প্যাকেটকে লিংক-লেয়ার প্যাকেটে এনক্যাপসুলেট করে এবং ডেস্টিনেশন নোডের দিকে লিংকের সাথে সরিয়ে দেয়।

উপরের সেটআপে মান লিন হোস্ট 222.222.222.220 অন্য হোস্ট 222.222.222.222-এ একটি প্যাকেট পাঠাতে চায়। নেটওয়ার্ক লেয়ার ARP ব্যবহার করে সংশ্লিষ্ট MAC ঠিকানা 49-BD-D2-C7-56-A2 হিসেবে রিজল্ভ করে এবং প্যাকেট ও MAC ঠিকানা লিংক লেয়ারে পাস করে। লিংক লেয়ার দুটি হোস্টের মধ্যে লিংকের ওপর প্যাকেট সরিয়ে দেয়।
এখন, একটি আরও জটিল পরিস্থিতি বিবেচনা করুন যেখানে একটি হোস্ট অন্য নেটওয়ার্কের হোস্টে প্যাকেট পাঠাতে চায়। উদাহরণস্বরূপ, আমার কম্পিউটার থেকে ilovecookies.com-এ প্যাকেট আমার হোম নেটওয়ার্ক থেকে অন্য একটি নেটওয়ার্কে যাবে।

এই ছবিতে দুটি বিষয় লক্ষ্য করুন। প্রথম, রাউটারের দুটি IP ঠিকানা থাকে। যেহেতু রাউটার দুটি ভিন্ন নেটওয়ার্কে অংশ নেয়, এটি সংশ্লিষ্ট নেটওয়ার্কে নিজেরকে চিহ্নিত করার জন্য দুটি IP ঠিকানা প্রয়োজন। বিস্তারিত জানতে এটি দেখুন।
দ্বিতীয়, দুটি আলাদা নেটওয়ার্ককে সাবনেট বলা হয়। একটি সাবনেট হল নেটওয়ার্ক ডিভাইসের একটি লজিক্যাল গ্রুপিং যা নেটওয়ার্ক ডিভাইস ম্যানেজমেন্ট সহজ করে।
এই সেটআপে মান লিন হোস্ট 222.222.222.222, হোস্ট 111.111.111.111-এ একটি প্যাকেট পাঠাতে চায়, যেটি ক্রস-নেটওয়ার্ক ট্রিপ জড়িত। এটি তার সাবনেটে ডেস্টিনেশন হোস্ট (111.111.111.111) খুঁজে পাবে না, এবং প্যাকেটটি ডিফল্ট গেটওয়ে (রাউটার) ফরওয়ার্ড করবে।
নেটওয়ার্ক লেয়ার ARP টেবিল ব্যবহার করে MAC ঠিকানা 88-B2-2F-54-1A-0F হিসেবে রিজল্ভ করে। রাউটার তার রাউটিং টেবিল ব্যবহার করে প্যাকেটটি অন্য সাবনেটের সাথে সংযুক্ত লিংকে ডেলিভার করে। একবারই ARP টেবিল ডেস্টিনেশন হোস্টের MAC ঠিকানা রিজল্ভ করতে সাহায্য করে, এবং প্যাকেট লিংকের সাথে চলে যায়।
সংক্ষেপে, আপনার কম্পিউটার হার্ডওয়্যারের অংশ olan অ্যাডাপ্টার লিংক লেয়ার প্রোটোকল ইমপ্লিমেন্ট করে। লিংক-লেয়ার প্রোটোকল একটি এড্রেসিং স্কিম নির্ধারণ করে যাকে MAC ঠিকানা বলা হয়, এবং ARP IP ঠিকানা থেকে MAC ঠিকানা ম্যাপ করতে ব্যবহৃত হয়। লিংক-লেয়ার নেটওয়ার্ক লেয়ার প্যাকেট এনক্যাপসুলেট করে এবং একটি লিংকের ওপর সরিয়ে দেয়।
জনপ্রিয় লিংক লেয়ার প্রোটোকলগুলির মধ্যে একটি হল ইথারনেট। আমাদের উদাহরণ (ilovecookies.com) চালিয়ে যাই ইথারনেট প্রোটোকল একটিশনে देखने।

আমরা লক্ষ্য করতে পারি ইথারনেট প্যাকেটে ডেস্টিনেশন এবং সোর্স MAC ঠিকানা (লুকানো) থাকে, এবং এটি IP প্যাকেটকে এনক্যাপসুলেট করে।
রিক্যাপ
নিচের ছবি ব্যবহার করে এই আর্টিকেলে যা যা দেখেছি তা সারসংক্ষেপ করি।

দুটি ভিন্ন সিস্টেমে (যাকে হোস্ট বলা হয়) চলমান কম্পিউটার অ্যাপ্লিকেশনগুলো প্রোটোকল ব্যবহার করে যোগাযোগ করে।
প্রোটোকল হল নিয়ম যেগুলো দুটি হোস্টের মধ্যে যোগাযোগ গভার্ন করে। প্রোটোকল স্ট্যাক নেটওয়ার্ক যোগাযোগের সমস্যাকে সমাধান করার জন্য একাধিক উপ-সমস্যা সমাধান করে। অভাস্ট্রাকশন হায়ারার্কিতে নিচের লেয়ারগুলোর অফার করা সার্ভিস ব্যবহার করে প্রতিটি লেয়ার একটি উপ-সমস্যা সমাধানে ফোকাস করে।
অ্যাপ্লিকেশন লেয়ার প্রোটোকল সর্বোচ্চ অভাস্ট্রাকশন লেভেলে কাজ করে। একটি অ্যাপ্লিকেশন একটি অ্যাপ্লিকেশন প্রোটোকলের নিয়ম মানিয়ে (যেমন HTTP) বার্তা পাঠিয়ে যোগাযোগ করে।
DNS হোস্টনেম (www.ilovecookies.com) IP ঠিকানায় ম্যাপ করতে ব্যবহৃত হয়। এই বার্তাগুলো সকেট ইন্টারফেসের মাধ্যমে পাস করে ট্রান্সপোর্ট লেয়ার ব্যবহার করে নেটওয়ার্ক জুড়ে ট্রান্সমিট হতে।
ট্রান্সপোর্ট লেয়ার দুটি ভিন্ন হোস্টে চলমান অ্যাপ্লিকেশনগুলোর মধ্যে একটি লজিক্যাল যোগাযোগ এক্সপোজ করে। এটি অ্যাপ্লিকেশন বার্তাগুলো ছোট টুকরোতে ভাগ করে এবং অতিরিক্ত তথ্য (হেডার) সহ প্যাকেটে এনক্যাপসুলেট করে।
এই প্যাকেটগুলো থেকে অ্যাপ্লিকেশন বার্তা তৈরি হয় এবং প্যাকেটের পোর্ট নম্বর ব্যবহার করে সকেট ইন্টারফেসের মাধ্যমে পাস করা হয়। এই প্যাকেটগুলো নেটওয়ার্ক লেয়ারের ওপর নির্ভর করে নেটওয়ার্ক জুড়ে পাঠানো হয়।
পরবর্তীতে, নেটওয়ার্ক লেয়ার দখল করে, দুই হোস্টের মধ্যে লজিক্যাল যোগাযোগ প্রদান করে। এটি ট্রান্সপোর্ট প্যাকেটকে নেটওয়ার্ক প্যাকেটে এনক্যাপসুলেট করে।
ইন্টারনেটে প্যাকেট স্যুইচিং ডিভাইস থাকে যা নেটওয়ার্ক প্যাকেট ফরওয়ার্ড করে, RAM-এ সংরক্ষিত রাউটিং টেবিল এবং ডাইনামিক্যালি রাউটিং প্রোটোকল ব্যবহার করে তৈরি। নেটওয়ার্ক লেয়ার লিংক লেয়ারের ওপর নির্ভর করে প্যাকেট সরাতে।
লিংক-লেয়ার প্যাকেট সরাতে দায়বদ্ধ প্রতিটি লিংকের ওপর। হার্ডওয়্যার ডিভাইস, যাকে অ্যাডাপ্টার বলা হয়, লিংক-লেয়ার প্রোটোকল ইমপ্লিমেন্ট করে এবং তাদের সাথে একটি পারম্যানেন্ট ঠিকানা থাকে, যাকে MAC ঠিকানা বলা হয়। MAC ঠিকানা এই লেয়ারের আইডেন্টিফায়ার হিসেবে কাজ করে। অ্যাড্রেস রেজোলিউশন প্রোটোকল (ARP) IP ঠিকানা থেকে MAC ঠিকানা ম্যাপ করে।
শেষে, লিংক লেয়ার প্যাকেটগুলো ফিজিক্যাল লেয়ারে পাস করে, যেটি সেই তারগুলো গঠন করে যাদের ওপর তথ্য ট্রাভেল করে।
পড়ার জন্য ধন্যবাদ! আশা করি আজ কম্পিউটার নেটওয়ার্ক সম্পর্কে কিছু নতুন শিখেছেন।
সূত্রসমূহ
Computer Networking: A Top-Down Approach, 7th Edition
Computer Networking: A Top-Down Approach, 7th Edition
James F. Kurose, University of Massachusetts, Amherst Keith Ross
Pearson
Wireshark · Go Deep.
