পাঠ ০৪ · ৫৭-এর মধ্যে · মডিউল ১
Home / Courses / Computer Networks / TCP/IP মডেল

TCP/IP মডেল ও OSI-এর সাথে তুলনা

The TCP/IP model vs OSI
৮ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • TCP/IP মডেলের চারটি স্তর ও প্রতিটির দায়িত্ব
  • OSI-এর সাতটি স্তর কীভাবে TCP/IP-এর চারটি স্তরে "একত্রিত" (collapse) হয়
  • কেন বাস্তব ইন্টারনেট TCP/IP মডেলে চলে, OSI-তে নয়
  • Python দিয়ে OSI → TCP/IP ম্যাপিং প্রোগ্রামগতভাবে যাচাই করা

১ · TCP/IP মডেল — চারটি স্তর

TCP/IP মডেলTCP/IP Modelবাস্তব ইন্টারনেট যে ৪-স্তরের ব্যবহারিক প্রোটোকল কাঠামোয় চলে — Network Interface/Link, Internet, Transport, Application। OSI-এর তুলনায় অনেক সরল — মাত্র চারটি স্তর:

  • Network Interface / Link — OSI-এর Physical ও Data Link স্তর দুটোকে একত্রিত করে।
  • Internet — OSI-এর Network স্তরের সমতুল্য; IP এখানে বাস করে।
  • Transport — OSI-এর Transport স্তরের সমতুল্য; TCP ও UDP এখানে বাস করে।
  • Application — OSI-এর Session, Presentation ও Application — এই তিনটি স্তরকে একত্রিত করে।

২ · OSI বনাম TCP/IP — স্তর মিলকরণ

TCP/IP নিজে Session বা Presentation-কে আলাদা স্তর হিসেবে সংজ্ঞায়িত করে না — বাস্তব প্রোটোকল যেমন HTTP নিজেই এই দায়িত্বগুলো (সেশন/এনক্রিপশন সংক্রান্ত) নিজের ভেতরে সামলে নেয়, একটি সার্বজনীন আলাদা স্তরের উপর নির্ভর না করে। এই "একত্রীকরণ" (collapse) হলো OSI ও TCP/IP-এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ পার্থক্য।

মূল অন্তর্দৃষ্টি

OSI-এর ৭টি স্তরের মধ্যে ৫টিই (Physical, Data Link, Session, Presentation, Application) TCP/IP-এ অন্য স্তরের সাথে একত্রিত হয়ে গেছে — শুধু Network ও Transport স্তর দুটোই সরাসরি এক-এক মিলে (Internet ও Transport)। এটিই দেখায় কেন TCP/IP ব্যবহারিকভাবে সরলতর।

৩ · কেন TCP/IP বাস্তবে ব্যবহৃত, OSI নয়

OSI ছিল ISO-এর একটি কমিটি-নির্মিত আনুষ্ঠানিক স্ট্যান্ডার্ড — এর নকশা ও অনুমোদন প্রক্রিয়ায় অনেক সময় লেগেছিল। ইতিমধ্যে ARPANET (আধুনিক ইন্টারনেটের পূর্বসূরি) ইতিমধ্যেই TCP/IP ব্যবহার করে সফলভাবে চলছিল। ফলে TCP/IP বাস্তবে de facto ইন্টারনেট স্ট্যান্ডার্ড হয়ে ওঠে, আর OSI কখনো পূর্ণাঙ্গভাবে বাণিজ্যিক গ্রহণযোগ্যতা পায়নি। তবু OSI-এর মূল্য এখনো টিকে আছে — একটি স্পষ্ট, সর্বজনীন শিক্ষাগত ও ডায়াগনস্টিক পরিভাষা হিসেবে (L03-এর "layer 2/layer 3" আলোচনা মনে করুন)।

