সকেট কী?


49

কেউ আমাকে বোঝাতে পারেন যে সকেট কী? আমি এটিকে এসএসএল ইত্যাদির প্রসঙ্গে বহু সংক্ষিপ্ত আকারে দেখতে পাই

এছাড়াও, কেন এটি সকেট বলা হয়? এগুলি কি নিখুঁত কারণেই তারা আবিষ্কার করেছিল এমন একটি নাম? নাকি তারা প্রথম নামটি নিয়ে এসেছিল?


9
সাধারণ ব্যক্তির ভাষায়: একটি সকেট একটি টেলিফোন। আপনি নিজের হাতে যে জিনিসটি ধরেছেন সেটি এটিই আপনাকে অন্য ফোনের সাথে কথোপকথন করতে দেয়। সাদৃশ্যটি কিছুটা ভেঙে যায়: বেশিরভাগ ফোনের কথোপকথন পিয়ার-টু-পিয়ার। সকেট সংযোগগুলি সার্ভারে ক্লায়েন্ট। ক্লায়েন্ট (যেমন তবে ব্রাউজারগুলির মতো ওয়ার্কস্টেশন সফ্টওয়্যার সীমাবদ্ধ নয়) কোনও সার্ভারের সাথে সংযুক্ত হয় (যেমন একটি ওয়েব সার্ভার, ফাইল সার্ভার, প্রমাণীকরণের সার্ভার, বা অন্যান্য)। সাদৃশ্যটির আরেকটি ত্রুটি: আপনি যখন সকেট সংযোগ বন্ধ করেন, সকেটটি নষ্ট হয়ে যায় এবং নতুন সংযোগ স্থাপনের আগে আপনাকে অবশ্যই একটি নতুন সকেট তৈরি করতে হবে।
জি-ম্যান

এটি সাদৃশ্যটির পক্ষে খুব খারাপ নয়। একটি সার্ভার কেবল একটি কল-সেন্টার এবং একসাথে অনেকগুলি সক্রিয় কল থাকতে পারে।
এমসাল্টার্স

উত্তর:


42

একটি সকেট যোগাযোগের জন্য কেবল একটি লজিকাল এন্ডপয়েন্ট হয়। এগুলি পরিবহন স্তরে বিদ্যমান exist আপনি সকেটে জিনিস প্রেরণ এবং গ্রহণ করতে পারেন, আপনি একটি সকেট বাঁধতে এবং শুনতে পারেন। একটি সকেট একটি প্রোটোকল, মেশিন এবং পোর্টের জন্য নির্দিষ্ট এবং এটি কোনও প্যাকেটের শিরোনামে সম্বোধন করা হয়।

নেটওয়ার্ক প্রোগ্রামিং এবং আন্ত-প্রক্রিয়া যোগাযোগের জন্য বিজের গাইড উভয়ের কাছে কীভাবে সকেট ব্যবহার করা যায় এবং এমনকি এই সঠিক প্রশ্নের উত্তর দেওয়া যায় সে সম্পর্কে ভাল তথ্য রয়েছে ।


64

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

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

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

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


3
পাইপগুলি সকেটগুলির পূর্বসূরি বলেও উল্লেখ করতে পারে, তবে একবার ইউনিক্সে সকেট ইন্টারফেস যুক্ত হয়ে গেলে স্থানীয় সকেটগুলি ব্যবহার করে পাইপগুলিকে পুনরায় প্রতিস্থাপন করার পক্ষে তা বোঝা যায়।
ট্রিপলি

@ ট্রিপলি: এটি একটি দুর্দান্ত historicalতিহাসিক বিষয়। একটি রেফারেন্স প্রদান যত্ন?
ধাগ

ফ্রিবিএসডি অপারেটিং সিস্টেমের ডিজাইন ও বাস্তবায়নে দ্রুত গুগলিং পৃষ্ঠা 40 এ পরিণত হয়েছে ; পাঠ্যটিতে 4.2BSD এ পরিবর্তনের কথা উল্লেখ করা হয়েছে তবে এটিও স্পষ্ট করে দিয়েছে যে পারফরম্যান্সের কারণে এটি আর এটি কীভাবে হয় না।
ট্রিপলি

দুর্দান্ত, আমি আমার উত্তরে এটি যুক্ত করব।
ধাগ

সবার সেরা টেকনো উত্তর
বিশৃঙ্খলা গুরু

7

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

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

তাদের কেন 'সকেট' বলা হয় ভাল, ধারণাটি আবিষ্কারকরা যা চান তারা এটিকে কল করতে পারেন সম্ভবত তারা সেখানে একটি বড় ভূমিকা পালন করে। যদিও, এটি আমার মতে কোনও খারাপ নাম নয় :)


7

এখন, এটা কি?

একটি সকেট বা "সকেট" বিভিন্ন জিনিস হতে পারে:

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

সকেট এপিআই সাধারণভাবে "যোগাযোগ" এর বিশদ বিস্তৃত করে। এটি আপনার সাথে কার সাথে কথা বলছেন এবং কীভাবে, সমস্ত (প্রায়) সামঞ্জস্যপূর্ণ এবং অভিন্ন কুকি-কাটার ফর্মের মাধ্যমে এটি encapsulates।
আপনি বিভিন্ন "ডোমেন" (যেমন যেমন একটি "ইউনিক্স সকেট" বা "ইন্টারনেট সকেট") এবং বিভিন্ন ধরণের যোগাযোগের (যেমন একটি "ডেটাগ্রাম" সকেট বা "স্ট্রিম" সকেট) এ সকেট তৈরি করতে পারেন এবং বিভিন্ন প্রাপকদের সাথে কথা বলতে পারেন , এবং সমস্ত কিছুই ঠিক একই রকম কাজ করে (ভাল, 99%, আপনার অবশ্যই জবাবদিহি করতে হবে কিছু মিনিটের পার্থক্য রয়েছে)।

