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

কম্পিউটার নেটওয়ার্কিং-এ সকেট প্রোগ্রামিং-এর ওভারভিউ

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

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

সকেট প্রযুক্তি আপনার নেটওয়ার্কের জন্য কী করতে পারে

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

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

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

সকেট API এবং লাইব্রেরি

স্ট্যান্ডার্ড অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) ইমপ্লিমেন্ট करने वाली বেশ কিছু লাইব্রেরি ইন্টারনেটে বিদ্যমান। প্রথম মেইনস্ট্রিম প্যাকেজ, বারkeley Socket Library, ইউনিক্স সিস্টেমে ব্যাপকভাবে ব্যবহৃত।

আরেকটি সাধারণ API হলো উইন্ডোজ সকেট (WinSock) লাইব্রেরি মাইক্রোসফট অপারেটিং সিস্টেমের জন্য। অন্যান্য কম্পিউটার প্রযুক্তির সাথে তুলনা করলে, সকেট API मैचিউর। WinSock ১৯৯৩ থেকে ব্যবহারে আছে এবং বারkeley সকেট ১৯৮২ থেকে।

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

সকেট ইন্টারফেস টাইপ

সকেট ইন্টারফেস তিনটি ক্যাটাগরিতে ভাগ করা যেতে পারে:

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

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

আধুনিক নেটওয়ার্ক সকেট সাধারণত IP, TCP, এবং UDP ইন্টারনেট প্রোটোকলের সাথে সংযোজিতভাবে ব্যবহার করা হয়। ইন্টারনেট প্রোটোকলের জন্য সকেট ইমপ্লিমেন্ট করা লাইব্রেরি TCP ব্যবহার করে স্ট্রিমের জন্য, UDP ডেটাগ্রামের জন্য, এবং IP র সকেটের জন্য।

ইন্টারনেটের ওপর যোগাযোগ করতে, IP সকেট লাইব্রেরি নির্দিষ্ট কম্পিউটার চিহ্নিত করতে IP অ্যাড্রেস ব্যবহার করে। ইন্টারনেটের অনেক অংশ নেমিং সার্ভিসের সাথে কাজ করে, যাতে ব্যবহারকারী এবং সকেট প্রোগ্রামার কম্পিউটারের সাথে নাম দিয়ে কাজ করতে পারে (উদাহরণস্বরূপ, thiscomputer.wireless.lifewire.com) অ্যাড্রেসের বদলে (উদাহরণস্বরূপ, 208.185.127.40)।

স্ট্রিম এবং ডেটাগ্রাম সকেট IP পোর্ট নম্বরও ব্যবহার করে একাধিক অ্যাপ্লিকেশনকে একে অপরের থেকে আলাদা করার জন্য। উদাহরণস্বরূপ, ইন্টারনেট上的 ওয়েব ব্রাউজার জানে পোর্ট ৮০ ডিফল্ট হিসেবে সকেট কমিউনিকেশনের জন্য ওয়েব সার্ভারের সাথে।

  1. পাইথনে লো-লেভেল নেটওয়ার্কিং ইন্টারফেস (socket)

  2. প্রোগ্রামিং ল্যাপটপ কেনার সময় কী কী দেখবেন: সম্পূর্ণ গাইড

  3. রুবি ডেভেলপারদের জন্য অপরিহার্য ডেটা স্ট্রাকচার: একটি প্র্যাক্টিক্যাল গাইড

  4. রুবি নেটওয়ার্ক প্রোগ্রামিং: সকেট দিয়ে কাস্টম ক্লায়েন্ট ও সার্ভার বানান