Python
# OSI স্তর -> TCP/IP স্তর ম্যাপিং
osi_to_tcpip = {
    "Physical":     "Network Interface / Link",
    "Data Link":    "Network Interface / Link",
    "Network":      "Internet",
    "Transport":    "Transport",
    "Session":      "Application",
    "Presentation": "Application",
    "Application":  "Application",
}

print("OSI স্তর  ->  TCP/IP স্তর")
for osi_layer, tcpip_layer in osi_to_tcpip.items():
    print(f"  {osi_layer:<12} -> {tcpip_layer}")

# কোন কোন OSI স্তর একটি একক TCP/IP স্তরে "একত্রিত" (collapse) হয়েছে তা বের করা
from collections import defaultdict

grouped = defaultdict(list)
for osi_layer, tcpip_layer in osi_to_tcpip.items():
    grouped[tcpip_layer].append(osi_layer)

print("\nকোন TCP/IP স্তর কতগুলো OSI স্তরকে একত্রিত করেছে:")
for tcpip_layer, osi_layers in grouped.items():
    print(f"  {tcpip_layer}: {', '.join(osi_layers)}  ({len(osi_layers)}টি OSI স্তর একত্রিত)")

    
OSI (৭ স্তর) TCP/IP (৪ স্তর) ৭ · Application ৬ · Presentation ৫ · Session ৪ · Transport ৩ · Network ২ · Data Link ১ · Physical Application Transport Internet Network Interface / Link
OSI-এর ৩টি উপরের স্তর (Session, Presentation, Application) TCP/IP-এর একক Application স্তরে একত্রিত হয়, আর নিচের ২টি (Data Link, Physical) একত্রিত হয় Network Interface/Link স্তরে — Network ও Transport স্তর দুটোই এক-এক মিলে থাকে।
এই কোর্স এখন থেকে (M2-M6) মূলত TCP/IP-এর ব্যবহারিক স্তর-গ্রুপিং অনুসরণ করবে — M2 ফিজিক্যাল, M3 ডেটা লিংক, M4 নেটওয়ার্ক, M5 ট্রান্সপোর্ট, M6 অ্যাপ্লিকেশন — তবু প্রয়োজনমতো OSI-এর পরিভাষাও ব্যবহার করা হবে, কারণ এটি শিল্পে এখনো সর্বজনীন ভাষা।
মূল কথা · Key takeaway

OSI মডেল একটি নিখুঁত তাত্ত্বিক ফ্রেমওয়ার্ক, কিন্তু TCP/IP মডেলই বাস্তবতা। একজন নেটওয়ার্ক ইঞ্জিনিয়ারকে উভয় "ভাষা"-তেই সাবলীল হতে হয় — TCP/IP দিয়ে বুঝতে হয় প্রকৃত প্রোটোকল স্ট্যাক কীভাবে কাজ করে, আর OSI দিয়ে বুঝতে হয় শিল্পের প্রচলিত ডায়াগনস্টিক পরিভাষা। এই মডিউলের বাকি পাঠগুলো (L05 থেকে) এখন TCP/IP-এর স্তর ধরে নিচ থেকে উপরে এগোবে — শুরুতে ফিজিক্যাল লেয়ার দিয়ে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ কেন TCP/IP-কে কখনো "৪-স্তর" আবার কখনো "৫-স্তর" মডেল বলা হয়?

কিছু পাঠ্যবই Network Interface স্তরটিকে Physical ও Data Link-এ আলাদাভাবে ভেঙে দেখায় (তাহলে মোট ৫টি স্তর হয়), আবার কিছু পাঠ্যবই এই দুটোকে একটি একক "Link" স্তর হিসেবে একত্রিত রাখে (তাহলে মোট ৪টি স্তর)। এটি নিছক একটি বর্ণনাগত (descriptive) কনভেনশনের পার্থক্য — বাস্তব প্রোটোকলের কার্যকারিতায় কোনো পার্থক্য তৈরি করে না।

প্র ০২ HTTP-এর মতো একটি বাস্তব প্রোটোকল কীভাবে OSI-এর Session ও Presentation স্তরের কাজ নিজে সামলায়?