আপনি একই কম্পিউটারে বা অন্য কম্পিউটারে অন্য কোনও প্রোগ্রামের সাথে কথা বলছেন, বা those কম্পিউটারগুলির মধ্যে আইপিভি 4 বা আইপিভি 6 নেটওয়ার্ক রয়েছে কিনা, বা অন্য কোনওটিও আপনার জানা দরকার নেই (এবং আপনি এটিও জানতে চান না!) প্রোটোকল যা আপনি কখনও শুনেন নি।

socketলাইব্রেরি ফাংশনটির নাম (বা সিস্কেল) যা "সকেট " তৈরি করে , যা একটি বিশেষ ধরণের ফাইল (ইউনিক্সের সমস্ত কিছুই একটি ফাইল)।

এটি কীভাবে তুলনা করে ...

সকেটগুলি পাইপ এবং নাম পাইপের হিসাবে একই বিভাগে পড়ে

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

একটি নামক পাইপ হ'ল, কেবলমাত্র একটি পাইপ যা ফাইল সিস্টেমে একটি নামের মালিক । এটি হ'ল এটি এমন কোনও কিছু যা ফাইলের মতো দেখায় এবং আচরণ করে, এটি ডিরেক্টরি তালিকাতে প্রদর্শিত হয় এবং আপনি এটি খুলতে পারেন, লিখতে পারেন ইত্যাদি ইত্যাদি Note মনে রাখবেন যে আপনি সকেট বিশেষ ফাইলও তৈরি করতে পারেন (এটি নামযুক্ত সকেট হবে) ।

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

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

আন্তঃ-প্রক্রিয়া যোগাযোগ কখনও কখনও নেটওয়ার্কের ক্ষেত্রে উল্লেখ করা হয়

হ্যাঁ, সকেট আন্তঃ-প্রক্রিয়া যোগাযোগের একটি সম্ভাব্য উপায় (ভাগ করা মেমরি এবং পাইপগুলির বিকল্প হিসাবে উদাহরণ)। সমস্ত একই সাথে, তারা উপরে বর্ণিত হিসাবে "নেটওয়ার্কিং" এর জন্য ব্যবহৃত হচ্ছে।


1

আইডি থেকে udp বা tcp এর জন্য,

একটি সকেট ঠিকানা হ'ল একটি আইপি ঠিকানা এবং একটি পোর্ট সংমিশ্রণ।

একটি আইপি ঠিকানা হ'ল ইন্টারনেটের কোনও মেশিনের ঠিকানা the unix.stackexchange.com has address 198.252.206.140

তবে প্রতিটি মেশিন অবশ্যই একাধিক পরিষেবা সরবরাহ করতে সক্ষম হবেন, তাই বেশিরভাগ মেশিনগুলি 80 পোর্টে http (ওয়েব পৃষ্ঠাগুলি), এবং 22 পোর্টে ssh সরবরাহ করবে এবং ইত্যাদি

সুতরাং unix.stackexchange.com:80পোর্ট 80এর unix.stackexchange.com(ক সকেট) এই ওয়েব সাইট এর এক্সেস পয়েন্ট।

তবে অন্যান্য ধরণের সকেট রয়েছে, নীচে মন্তব্য দেখুন।


5
tcp / ip কেবল এক ধরণের সকেট। আরও কিছু আছে যাদের টিসিপি / আইপি-র কোনও সম্পর্ক নেই।
psusi

বিভিন্ন ধরণের সকেট কত?
আব্দুল আল হাজরেড

1
@ আবদুলআলহ্যাজরেড, আমি আইপি নেটওয়ার্কিংয়ের সাথে ব্যবহৃত চারটি সাধারণ ধরণের সম্পর্কে জানি, আইপি 6 এর সাথে একই, দুটি ইউনিক্সের সাথে এবং দুটি আইপিএক্স সহ with আমি অক্ষ 25, এটিএম বা অ্যাপলেটকের দিকে নজর দিইনি। লিনাক্সে সমর্থিত অন্যান্য প্রোটোকল রয়েছে এবং প্রোটোকলগুলি লিনাক্স সমর্থন করে না। বেশিরভাগ ক্ষেত্রে প্রতিটি প্রোটোকলের স্ট্রিম (টিসিপি) এবং ডেটাগ্রাম (ইউডিপি) সকেট রয়েছে। কাঁচা সকেটগুলিও সাধারণ এবং ইমসিপিতেও সকেট ইন্টারফেস থাকতে পারে।
hildred

মুল বক্তব্য, এই উত্তরটি অসম্পূর্ণ যে এটি কেবল এক ধরণের সকেটকে coversেকে রাখে এবং বিভ্রান্তিকর যে এটি সাধারণভাবে সকেটগুলিকে প্রতিনিধিত্ব করে যেমন তারা সর্বদা নেটওয়ার্ক সকেট এবং বিশেষত আইপি ( AF_INET) সকেট রয়েছে।
ট্রিপলি

0

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.