জেনেরিক সকেট কী এবং এটি কোনও নেটওয়ার্ক ডিভাইসের সাথে কীভাবে সম্পর্কিত?


9

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

উদাহরণস্বরূপ, এই রেফারেন্স কিভাবে সেটআপ নেটওয়ার্কের মাধ্যমে ডিভাইসের ioctlকল। ioctlতবে একটি ফাইল বর্ণনাকারী প্রয়োজন , নেটওয়ার্ক ড্রাইভারদের জন্য কোনও ডিভাইস ফাইল নেই, সকেট থেকে একমাত্র ফাইল বর্ণনাকারী পাস হতে পারে।

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

  • তবে এই বিমূর্ত অর্থে একটি সকেট কী, এটি কি কোনও ডিভাইস ফাইলের অন্য নাম যা পুশ বিজ্ঞপ্তিগুলি সমর্থন করে? আমি ইউএসস্পেস অ্যাপ্লিকেশন দ্বারা কোনও ঠিকানার সাথে আবদ্ধ সংযোগ পয়েন্টগুলির মেয়াদে টিসিপি সকেটগুলি বুঝতে পারি: একটি নেটওয়ার্ক ইন্টারফেসে পোর্ট জুড়ি। কোনও নেটওয়ার্ক ইন্টারফেস সেট আপ করার পূর্বশর্ত হিসাবে আমি সকেটটি বুঝতে পারি না।

  • লিনাক্সে নেটওয়ার্ক ইন্টারফেস (যেমন eth0তালিকাবদ্ধ ifconfig) সকেট ছাড়া থাকতে পারে?

  • ifconfigআমাদের নেটওয়ার্ক ইন্টারফেসের বিকল্পগুলি সেট করার জন্য কোনও নেটওয়ার্ক ম্যানেজার ডেমন কি কোনও সকেট খোলা রাখে?


উত্তর:


6

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

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

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

ফাইল অপারেশনগুলির সাথে এটি কীভাবে ফিট করা যায় তা স্পষ্ট নয় (যদিও এটি করা যায়, প্ল্যান 9 দেখুন ), ইউনিক্স ডিজাইনাররা একটি নতুন এপিআই আবিষ্কার করেছেন: সকেট । আপনি এর জন্য অধ্যায় 2 man পৃষ্ঠা ইন বিশদ জানতে পারেন socket, bind, listen, connect, sendএবং recv। নোট করুন যে এটি আই / ও এপিআই ফাইল থেকে পৃথক হওয়ার socketপরেও কলটি একটি ফাইল বর্ণনাকারীও ফিরিয়ে দেয়। ওয়েবে সকেট কীভাবে ব্যবহার করতে হয় সে সম্পর্কে অসংখ্য টিউটোরিয়াল রয়েছে, গুগল।

এখন পর্যন্ত এটি সমস্ত খাঁটি ইউএনআইএক্স, সকেট উদ্ভাবনের সময় কেউই নেটওয়ার্ক ইন্টারফেসের বিষয়ে কথা বলছিল না। এবং এই এপিআইটি সত্যই পুরানো হওয়ায় এটি ইন্টারনেট প্রোটোকলের বাইরে ধরণের বিভিন্ন নেটওয়ার্ক প্রোটোকলের জন্য সংজ্ঞায়িত হয়েছে ( AF_*ধ্রুবকগুলি দেখুন), যদিও এর মধ্যে কয়েকটি লিনাক্সেই সমর্থিত।

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

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

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

একইভাবে সিস্টেম কলগুলির বেশ কয়েকটি অন্যান্য আপত্তি রয়েছে, উদাহরণস্বরূপ প্যাকেট ফিল্টারিং, প্যাকেট ক্যাপচার ইত্যাদি

এই সমস্ত কিছু টুকরো টুকরো হওয়ার পরে বেড়েছে এবং অনেক জায়গায় এটি বিশেষভাবে যৌক্তিক নয়। যদি এটি একবারে ডিজাইন করা হয়ে থাকে তবে একজন সম্ভবত একটি আরও অर्थোগোনাল এপিআই তৈরি করতে পারত।


Sockets as the network communications API were already not represented in the filesystem, so the NI didn't get one, either.এটি কি টাইপো?
TheMeaningfulEngineer

আপনি কোন অংশটি টাইপো বলে মনে করেন? সরল সকেটগুলির সাথে কোনও ফাইলের নাম বা ইনোড যুক্ত নেই (যদিও ইউনিক্স ডোমেন সকেটগুলি করে)।
dirkt

আমি কেবল শব্দার্থে বাক্যটি বুঝতে পারি নি, দুঃখিত, তাই পুনরায় পরীক্ষা করতে চেয়েছি।
TheMeaningfulEngineer

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