HTTP নিজে cookies ও sessions ব্যবহার করে "সেশন" ধারণাটি অ্যাপ্লিকেশন লেভেলেই বাস্তবায়ন করে (কোনো সার্বজনীন সেশন স্তরের উপর নির্ভর না করে)। "প্রেজেন্টেশন" সংক্রান্ত কাজ — এনক্রিপশন — TLS সামলায় (যা লজিক্যালি ট্রান্সপোর্ট ও অ্যাপ্লিকেশনের মাঝামাঝি বসে, M10/L48-এ বিস্তারিত), আর কমপ্রেশন সামলায় gzip-এর মতো content-encoding মেকানিজম। অর্থাৎ, প্রতিটি উদ্বেগ একটি সার্বজনীন স্তরের বদলে সরাসরি অ্যাপ্লিকেশন প্রোটোকলের নিজস্ব ফিচার হিসেবে সমাধান হয়।

প্র ০৩ "Layer 3 রাউটিং" বলতে TCP/IP-এর কোন স্তর বোঝানো হচ্ছে, আর কেন OSI-এর নম্বরটাই এখনো ব্যবহৃত হয়?

OSI-এর layer 3 (Network) সমতুল্য TCP/IP-এর Internet স্তর — যেখানে IP-ভিত্তিক রাউটিং হয়। শিল্প OSI-এর নম্বরযুক্ত পরিভাষা ধরে রেখেছে কারণ এটি অস্পষ্টতাহীন, সর্বজনীন শর্টহ্যান্ড — "layer 3" বললেই সবাই বুঝে যায় IP-অ্যাড্রেস-ভিত্তিক কাজের কথা বলা হচ্ছে, প্রতিটি ভেন্ডর বা পাঠ্যবই নিজস্ব নাম ব্যবহার না করেই।

অনুশীলন

  1. চিন্তা করুন: DNS-over-HTTPS (DoH) একটি আধুনিক প্রোটোকল যা DNS কোয়েরিকে HTTPS-এর ভেতরে মুড়ে পাঠায়। এটি কীভাবে একাধিক OSI স্তরের কাজ একসাথে একটি অ্যাপ্লিকেশন-লেভেল সমাধানে একত্রিত করে তা চিন্তা করুন।

    DoH একটি অ্যাপ্লিকেশন-লেভেল প্রোটোকল (DNS কোয়েরি) যা আরেকটি অ্যাপ্লিকেশন-লেভেল প্রোটোকলের (HTTPS) এনক্রিপশন (TLS, "presentation" ধরনের কাজ) ও কানেকশন হ্যান্ডলিং ব্যবহার করে চালানো হয় — এটি ঠিক সেই প্যাটার্নটিই দেখায় যা এই পাঠে আলোচিত হয়েছে: TCP/IP-তে আলাদা সেশন/প্রেজেন্টেশন স্তর না থাকায়, নতুন প্রোটোকলগুলো বিদ্যমান অ্যাপ্লিকেশন-লেভেল প্রোটোকলের উপর স্তরায়িত হয়ে এই কাজগুলো সামলায়।

  2. পরীক্ষা করুন: উপরের কোড সেলের osi_to_tcpip ডিকশনারিতে একটি কাল্পনিক অষ্টম OSI স্তর যোগ করুন যার মান নেই এমন কোনো TCP/IP স্তরের নাম দিন এবং grouped-এর আউটপুট পরীক্ষা করুন।

    যেহেতু grouped একটি defaultdict(list), নতুন যেকোনো TCP/IP স্তরের নাম স্বয়ংক্রিয়ভাবে একটি নতুন তালিকা তৈরি করবে এবং সেখানে আপনার নতুন OSI স্তরটি যোগ হবে — কোনো KeyError ছাড়াই। এটি দেখায় কেন defaultdict এই ধরনের group-by প্যাটার্নের জন্য এত সুবিধাজনক।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
OSI মডেল — সাতটি স্তর