নেটওয়ার্ক ইন্টারফেসগুলি কেন অন্য ডিভাইসের মতো / ডিভাইসে নেই?


70

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


2
আমি মন্ত্র সত্ত্বেও ইউনিক্সের সমস্ত কিছুই কীভাবে ফাইল নয় এবং এটি সম্পর্কে কমপক্ষে একটি নিবন্ধ / ছোঁয়া দেখেছি it আমি এখন এটি খুঁজে পাচ্ছি না, তবে এটি সম্ভবত প্ল্যান 9 বা জিএনইউ হার্ট সম্পর্কে একটি নিবন্ধ ছিল।
শন জে। গফ

3
কমপক্ষে সোলারিসের অধীনে, / dev (/ ডিভাইসগুলি আসলে) এর অধীনে নেটওয়ার্ক ইন্টারফেস ডিভাইস রয়েছে।
jlliagre

2
ইউনিক্সের কোনও ফাইল হওয়ার অর্থ এই নয় যে এটি পুরো ব্যবহারকারীর সাথে সেভাবে আচরণ করে, কেবলমাত্র অন্তর্নিহিত এপিআইগুলি ফাইল বর্ণনাকারীর উপর বুদ্ধিমান এবং অভিন্নভাবে পরিচালনা করে। যখন আপনি একটি সকেট খুলতে, উদাহরণস্বরূপ, আপনি ব্যবহার করতে পারেন read()এবং write()একই ভাবে আপনি একটি ফাইল-এ would, কিন্তু ইউটিলিটি ফাংশন recv()এবং send()আপনার জন্য আরো অনেক legwork না।
jgoldschrafe

1
এটি এমন একটি প্রশ্ন ছিল যা আমি নিজেকে বছরের পর বছর ধরে জিজ্ঞাসা করছিলাম। জিজ্ঞাসা করার জন্য এবং লোকেরা উত্তর দেওয়ার জন্য ধন্যবাদ!
ডোলানর

উত্তর:


43

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

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

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

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

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

{ echo $'GET http://www.google.com/ HTTP/1.0\r';
  echo $'Host: www.google.com\r';
  echo $'\r' >&0; cat; } <>/dev/tcp/www.google.com/80

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

ডিভাইসের অন্য একটি ক্লাসের /devলিনাক্সে সাধারণত প্রবেশিকা থাকে না (তবে কিছু অন্যান্য ইউনিক্স ভেরিয়েন্টে থাকে) হ'ল ভিডিও অ্যাডাপ্টার। নীতিগতভাবে, সাধারণ ভিডিও অ্যাডাপ্টারগুলি ফ্রেমবফার ডিভাইস হিসাবে প্রকাশিত হতে পারে , যা প্রতিটি পিক্সেলের রঙকে উপস্থাপনকারী ব্লক দ্বারা নির্মিত ব্লক ডিভাইস হতে পারে। ত্বরণযুক্ত ভিডিও অ্যাডাপ্টারগুলিকে অক্ষর ডিভাইস হিসাবে উপস্থাপন করা যেতে পারে যেখানে অ্যাপ্লিকেশনগুলি আদেশ পাঠায়। এখানে, ডিভাইস ইন্টারফেসের অপূর্ণতা হ'ল এটি ধীর গতির: প্রদর্শনকারী অ্যাপ্লিকেশনটির (অনুশীলনে, একটি এক্স সার্ভার) যখনই কিছু প্রদর্শিত হবে তখন কার্নেল কল করা দরকার। এর পরিবর্তে যা ঘটে তা হ'ল এক্স সার্ভারটি বেশিরভাগই সরাসরি ভিডিও অ্যাডাপ্টারের স্মৃতিতে লিখে দেয় কারণ এটি দ্রুত।


2
বস্তুত, গতিবৃদ্ধপ্রাপ্ত ভিডিও অ্যাডাপ্টার হয় লিনাক্সে ডিআরআই মাধ্যমে chardevs হিসাবে রপ্তানি। ফাইল I / O অপারেশনগুলি প্রয়োজনীয়ভাবে read/ writeহয় না; আপনি mmapম্যাপযুক্ত ফাইলগুলির জন্য এবং ডিভাইসের মেমরিতে সরাসরি অ্যাক্সেসের জন্য ব্যবহার করতে পারেন ।
minmaxavg

11

আপনি /sys/class/netডিরেক্টরিতে এটি খুঁজে পেতে পারেন । এটি /sys/device/../../আমার অন্যান্য ভার্চুয়াল মেশিন (লিনাক্স কার্নেল 3.10) আউটপুটটিতে অন্য ফাইলের সাথে প্রতীকী লিঙ্ক । এবং আপনি udevadm info <filename>এর বৈশিষ্ট্যটি দেখতে কমান্ডটি ব্যবহার করতে পারেন

lrwxrwxrwx. 1 root root 0 Apr  3 13:38 ens33 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/ens33

U&L এ আপনাকে স্বাগতম। সর্বদা ইনলাইন কোডের চারপাশে ব্যাককোটগুলি ব্যবহার করুন, বিশেষত যদি আপনি <>অন্যথায় ব্যবহার করেন যা মার্কআপ হিসাবে ব্যাখ্যা করা হয়। (আপনি কোনও ASCII ট্রান্সক্রিপশন দিয়ে শুরু করতে নিজের নামও পরিবর্তন করতে চাইতে পারেন, যেহেতু সাধারণ কীবোর্ডযুক্ত লোকেরা আপনার যে কোনও মন্তব্যের প্রতিক্রিয়াতে আপনার নামের প্রথম অক্ষরটি লিখতে অসুবিধা হবে)
অ্যান্থন

9

টিসিপি / আইপি নেটওয়ার্কিংয়ের এটিএন্ডটি / সোলারিস "ট্রান্সপোর্ট লেভেল ইন্টারফেস" (টিএলআই) পদ্ধতিতে "/ dev / tcp" বা "/ dev / udp" এর মতো বিশেষ ফাইল রয়েছে। প্রোগ্রামার একটি উপযুক্ত প্রোটোকল পরিবারের সকেট পেতে সেই বিশেষ ফাইলটি খোলে। আমি মনে করি যে সোলারিসে সকেট ব্যবহার করে এমন একটি প্রোগ্রাম সংকলন করার সময় আপনার কাছে "-lnsl" থাকতে হবে: এটির নীচে এটি টিএলআই রয়েছে।


4
লিনাক্সেরও রয়েছে /dev/tcpএবং /dev/udp, বেশিরভাগ কার্নেল এটি অক্ষম করেছে।
বাহামত

3

যদিও Linuxতিহ্যগতভাবে লিনাক্স সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ নয়, তবে যেকোন ধরণের ওপেন গ্রুপের মান অনুসরণ করুন (সম্ভবত এলএসবির বাইরে)। আরও ইউনিক্স কার্যকারিতা লিনাক্সে পোর্ট করার চেষ্টা করা হয়েছে।

গ্লেনডিক্স হ'ল এমন একটি প্রকল্প যা প্ল্যান 9 থেকে / নেট ভার্চুয়াল ফাইল সিস্টেমের একটি বন্দর দেয় যা আপনাকে আপনার বর্ণনার মতোই করতে দেয়।

লিনাক্সে প্ল্যান 9 পোর্ট / নেট ফাইল সিস্টেম

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