এটি আমার সংস্থার একজন সফ্টওয়্যার ইঞ্জিনিয়ার দ্বারা উত্থাপিত একটি প্রশ্ন ছিল। আমি বিস্তৃত সংজ্ঞা আগ্রহী।
এটি আমার সংস্থার একজন সফ্টওয়্যার ইঞ্জিনিয়ার দ্বারা উত্থাপিত একটি প্রশ্ন ছিল। আমি বিস্তৃত সংজ্ঞা আগ্রহী।
উত্তর:
একটি টিসিপি সকেট একটি আইডি ঠিকানা এবং একটি নির্দিষ্ট টিসিপি সংযোগ বা শ্রবণকারী অবস্থার প্রেক্ষাপটে একটি পোর্ট দ্বারা সংজ্ঞায়িত একটি এন্ডপয়েন্ট দৃষ্টান্ত ।
একটি বন্দর হ'ল ভার্চুয়ালাইজেশন সনাক্তকারী যা একটি পরিষেবা শেষ পয়েন্টকে সংজ্ঞায়িত করে (কোনও সার্ভিস উদাহরণস্বরূপ এন্ডপয়েন্ট অরফ সেশন আইডেন্টিফায়ার থেকে আলাদা )।
একটি TCP সকেট হয় না একটি সংযোগ , এটি একটি নির্দিষ্ট সংযোগ শেষবিন্দু নেই।
কোনও পরিষেবা শেষ পয়েন্টে সমবর্তী সংযোগ থাকতে পারে , কারণ একটি সংযোগটি এর স্থানীয় এবং দূরবর্তী উভয় দ্বারা চিহ্নিত করা হয়েছে প্রান্তে , যা ট্র্যাফিককে একটি নির্দিষ্ট পরিষেবা উদাহরণে রুট করার অনুমতি দেয়।
প্রদত্ত ঠিকানা / পোর্ট সংমিশ্রণের জন্য কেবলমাত্র একটি শ্রোতার সকেট থাকতে পারে ।
এটি একটি আকর্ষণীয় প্রশ্ন যা আমাকে মনে হয়েছিল যে আমি ভিতরে জানি things আপনি ভেবেছিলেন "সকেট" এর মতো একটি নাম স্ব-বর্ণনামূলক হবে: স্পষ্টতই শেষ পয়েন্টে আপনি কোনও নেটওয়ার্কের তারের সংযোগ স্থাপনের চিত্রটি উত্থাপন করার জন্য বেছে নেওয়া হয়েছিল, সেখানে শক্তিশালী ক্রিয়ামূলক সমান্তরাল রয়েছে। তবুও, নেটওয়ার্ক পার্লেন্সে "সকেট" শব্দটি এত বেশি লাগেজ বহন করে যে সতর্কতার সাথে পুনরায় পরীক্ষা করা প্রয়োজন।
বিস্তৃত সম্ভাব্য অর্থে, একটি বন্দর হল প্রবেশ বা বিন্যাসের একটি বিন্দু point যদিও নেটওয়ার্কিং প্রসঙ্গে ব্যবহৃত হয়নি, ফরাসী শব্দটি পোর্টের আক্ষরিক অর্থে দরজা বা প্রবেশদ্বার , এর অর্থ জোর দিয়ে বোঝানো হচ্ছে যে বন্দরগুলি পরিবহণের শেষের পয়েন্ট যা আপনি ডেটা বা বড় ইস্পাত পাত্রে প্রেরণ করেন কিনা।
এই আলোচনার উদ্দেশ্যে আমি টিসিপি-আইপি নেটওয়ার্কগুলির প্রসঙ্গে বিবেচনা সীমাবদ্ধ করব। ওএসআই মডেলটি খুব ভাল তবে কখনই পুরোপুরি প্রয়োগ করা হয়নি, উচ্চ ট্র্যাফিকের উচ্চ-চাপের অবস্থার তুলনায় অনেক কম বিস্তৃত।
আইপি ঠিকানা এবং একটি পোর্টের সংমিশ্রণটি কঠোরভাবে একটি এন্ডপয়েন্ট হিসাবে পরিচিত এবং কখনও কখনও তাকে সকেটও বলা হয়। এই ব্যবহারটি মূল টিসিপি স্পেসিফিকেশন আরএফসি793 দিয়ে উত্পন্ন হয়েছে।
একটি টিসিপি সংযোগ দুটি এন্ডপয়েন্টস ওরফে সকেট দ্বারা সংজ্ঞায়িত করা হয় ।
একটি এন্ডপয়েন্ট (সকেট) একটি নেটওয়ার্ক ঠিকানা এবং একটি পোর্ট শনাক্তকারীর সংমিশ্রণ দ্বারা সংজ্ঞায়িত করা হয় । নোট করুন যে ঠিকানা / পোর্টটি দেয় না সম্পূর্ণরূপে কোনও সকেট সনাক্ত (এটি আরও পরে)।
পোর্টগুলির উদ্দেশ্য হ'ল একটি প্রদত্ত নেটওয়ার্ক ঠিকানায় একাধিক প্রান্তকে আলাদা করা। আপনি বলতে পারেন যে একটি বন্দর একটি ভার্চুয়ালাইজড শেষ পয়েন্ট। এই ভার্চুয়ালাইজেশনটি একক নেটওয়ার্ক ইন্টারফেসে একাধিক সমবর্তী সংযোগগুলি সম্ভব করে তোলে।
এটি সকেট জুটি (ক্লায়েন্টের আইপি ঠিকানা, ক্লায়েন্ট পোর্ট নম্বর, সার্ভার আইপি ঠিকানা এবং সার্ভার পোর্ট নম্বর সমন্বিত 4-টিউপল) যা দুটি প্রান্ত নির্দিষ্ট করে যা ইন্টারনেটে প্রতিটি টিসিপি সংযোগটি অনন্যভাবে চিহ্নিত করে। ( টিসিপি-আইপি সচিত্র খণ্ড 1 , ডব্লিউ। রিচার্ড স্টিভেন্স)
বেশিরভাগ সি-উদ্ভূত ভাষায়, সিসকেটের শ্রেণীর উদাহরণ হিসাবে টিসিপি সংযোগ স্থাপন এবং কৌশলগুলি ব্যবহার করে পরিচালনা করা হয়। যদিও উচ্চতর স্তরের বিমূর্ততা পরিচালনা করা সাধারণ, সাধারণত একটি নেটওয়ার্ক স্ট্রিম শ্রেণীর উদাহরণ, এটি সাধারণত সকেটের কোনও সামগ্রীর রেফারেন্স প্রকাশ করে। কোডারের কাছে এই সকেট অবজেক্টটি সংযোগটি উপস্থাপন করে বলে মনে হচ্ছে যে সংযোগটি সকেট অবজেক্টের পদ্ধতি ব্যবহার করে তৈরি এবং ম্যানিপুলেট করা হয়েছে।
সি # তে, টিসিপি সংযোগ স্থাপন করতে (বিদ্যমান শ্রোতার কাছে) প্রথমে আপনি একটি টিসিপিসিলেট তৈরি করুন । আপনি যদি TcpClient কনস্ট্রাক্টরের একটি শেষ পয়েন্টটি নির্দিষ্ট না করেন তবে এটি ডিফল্ট ব্যবহার করে - এক উপায়ে বা অন্যভাবে স্থানীয় শেষ পয়েন্টটি সংজ্ঞায়িত করা হয়। তারপরে আপনি যে সংযোগটি তৈরি করেছেন তার উপর ভিত্তি করেই আপনি অনুরোধ করবেন। এই পদ্ধতির জন্য অন্যান্য প্রান্তটি বর্ণনা করার জন্য একটি প্যারামিটার প্রয়োজন।
এগুলি কিছুটা বিভ্রান্তিকর এবং আপনাকে বিশ্বাস করতে পরিচালিত করে যে একটি সকেট একটি সংযোগ, যা বলক। রিচার্ড ডরম্যান প্রশ্ন না করা পর্যন্ত আমি এই অপ্রয়োজনীয়তার অধীনে শ্রম দিচ্ছিলাম।
প্রচুর পড়া এবং চিন্তাভাবনা করার পরে, আমি এখন নিশ্চিত হয়েছি যে লোকালএন্ডপয়েন্ট এবং রিমোটএন্ডপয়েন্ট দুটি আর্গুমেন্ট গ্রহণকারী একটি কনস্ট্রাক্টরের সাথে ক্লাস টিসিপি সংযোগ স্থাপন করা আরও অনেক বেশি অর্থবোধ করবে । স্থানীয় শেষ পয়েন্টের জন্য যখন ডিফল্ট গ্রহণযোগ্য হয় আপনি সম্ভবত একটি একক যুক্তি রিমোটঅ্যান্ডপয়েন্টকে সমর্থন করতে পারেন । এটি মাল্টিহোমড কম্পিউটারগুলিতে অস্পষ্ট, তবে দূরবর্তী প্রান্তের নিকটতমতম রুটের সাথে ইন্টারফেসটি নির্বাচন করে রাউটিং টেবিলটি ব্যবহার করে অস্পষ্টতাটি সমাধান করা যেতে পারে।
স্পষ্টতা অন্যান্য ক্ষেত্রেও বৃদ্ধি করা হবে। আইপি ঠিকানা এবং পোর্টের সংমিশ্রণে একটি সকেট সনাক্ত করা যায় না :
[...] টিসিপি স্থানীয় এবং বিদেশী ঠিকানাগুলির সমন্বিত চারটি মান ব্যবহার করে ইনকামিং বিভাগগুলিকে ডিলিটিপ্লিক্স করে: গন্তব্য আইপি ঠিকানা, গন্তব্য পোর্ট নম্বর, উত্স আইপি ঠিকানা এবং উত্স পোর্ট নম্বর। টিসিপি নির্ধারণ করতে পারে না কোন প্রক্রিয়াটি কেবল গন্তব্য বন্দরের দিকে তাকিয়ে ইনকামিং বিভাগে আসে। এছাড়াও, [প্রদত্ত পোর্ট নম্বর] এ [বিভিন্ন] শেষ পয়েন্টগুলির মধ্যে একমাত্র আগত সংযোগের অনুরোধগুলি গ্রহণ করবে তা শোনার অবস্থায় রয়েছে। (পি 255, টিসিপি-আইপি সচিত্র ভলিউম 1 , ডব্লু। রিচার্ড স্টিভেন্স)
যেমন আপনি দেখতে পাচ্ছেন, কেবল নেটওয়ার্ক সার্ভিসে একই ঠিকানা / পোর্ট সহ অসংখ্য সকেট থাকা সম্ভব নয়, তবে নির্দিষ্ট ঠিকানা / পোর্টের সংমিশ্রণে কেবল একটি শ্রোতার সকেট রয়েছে। সাধারণ লাইব্রেরি প্রয়োগগুলি একটি সকেট শ্রেণি উপস্থাপন করে যার একটি সংযোগ তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। এটি অত্যন্ত দুর্ভাগ্যজনক, যেহেতু এটি বিভ্রান্তির কারণ এবং এটি দুটি ধারণার ব্যাপক সংঘাতের দিকে পরিচালিত করে।
হাগরওয়াল আমাকে বিশ্বাস করে না (মন্তব্য দেখুন) সুতরাং এখানে একটি আসল নমুনা। আমি একটি ওয়েব ব্রাউজারকে http://dilbert.com এর সাথে সংযুক্ত করেছি এবং তারপরে দৌড়ে এসেছি netstat -an -p tcp
। আউটপুটটির শেষ ছয় লাইনে দুটি সকেট স্বতন্ত্রভাবে সনাক্ত করার জন্য ঠিকানা এবং পোর্ট যথেষ্ট নয় এই দুটি উদাহরণ রয়েছে। 192.168.1.3 (আমার ওয়ার্কস্টেশন) এবং 54.252.94.236:80 (রিমোট HTTP সার্ভার) এর মধ্যে দুটি স্বতন্ত্র সংযোগ রয়েছে
TCP 192.168.1.3:63240 54.252.94.236:80 SYN_SENT
TCP 192.168.1.3:63241 54.252.94.236:80 SYN_SENT
TCP 192.168.1.3:63242 207.38.110.62:80 SYN_SENT
TCP 192.168.1.3:63243 207.38.110.62:80 SYN_SENT
TCP 192.168.1.3:64161 65.54.225.168:443 ESTABLISHED
যেহেতু একটা সকেট একটি সংযোগ শেষবিন্দু না থাকে, তখন ঠিকানা / পোর্ট সমন্বয় সঙ্গে দুই সকেট হয় 207.38.110.62:80
এবং ঠিকানা / পোর্ট সমন্বয় সঙ্গে আরো দুটি 54.252.94.236:80
।
আমি মনে করি হাগরওয়ালের ভুল বোঝাবুঝি আমার "সনাক্তকরণ" শব্দটির খুব যত্ন সহকারে ব্যবহারের ফলে ঘটেছিল। আমার অর্থ "সম্পূর্ণ, নির্বিঘ্নে এবং স্বতন্ত্রভাবে সনাক্তকরণ"। উপরের নমুনায় ঠিকানা / বন্দরের সংমিশ্রণের সাথে দুটি শেষপয়েন্ট রয়েছে 54.252.94.236:80
। যদি আপনার সমস্ত কিছু ঠিকানা এবং পোর্ট হয় তবে এই সকেটগুলি আলাদা করে জানাতে আপনার পর্যাপ্ত তথ্য নেই। সকেট সনাক্ত করার জন্য এটি পর্যাপ্ত তথ্য নয় ।
আরএফসি 79৯৩ এর ২.7 ধারা অনুচ্ছেদে বলা হয়েছে
শেষের দিকে সকেটের জুড়ি দ্বারা একটি সংযোগ সম্পূর্ণরূপে নির্দিষ্ট করা হয়। স্থানীয় সকেট বিভিন্ন বিদেশী সকেটের সাথে অনেক সংযোগে অংশ নিতে পারে।
সকেটের এই সংজ্ঞাটি প্রোগ্রামিং দৃষ্টিকোণ থেকে সহায়ক নয় কারণ এটি কোনও সকেটের অবজেক্টের মতো নয় , যা কোনও বিশেষ সংযোগের সমাপ্তি। একজন প্রোগ্রামার এবং এই প্রশ্নের শ্রোতাদের বেশিরভাগই প্রোগ্রামার, এটি একটি গুরুত্বপূর্ণ কার্যকরী পার্থক্য।
টিসিপি-আইপি সচিত্র খণ্ড 1 প্রোটোকল , ডব্লিউ। রিচার্ড স্টিভেন্স, 1994 অ্যাডিসন ওয়েসলি
আরএফসি 79৯৩ , তথ্য বিজ্ঞান ইনস্টিটিউট, দক্ষিণ ক্যালিফোর্নিয়া বিশ্ববিদ্যালয় ডারপা জন্য A
আরএফসি 147 , একটি সকেটের সংজ্ঞা, জোয়েল এম উইনেট, লিংকন ল্যাবরেটরি
একটি সকেট তিনটি জিনিস নিয়ে গঠিত:
একটি বন্দর হল 1 এবং 65535 এর মধ্যে এমন একটি সংখ্যা যা কোনও ডিভাইসে লজিক্যাল গেটকে নির্দেশ করে। ক্লায়েন্ট এবং সার্ভারের মধ্যে প্রতিটি সংযোগের জন্য একটি অনন্য সকেট প্রয়োজন।
উদাহরণ স্বরূপ:
একটি সকেট দুটি নেটওয়ার্ক অ্যাপ্লিকেশনগুলির মধ্যে একটি একক সংযোগ উপস্থাপন করে। এই দুটি অ্যাপ্লিকেশন নামমাত্রভাবে বিভিন্ন কম্পিউটারে চালিত হয়, তবে সকেটগুলি একটি কম্পিউটারে ইন্টারপ্রোসেস যোগাযোগের জন্যও ব্যবহার করা যেতে পারে। অ্যাপ্লিকেশনগুলি একে অপরের সাথে যোগাযোগের জন্য একাধিক সকেট তৈরি করতে পারে। সকেট দ্বি নির্দেশমূলক, যার অর্থ সংযোগের উভয় পক্ষই উভয়ই ডেটা প্রেরণ এবং গ্রহণ করতে সক্ষম। অতএব ওএসআই মডেলের যে কোনও স্তরের উপরের দিকে 2 থেকে তাত্ত্বিকভাবে একটি সকেট তৈরি করা যেতে পারে। প্রোগ্রামাররা প্রায়শই পরোক্ষভাবে নেটওয়ার্ক প্রোগ্রামিংয়ে সকেট ব্যবহার করে। উইনসকের মতো প্রোগ্রামিং লাইব্রেরিগুলি সকেট প্রোগ্রামিংয়ের অনেক নিম্ন-স্তরের বিশদ লুকায়। সকেটগুলি ১৯৮০ এর দশকের গোড়ার দিক থেকে বিস্তৃত ব্যবহৃত।
একটি পোর্ট নেটওয়ার্ক যোগাযোগের জন্য একটি এন্ডপয়েন্ট বা "চ্যানেল" উপস্থাপন করে। পোর্ট নম্বরগুলি একই কম্পিউটারে বিভিন্ন অ্যাপ্লিকেশনকে একে অপরের সাথে হস্তক্ষেপ না করে নেটওয়ার্ক সংস্থানগুলি ব্যবহার করার অনুমতি দেয়। পোর্ট সংখ্যাগুলি সাধারণত নেটওয়ার্ক প্রোগ্রামিংয়ে দেখা যায়, বিশেষত সকেট প্রোগ্রামিংয়ে। কখনও কখনও, যদিও, বন্দর নম্বরগুলি নৈমিত্তিক ব্যবহারকারীর কাছে দৃশ্যমান করা হয়। উদাহরণস্বরূপ, কোনও ব্যক্তি ইন্টারনেটে ভিজিট করা কয়েকটি ওয়েবসাইট নীচের মত একটি URL ব্যবহার করে:
http://www.mairie-metz.fr:8080/ এই উদাহরণস্বরূপ, 8080 নম্বরটি ওয়েব সার্ভারের সাথে সংযোগ করতে ওয়েব ব্রাউজার দ্বারা ব্যবহৃত পোর্ট নম্বরটিকে বোঝায়। সাধারণত, কোনও ওয়েবসাইট পোর্ট নম্বর ৮০ ব্যবহার করে এবং এই নম্বরটি ইউআরএল (যদিও এটি হতে পারে) এর সাথে অন্তর্ভুক্ত করার দরকার নেই।
আইপি নেটওয়ার্কিংয়ে, পোর্ট নম্বরগুলি তাত্ত্বিকভাবে 0 থেকে 65535 পর্যন্ত হতে পারে Most বেশিরভাগ জনপ্রিয় নেটওয়ার্ক অ্যাপ্লিকেশন, যদিও, ব্যাটার নম্বরগুলি রেঞ্জের নিম্ন প্রান্তে ব্যবহার করে (যেমন HTTP এর জন্য 80)।
দ্রষ্টব্য: শব্দ বন্দরটি নেটওয়ার্ক প্রযুক্তির আরও কয়েকটি দিককে বোঝায়। একটি বন্দর পেরিফেরিয়াল ডিভাইসগুলির জন্য যেমন সিরিয়াল, সমান্তরাল এবং ইউএসবি পোর্টগুলির জন্য একটি শারীরিক সংযোগ বিন্দুকে উল্লেখ করতে পারে। শব্দবন্দরটি কিছু ইথারনেট সংযোগ পয়েন্টগুলিকেও বোঝায় যেমন হাব, সুইচ বা রাউটারগুলির মধ্যে রয়েছে।
রেফ http://compnetworking.about.com/od/basicnetworkingconcepts/l/bldef_port.htm
রেফ http://compnetworking.about.com/od/itinformationtechnology/l/bldef_sket.htm
কিছু উপমা সঙ্গে
যদিও সকেটের জন্য উপরে ইতিমধ্যে অনেকগুলি প্রযুক্তিগত জিনিস সরবরাহ করা হয়েছে ... আমি আমার উত্তরটি যুক্ত করতে চাই, সেক্ষেত্রে যদি কেউ এখনও আইপি, বন্দর এবং সকেটের মধ্যে পার্থক্য অনুভব করতে না পারে
একটি সার্ভার এস বিবেচনা করুন ,
এবং বলুন যে ব্যক্তি এক্স, ওয়াই, জেডের সেই সার্ভার এস এর একটি পরিষেবা (চ্যাট পরিষেবা বলুন) দরকার
তারপর
আইপি ঠিকানা বলে -> কে? এক্স, ওয়াই, জেডের সাথে যোগাযোগ করতে চান এমন চ্যাট সার্ভারটি কি 'এস'
ঠিক আছে, আপনি "সার্ভার কে" পেয়েছেন
তবে ধরুন যে সার্ভার 'এস' অন্যান্য লোককেও কিছু অন্যান্য পরিষেবাদি সরবরাহ করছে, বলুন 'এস' ব্যক্তি এ, বি, সি ব্যক্তিকে স্টোরেজ পরিষেবা সরবরাহ করে
তারপর
পোর্ট বলছে ---> কোনটি? আপনার (এক্স, ওয়াই, জেড) পরিষেবাটির প্রয়োজন চ্যাট পরিষেবা দরকার যা স্টোরেজ পরিষেবা নয়
ঠিক আছে .., আপনি সার্ভার তৈরি করে জানতে পারেন যে 'চ্যাট পরিষেবা' আপনি যা চান সেটি সঞ্চয়স্থান নয়
কিন্তু
আপনি তিন এবং সার্ভার তিনটি আলাদাভাবে সনাক্ত করতে চাইবে
সেখানে আসে সকেট
এখন সকেট বলে -> কোনটি?বিশেষ সংযোগ
অর্থাৎ, বলে,
ব্যক্তির জন্য সকেট 1 এক্স
ব্যক্তির জন্য সকেট 2 ওয়াই
এবং ব্যক্তি Z এর জন্য সকেট 3
আমি আশা করি যে এটি এমন কাউকে সহায়তা করে যা এখনও বিভ্রান্ত ছিল :)
প্রথমত, আমি মনে করি আমাদের এ থেকে বি প্যাকেট পাওয়ার বিষয়টি কীভাবে তা বোঝা উচিত understanding
কোনও নেটওয়ার্কের একটি সাধারণ সংজ্ঞা হ'ল ওএসআই মডেল ব্যবহার যা একটি নেটওয়ার্ককে উদ্দেশ্য অনুসারে কয়েকটি স্তরকে পৃথক করে। এখানে কয়েকটি গুরুত্বপূর্ণ বিষয় রয়েছে, যা আমরা এখানে কভার করব:
টিসিপিতে বন্দরগুলির ধারণাগুলি অন্তর্ভুক্ত রয়েছে । এগুলি একই আইপি ঠিকানায় কার্যকরভাবে বিভিন্ন ডেটা এন্ডপয়েন্টগুলি যেখানে কোনও ইন্টারনেট সকেট ( AF_INET
) বাঁধাই করতে পারে।
এটি যেমন হয়, তেমনি ইউডিপি এবং অন্যান্য পরিবহণ স্তর প্রোটোকলও থাকে। তাদের প্রযুক্তিগতভাবে পোর্টগুলি বৈশিষ্ট্যযুক্ত করার দরকার নেই , তবে এই বন্দরগুলি উপরের স্তরগুলিতে একাধিক অ্যাপ্লিকেশনগুলির জন্য বহির্গামী সংযোগগুলি প্রাপ্ত (এবং সত্যই তৈরি করতে) একই কম্পিউটার ব্যবহার করার উপায় সরবরাহ করে provide
যা আমাদের টিসিপি বা ইউডিপি সংযোগের শারীরবৃত্তিতে নিয়ে আসে। প্রত্যেকটিতে একটি উত্স বন্দর এবং ঠিকানা, এবং একটি লক্ষ্য পোর্ট এবং ঠিকানা রয়েছে। এটি এমন যে কোনও প্রদত্ত অধিবেশনে, উত্স থেকে লক্ষ্য প্রয়োগটি প্রতিক্রিয়া জানাতে পারে এবং গ্রহণ করতে পারে।
সুতরাং পোর্টগুলি মূলত একই ঠিকানা ভাগ করে নেওয়ার একাধিক সমবর্তী সংযোগের অনুমতি দেওয়ার একটি নির্দিষ্টকরণ-বাধ্যতামূলক উপায়।
এখন, আমাদের কীভাবে কোনও অ্যাপ্লিকেশন পয়েন্ট থেকে বাইরের বিশ্বে যোগাযোগ করবেন সেদিকে আমাদের নজর দেওয়া দরকার। এটি করার জন্য, আপনাকে আপনার অপারেটিং সিস্টেমটি দয়া করে জিজ্ঞাসা করতে হবে এবং যেহেতু বেশিরভাগ ওএসগুলি বার্কলে সকেটগুলি কাজ করার পদ্ধতি সমর্থন করে, আমরা দেখতে পাই যে আমরা এই জাতীয় অ্যাপ্লিকেশন থেকে পোর্টগুলি যুক্ত সকেট তৈরি করতে পারি:
int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...
গ্রেট! সুতরাং sockaddr
কাঠামোগুলিতে, আমরা আমাদের বন্দর এবং বাম নির্দিষ্ট করব! কাজ শেষ! বেশ, প্রায়, ব্যতীত:
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
সম্ভব। উরগ, এই কাজগুলিতে একটি স্প্যানার ছুড়ে ফেলেছে!
ঠিক আছে, আসলে এটি হয়নি। আমাদের যা করতে হবে তা হ'ল কিছু উপযুক্ত সংজ্ঞা দেওয়া:
/var/run/database.sock
।ভাল খবর! যে জিনিস আপ পরিপাটি। আমাদের প্রকল্পে তাই,
সুতরাং সত্যিই একটি বন্দর একটি ইন্টারনেট সকেট গঠনের প্রয়োজনীয়তার একটি উপসেট। দুর্ভাগ্যক্রমে, এটি ঠিক তাই ঘটে যে সকেট শব্দের অর্থটি বিভিন্ন ধরণের ধারণাকে প্রয়োগ করা হয়েছে। সুতরাং আমি আন্তরিকভাবে আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার পরবর্তী প্রকল্পের সকেটের নাম দিন, কেবল বিভ্রান্তি বাড়ানোর জন্য;)
একটি সকেট = আইপি ঠিকানা + একটি পোর্ট (সংখ্যার ঠিকানা)
একসাথে তারা একটি মেশিনে নেটওয়ার্ক সংযোগের জন্য একটি এন্ড-পয়েন্টটি সনাক্ত করে। (আমি কি নেটওয়ার্ক 101 এনেছি?)
সাধারণত, আপনি অনেক তাত্ত্বিক পাবেন তবে এই দুটি ধারণাকে পৃথক করার অন্যতম সহজ উপায় হ'ল:
কোনও পরিষেবা পেতে, আপনার একটি পরিষেবা নম্বর প্রয়োজন। এই পরিষেবা নম্বরটিকে একটি বন্দর বলা হয়। যে হিসাবে সহজ।
উদাহরণস্বরূপ, পরিষেবা হিসাবে এইচটিটিপি 80 পোর্টে চলছে।
এখন, অনেক লোক পরিষেবাটির অনুরোধ করতে পারে এবং ক্লায়েন্ট-সার্ভারের একটি সংযোগ স্থাপন করেছে। প্রচুর সংযোগ থাকবে। প্রতিটি সংযোগ একটি ক্লায়েন্ট প্রতিনিধিত্ব করে। প্রতিটি সংযোগ বজায় রাখার জন্য, সার্ভারটি তার ক্লায়েন্ট বজায় রাখতে সংযোগ প্রতি একটি সকেট তৈরি করে।
2 পিসির মধ্যে সংযোগের সাথে সকেটকে সমীকরণ করার অনেকগুলি উত্তর রয়েছে বলে মনে হচ্ছে ... যা আমি মনে করি এটি একেবারেই ভুল। একটি সকেট সর্বদা 1 পিসির শেষ পয়েন্ট ছিল, এটি সংযুক্ত বা নাও থাকতে পারে - অবশ্যই আমরা সকলেই শ্রোতা বা ইউডিপি সকেটগুলি ব্যবহার করেছি। গুরুত্বপূর্ণ অংশটি হ'ল এটি ঠিকানাযোগ্য এবং সক্রিয়। ১.১.১.১.৩৩৩৩৪৪ এ একটি বার্তা প্রেরণে কাজ করা সম্ভবত না, কারণ সেই শেষ পয়েন্টের জন্য কোনও সকেট সংজ্ঞায়িত করা হয়নি।
সকেটগুলি প্রোটোকল নির্দিষ্ট - সুতরাং টিসিপি / আইপি এবং ইউডিপি / আইপি উভয়ই ব্যবহার করে এমন স্বতন্ত্রতার বাস্তবায়ন * (আইপ্যাড্রেস: পোর্ট) উদাহরণস্বরূপ, আইপিএক্স (নেটওয়ার্ক, নোড, এবং ... আহেম, সকেট - তবে আলাদা সাধারণ "সকেট" শব্দটি দ্বারা সকেট বোঝানো হয় IP আইপিএক্স সকেট নম্বরগুলি আইপি পোর্টগুলির সমতুল্য)। তবে, তারা সকলেই একটি অনন্য ঠিকানাযোগ্য শেষ পয়েন্ট দেয়।
যেহেতু আইপি প্রভাবশালী প্রোটোকল হয়ে উঠেছে, একটি পোর্ট (নেটওয়ার্কিং শর্তে) একটি ইউডিপি বা টিসিপি পোর্ট নম্বর দ্বারা সমার্থক হয়ে উঠেছে - যা সকেটের ঠিকানার একটি অংশ।
ইউডিপি সংযোগ-কম - যার অর্থ 2 টি শেষ পয়েন্টের মধ্যে কোনও ভার্চুয়াল সার্কিট তৈরি হয় না। যাইহোক, আমরা এখনও ইউডিপি সকেটগুলিকে শেষ পয়েন্ট হিসাবে উল্লেখ করি । এপিআই ফাংশনগুলি এটি পরিষ্কার করে দেয় যে উভয়ই কেবল সকেটের বিভিন্ন ধরণের - SOCK_DGRAM
এটি ইউডিপি (কেবল একটি বার্তা প্রেরণ) এবং SOCK_STREAM
এটি টিসিপি (ভার্চুয়াল সার্কিট তৈরি করা)।
প্রযুক্তিগতভাবে, আইপি শিরোনামের আইপি ঠিকানা রয়েছে এবং আইপি শীর্ষে প্রোটোকল (ইউডিপি বা টিসিপি) পোর্ট নম্বর ধারণ করে। এটি অন্যান্য প্রোটোকলগুলি থাকা সম্ভব করে (যেমন আইসিএমপি যার কোনও পোর্ট নম্বর নেই, তবে আইপি ঠিকানা সম্পর্কিত তথ্য রয়েছে)।
সংক্ষিপ্ত সংক্ষিপ্ত উত্তর।
একটি পোর্ট এমন একটি হোস্টের অভ্যন্তরীণ ঠিকানা হিসাবে বর্ণনা করা যেতে পারে যা কোনও প্রোগ্রাম বা প্রক্রিয়া সনাক্ত করে।
একটি সকেট একটি প্রোগ্রামিং ইন্টারফেস হিসাবে বর্ণিত হতে পারে যা একটি প্রোগ্রামকে অন্য প্রোগ্রাম বা প্রক্রিয়াগুলির সাথে, ইন্টারনেটে বা স্থানীয়ভাবে যোগাযোগ করতে দেয়।
এগুলি দুটি পৃথক ডোমেনের পদ: 'পোর্ট' টিসিপি / আইপি নেটওয়ার্কিংয়ের ধারণা, 'সকেট' একটি এপিআই (প্রোগ্রামিং) জিনিস। একটি 'সকেট' তৈরি করা হয় (কোডে) একটি পোর্ট এবং একটি হোস্টনাম বা নেটওয়ার্ক অ্যাডাপ্টার নিয়ে এবং সেগুলি ডেটা কাঠামোর সাথে সংযুক্ত করে যা আপনি ডেটা প্রেরণ বা গ্রহণ করতে ব্যবহার করতে পারেন।
এগুলি বেসিক নেটওয়ার্কিং ধারণাগুলি তাই আমি এগুলি বিশদগুলিতে বোঝার সহজ তবে একটি বিস্তৃত পদ্ধতিতে ব্যাখ্যা করব।
সুতরাং নেটওয়ার্কিংয়ের একটি সকেট একটি ভার্চুয়াল যোগাযোগ ডিভাইস যা একটি জোড় (আইপি, পোর্ট) = (ঠিকানা, পরিষেবা) এ আবদ্ধ।
বিঃদ্রঃ:
আশা করি এটি আপনার সন্দেহকে সাফ করবে
চমৎকার আপ-ভোট দেওয়া উত্তরগুলি পড়ার পরে, আমি দেখতে পেয়েছি যে নিম্নলিখিত প্রোগ্রামটির জন্য আমার জন্য জোর দেওয়া দরকার, নেটওয়ার্ক প্রোগ্রামিংয়ের একজন নতুন:
টিসিপি-আইপি সংযোগগুলি হ'ল দ্বি-দিকনির্দেশক পথগুলি: একটি ঠিকানা যুক্ত হয়: অন্য ঠিকানার সাথে পোর্ট সংমিশ্রণ: পোর্ট সংমিশ্রণ। সুতরাং, যখনই আপনি আপনার স্থানীয় মেশিন থেকে কোনও রিমোট সার্ভারের কোনও বন্দরে কোনও সংযোগ খুলুন (www.google.com:80 বলুন), আপনি সার্ভারটি প্রেরণের অনুমতি দেওয়ার জন্য, সংযোগের সাথে আপনার মেশিনে একটি নতুন পোর্ট নম্বরও যুক্ত করছেন আপনার কাছে ফিরে আসা জিনিসগুলি (যেমন 127.0.0.1:65234)। আপনার মেশিনের সংযোগগুলি দেখতে নেটট্যাট ব্যবহার করা সহায়ক হতে পারে:
> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.0.6.49871 17.172.232.57.5223 ESTABLISHED
...
123.132.213.231 # IP address
:1234 # port number
123.132.213.231:1234 # socket address
একটি সংযোগ ঘটে যখন 2 সকেট এক সাথে আবদ্ধ হয়।
সকেট একটি বিশেষ ধরণের ফাইল হ্যান্ডেল যা অপারেটিং সিস্টেম থেকে নেটওয়ার্ক পরিষেবাদি অনুরোধ করার জন্য একটি প্রক্রিয়া দ্বারা ব্যবহৃত হয়। একটি সকেটের ঠিকানাটি ট্রিপল: {প্রোটোকল, স্থানীয় ঠিকানা, স্থানীয়-প্রক্রিয়া} যেখানে স্থানীয় প্রক্রিয়াটি একটি বন্দর নম্বর দ্বারা চিহ্নিত করা হয়।
টিসিপি / আইপি স্যুটে উদাহরণস্বরূপ:
c টিসিপি, 193.44.234.3, 12345}
একটি কথোপকথন দুটি প্রক্রিয়া মধ্যে যোগাযোগ লিঙ্ক এইভাবে দুটি মধ্যে একটি সম্পর্ক চিত্রিত করে। একটি অ্যাসোসিয়েশন হ'ল 5-টিপল যা সম্পূর্ণভাবে দুটি প্রক্রিয়া নির্দিষ্ট করে যা সংযোগকে অন্তর্ভুক্ত করে: {প্রোটোকল, স্থানীয় ঠিকানা, স্থানীয়-প্রক্রিয়া, বিদেশী ঠিকানা, বিদেশী প্রক্রিয়া}
টিসিপি / আইপি স্যুটে উদাহরণস্বরূপ:
c টিসিপি, 193.44.234.3, 1500, 193.44.234.5, 21}
একটি বৈধ সমিতি হতে পারে।
অর্ধ-সংস্থানটি হ'ল: {প্রোটোকল, স্থানীয় ঠিকানা, স্থানীয় প্রক্রিয়া}
অথবা
{প্রোটোকল, বিদেশী ঠিকানা, বিদেশী প্রক্রিয়া}
যা সংযোগের প্রতিটি অর্ধেক নির্দিষ্ট করে।
অর্ধ-সমিতিকে সকেট বা পরিবহন ঠিকানাও বলা হয়। এটি হ'ল একটি সকেট যোগাযোগের একটি শেষ পয়েন্ট যা কোনও নেটওয়ার্কে নামকরণ এবং সম্বোধন করা যায়। সকেট ইন্টারফেসটি যোগাযোগ প্রোটোকলের একাধিক অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই) এর একটি। জেনেরিক যোগাযোগ প্রোগ্রামিং ইন্টারফেস হিসাবে নির্মিত, এটি প্রথম 4.2BSD ইউনিক্স সিস্টেম দ্বারা প্রবর্তিত হয়েছিল। যদিও এটি মানসম্মত হয়নি, এটি একটি ডি-ফ্যাক্টো শিল্পের মান হিসাবে পরিণত হয়েছে।
একটি সকেট একটি যোগাযোগের শেষ পয়েন্ট হয়। একটি সকেট সরাসরি টিসিপি / আইপি প্রোটোকল পরিবারের সাথে সম্পর্কিত নয়, এটি আপনার সিস্টেম সমর্থন করে এমন কোনও প্রোটোকল দিয়ে ব্যবহার করা যেতে পারে। সি সকেট এপিআই আশা করে যে আপনি প্রথমে সিস্টেম থেকে একটি ফাঁকা সকেট বস্তু পাবেন যা আপনি তখন স্থানীয় সকেটের ঠিকানার সাথে আবদ্ধ করতে পারেন (সংযোগ-ভিত্তিক প্রোটোকলের জন্য আগত ট্র্যাফিকটি সরাসরি পুনরুদ্ধার করতে বা সংযোগ-ভিত্তিক প্রোটোকলের জন্য আগত সংযোগের অনুরোধগুলি গ্রহণ করতে) বা যে আপনি একটি দূরবর্তী সকেট ঠিকানার সাথে সংযোগ করতে পারেন (উভয় প্রোটোকলের জন্য)। আপনি দুটোই নিয়ন্ত্রণ করতে চাইলে আপনি উভয়ই করতে পারেন, স্থানীয় সকেটের ঠিকানাটি সকেটের সাথে আবদ্ধ এবং দূরবর্তী সকেটের ঠিকানাটি সকেটের সাথে সংযুক্ত রয়েছে। সংযোগ-স্বল্প প্রোটোকলগুলির জন্য সকেট সংযোগ করা এমনকি alচ্ছিক তবে আপনি যদি এটি না করেন তবে আপনি ' আপনি সকেটটি যে প্যাকেটটি প্রেরণ করতে চান তার সাথে গন্তব্য ঠিকানাও পাস করতে হবে যেমন সকেট কীভাবে জানতে পারে যে এই ডেটা কোথায় প্রেরণ করবে? সুবিধা হ'ল আপনি বিভিন্ন সকেটের ঠিকানায় প্যাকেট প্রেরণের জন্য একটি একক সকেট ব্যবহার করতে পারেন। একবার আপনি নিজের সকেটটি কনফিগার করেছেন এবং এমনকি সংযুক্ত হয়ে গেলে, এটি দ্বি-দিকনির্দেশক যোগাযোগ পাইপ হিসাবে বিবেচনা করুন। আপনি কোনও গন্তব্যে ডেটা প্রেরণ করতে এটি ব্যবহার করতে পারেন এবং কিছু গন্তব্য এটি আপনার কাছে ডেটা ফেরত দেওয়ার জন্য ব্যবহার করতে পারেন। আপনি সকেটে যা লেখেন তা পাঠানো হয় এবং যা প্রাপ্ত হয়েছে তা পড়ার জন্য উপলব্ধ। আপনি কোনও গন্তব্যে ডেটা প্রেরণ করতে এটি ব্যবহার করতে পারেন এবং কিছু গন্তব্য এটি আপনার কাছে ডেটা ফেরত দেওয়ার জন্য ব্যবহার করতে পারেন। আপনি সকেটে যা লেখেন তা পাঠানো হয় এবং যা প্রাপ্ত হয়েছে তা পড়ার জন্য উপলব্ধ। আপনি কোনও গন্তব্যে ডেটা প্রেরণ করতে এটি ব্যবহার করতে পারেন এবং কিছু গন্তব্য এটি আপনার কাছে ডেটা ফেরত দেওয়ার জন্য ব্যবহার করতে পারেন। আপনি সকেটে যা লেখেন তা পাঠানো হয় এবং যা প্রাপ্ত হয়েছে তা পড়ার জন্য উপলব্ধ।
অন্যদিকে পোর্টগুলি এমন কিছু যা কেবলমাত্র TCP / IP প্রোটোকল স্ট্যাকের নির্দিষ্ট কিছু প্রোটোকল রয়েছে। টিসিপি এবং ইউডিপি প্যাকেটের পোর্ট রয়েছে। একটি বন্দর কেবল একটি সাধারণ সংখ্যা। উত্স পোর্ট এবং গন্তব্য পোর্টের সংমিশ্রণটি দুটি হোস্টের মধ্যে একটি যোগাযোগের চ্যানেল সনাক্ত করে। যেমন আপনার একটি সার্ভার থাকতে পারে যা উভয়ই হতে পারে, একটি সাধারণ এইচটিটিপি সার্ভার এবং একটি সাধারণ এফটিপি সার্ভার। এখন যদি সেই সার্ভারের ঠিকানার জন্য কোনও প্যাকেট আসে, তবে এটি কীভাবে জানবে যে এটি HTTP বা FTP সার্ভারের প্যাকেট? ঠিক আছে, এটি তাই জানবে যে এইচটিটিপি সার্ভারটি পোর্ট ৮০ এবং এফটিপি সার্ভারটি পোর্ট ৮০ এ চলবে, সুতরাং প্যাকেটটি যদি কোনও গন্তব্য পোর্ট ৮০ নিয়ে আসে তবে এটি HTTP সার্ভারের জন্য, এফটিপি সার্ভারের জন্য নয়। এছাড়াও প্যাকেটের একটি সোর্স পোর্ট রয়েছে যেহেতু এ জাতীয় উত্স পোর্ট না থাকায় একটি সার্ভারে একবারে কেবল একটি আইপি ঠিকানার সাথে একটি সংযোগ থাকতে পারে। উত্স বন্দরটি কোনও সার্ভারের জন্য অন্যভাবে অভিন্ন সংযোগগুলি পৃথক করা সম্ভব করে তোলে: তাদের সকলের একই গন্তব্য পোর্ট রয়েছে, যেমন পোর্ট ৮০, একই গন্তব্য আইপি (সার্ভারের আইপি), এবং একই উত্স আইপি, যেহেতু তারা এসেছে have একই ক্লায়েন্ট, তবে তাদের আলাদা উত্স পোর্ট রয়েছে বলে সার্ভার তাদের একে অপরের থেকে আলাদা করতে পারে। এবং সার্ভার যখন উত্তরগুলি ফেরত পাঠায়, তখন অনুরোধটি যে বন্দরে এসেছিল সেটি পোর্টে এটি করবে, সেইভাবে ক্লায়েন্ট একই সার্ভার থেকে প্রাপ্ত বিভিন্ন প্রতিক্রিয়াও আলাদা করতে পারে।
বন্দরটি সবচেয়ে সহজ অংশ ছিল এটি সকেটের জন্য কেবল একটি অনন্য শনাক্তকারী। সকেট এমন কিছু যা প্রক্রিয়াগুলি সংযোগ স্থাপন এবং একে অপরের সাথে যোগাযোগের জন্য ব্যবহার করতে পারে। লম্বা জেফের একটি দুর্দান্ত টেলিফোন উপমা ছিল যা নিখুঁত ছিল না, তাই আমি এটিকে ঠিক করার সিদ্ধান্ত নিয়েছি:
netstat
ডিসপ্লে কিছু সময় দেখুন। শ্রোতা সকেট থেকে গৃহীত সমস্ত সকেট একই পোর্টে ভাগ করে। অতএব পোর্ট একটি সকেট জন্য একটি অনন্য শনাক্তকারী নয়।
একটি অ্যাপ্লিকেশন জুড়ে এমন প্রক্রিয়া রয়েছে যা নেটওয়ার্কের মাধ্যমে যোগাযোগ করে (ক্লায়েন্ট-সার্ভার জুড়ি)। এই প্রক্রিয়াগুলি সকেট নামক একটি সফ্টওয়্যার ইন্টারফেসের মাধ্যমে নেটওয়ার্কে এবং এর মাধ্যমে বার্তা প্রেরণ ও গ্রহণ করে । "কম্পিউটার নেটওয়ার্কিং: টপ ডাউন অ্যাপ্রোচ" বইটিতে উপস্থাপিত উপমা বিবেচনা করে। এমন একটি বাড়ি আছে যা অন্য বাড়ির সাথে যোগাযোগ করতে চায়। এখানে, ঘর একটি প্রক্রিয়াটির সাথে সাদৃশ্যযুক্ত, এবং একটি সকেটের দরজা। প্রেরণ প্রক্রিয়া ধরে নিয়েছে যে দরজার অন্যদিকে একটি অবকাঠামো রয়েছে যা ডেটা গন্তব্যে নিয়ে যাবে will অন্য বারে বার্তাটি পৌঁছানোর পরে, এটি রিসিভারের দরজা (সকেট) মাধ্যমে ঘরে (প্রক্রিয়া) যায়। একই বইয়ের এই চিত্রটি আপনাকে সহায়তা করতে পারে:
সকেটগুলি পরিবহন স্তরের অংশ, যা অ্যাপ্লিকেশনগুলিতে যৌক্তিক যোগাযোগ সরবরাহ করে। এর অর্থ হ'ল অ্যাপ্লিকেশনের দৃষ্টিকোণ থেকে উভয় হোস্টই একে অপরের সাথে সরাসরি সংযুক্ত, যদিও তাদের মধ্যে অসংখ্য রাউটার এবং / অথবা সুইচ রয়েছে। সুতরাং একটি সকেট নিজেই সংযোগ নয়, এটি সংযোগের শেষ পয়েন্ট। পরিবহন স্তর প্রোটোকল কেবল হোস্টগুলিতে প্রয়োগ করা হয়, মধ্যবর্তী রাউটারগুলিতে নয়।
বন্দরকোনও মেশিনকে অভ্যন্তরীণ ঠিকানা দেওয়ার উপায় সরবরাহ করুন। এটি অন্যান্য প্রক্রিয়াগুলিতে (তাদের ডেটা) হস্তক্ষেপ না করে একাধিক প্রক্রিয়াটিকে নেটওয়ার্কের মাধ্যমে ডেটা প্রেরণ এবং গ্রহণের অনুমতি দেওয়ার প্রাথমিক উদ্দেশ্য। সমস্ত সকেট একটি পোর্ট নম্বর সহ সরবরাহ করা হয়। কোনও বিভাগ যখন কোনও হোস্টে আসে, পরিবহন স্তর সেগমেন্টের গন্তব্য পোর্ট নম্বর পরীক্ষা করে। এরপরে সেগমেন্টটি সংশ্লিষ্ট সকেটে ফরোয়ার্ড করে। ট্রান্সপোর্ট লেয়ার সেগমেন্টে ডেটা সঠিক সকেটে পৌঁছে দেওয়ার এই কাজটিকে ডি-মাল্টিপ্লেক্সিং বলে । সেগমেন্টের ডেটা সকেটের সাথে সংযুক্ত প্রক্রিয়াটিতে ফরোয়ার্ড করা হয়।
একটি সকেট আপনার সফ্টওয়্যার মধ্যে একটি কাঠামো। এটি কম-বেশি কোনও ফাইল; এটি পড়া এবং লেখার মতো অপারেশন করে। এটি কোনও শারীরিক জিনিস নয়; এটি আপনার সফ্টওয়্যারটির দৈহিক বিষয়গুলি বোঝার জন্য একটি উপায়।
একটি বন্দর একটি ডিভাইসের মতো জিনিস। প্রতিটি হোস্টের এক বা একাধিক নেটওয়ার্ক রয়েছে (সেগুলি শারীরিক); একটি হোস্ট প্রতিটি নেটওয়ার্কে একটি ঠিকানা আছে। প্রতিটি ঠিকানার হাজার হাজার বন্দর থাকতে পারে।
একটি সকেট কেবল কোনও ঠিকানায় একটি বন্দর ব্যবহার করতে পারে। সকেটটি পোর্টের জন্য বরাদ্দ করে যেমন ফাইল সিস্টেম I / O এর জন্য কোনও ডিভাইস বরাদ্দ করে। একবার বন্দর বরাদ্দ হয়ে গেলে, অন্য কোনও সকেট সেই বন্দরের সাথে সংযোগ করতে পারে না। সকেট বন্ধ হয়ে গেলে বন্দরটি মুক্ত করা হবে।
কটাক্ষপাত করে TCP / IP পরিভাষা ।
থেকে ওরাকল জাভা টিউটোরিয়াল :
একটি সকেট নেটওয়ার্কে চলমান দুটি প্রোগ্রামের মধ্যে দ্বি-মুখী যোগাযোগের লিঙ্কের একটি শেষ পয়েন্ট। একটি সকেট একটি পোর্ট নম্বরে আবদ্ধ যাতে টিসিপি স্তরটি অ্যাপ্লিকেশনটি সনাক্ত করতে পারে যা ডেটা প্রেরণ করা হয়।
পোর্ট এবং সকেটকে ব্যাংক শাখার সাথে তুলনা করা যেতে পারে।
"ব্যাংক" এর বিল্ডিং নম্বর আইপি ঠিকানার সাথে সমান। একটি ব্যাংক বিভিন্ন বিভাগ পেয়েছে যেমন:
সুতরাং 1 (সঞ্চয় অ্যাকাউন্ট বিভাগ), 2 (ব্যক্তিগত loanণ বিভাগ), 3 (স্ব loanণ বিভাগ) এবং 4 (অভিযোগ বিভাগ) বন্দর are
এখন আমাদের বলুন যে আপনি একটি সঞ্চয়ী অ্যাকাউন্ট খুলতে যান, আপনি ব্যাঙ্কে যান (আইপি ঠিকানা), তারপরে আপনি "সঞ্চয়ী অ্যাকাউন্ট বিভাগ" (বন্দর নম্বর 1) এ যান, তারপরে আপনি "সঞ্চয়ী অ্যাকাউন্ট বিভাগের অধীনে কর্মরত কোনও কর্মচারীর সাথে দেখা করুন "। অ্যাকাউন্ট খোলার জন্য আসুন আমরা তাকে SAVINGACCOUNT_EMPLOYEE1 বলি।
SAVINGACCOUNT_EMPLOYEE1 হ'ল আপনার সকেট বর্ণনাকারী, তাই SAVINGACCOUNT_EMPLOYEE1 থেকে SAVINGACCOUNT_EMPLOYEEN থাকতে পারে। এটি সমস্ত সকেট বর্ণনাকারী।
তেমনি, অন্যান্য বিভাগগুলি তাদের অধীনে কর্মরত থাকবে এবং তারা সকেটের সাথে সমান।
একটি সকেট একটি ডেটা I / O প্রক্রিয়া mechanism একটি বন্দর একটি যোগাযোগ প্রোটোকলের একটি চুক্তিগত ধারণা । পোর্ট ছাড়াই একটি সকেট থাকতে পারে। একটি নির্দিষ্ট সকেটের বাইরে কোনও বন্দর বিদ্যমান থাকতে পারে (যেমন যদি একই বন্দরে বেশ কয়েকটি সকেট সক্রিয় থাকে, যা কিছু প্রোটোকলের জন্য অনুমোদিত হতে পারে)।
কোন প্রোটোকল সহ প্যাকেটটি রিসিভারের দিকে নিয়ে যাওয়া উচিত তা নির্ধারণের জন্য একটি বন্দর ব্যবহার করা হয়, তবে এটি সর্বদা প্রয়োজন হয় না এবং প্রাপ্ত সকেট নির্বাচনটি অন্য উপায়ে করা যায় - একটি পোর্ট পুরোপুরি একটি সরঞ্জাম যা প্রোটোকল হ্যান্ডলার দ্বারা ব্যবহৃত হয় নেটওয়ার্ক সাবসিস্টেম উদাহরণস্বরূপ যদি কোনও প্রোটোকল কোনও বন্দর ব্যবহার না করে, প্যাকেটগুলি সমস্ত শ্রোতা সকেট বা কোনও সকেটে যেতে পারে।
আপেক্ষিক টিসিপি / আইপি পরিভাষা যা আমি ধরে নিয়েছি তা প্রশ্নের দ্বারা আবদ্ধ। সাধারণ লোকের পদে:
একটি পোর্ট একটি নির্দিষ্ট জিপ কোডের কোনও নির্দিষ্ট বাড়ির টেলিফোন নম্বরটির মতো। শহরের জিপ কোডটি শহরের আইপি ঠিকানা এবং সেই শহরের সমস্ত বাড়ির হিসাবে বিবেচনা করা যেতে পারে।
অন্যদিকে একটি সকেট হ'ল একে অপরের সাথে কথা বলে একজোড়া বাড়ির টেলিফোনের মধ্যে একটি প্রতিষ্ঠিত ফোন কলের মতো। এই কলগুলি একই শহরে বা বিভিন্ন শহরে দুটি বাড়ির মধ্যে প্রতিষ্ঠিত হতে পারে। একে অপরের সাথে কথা বলার জোড়ার মধ্যে এটি অস্থায়ীভাবে প্রতিষ্ঠিত পথ যা সোকেট।
একটি বিস্তৃত অর্থে, সকেট - ঠিক এটির মতো একটি সকেট যেমন আপনার বৈদ্যুতিন, কেবল বা টেলিফোনের সকেটের মতো। এমন একটি বিন্দু যেখানে "প্রয়োজনীয় জিনিসগুলি" (শক্তি, সংকেত, তথ্য) বাইরে চলে যেতে এবং আসতে পারে। এটি প্রচুর বিস্তারিত স্টাফ লুকায়, যা "প্রয়োজনীয় জিনিস" ব্যবহারের জন্য প্রয়োজন হয় না। সফটওয়্যার পার্লেন্সে এটি দুটি সত্তার মধ্যে যোগাযোগের একটি পদ্ধতি নির্ধারণের একটি জেনেরিক উপায় সরবরাহ করে (সেই সত্তাগুলি যে কোনও কিছু হতে পারে - দুটি অ্যাপ্লিকেশন, দুটি শারীরিকভাবে পৃথক ডিভাইস, কোনও ওএসের মধ্যে ব্যবহারকারী এবং কার্নেলের স্থান ইত্যাদি)
একটি বন্দর একটি শেষ পয়েন্ট বৈষম্যমূলক। এটি অন্য প্রান্ত থেকে অন্য প্রান্তকে পৃথক করে। নেটওয়ার্কিং স্তরে, এটি একটি অ্যাপ্লিকেশনকে অন্যের থেকে পৃথক করে, যাতে নেটওয়ার্কিং স্ট্যাক তথ্যটিতে যথাযথ অ্যাপ্লিকেশনটিতে যেতে পারে।
ইতিমধ্যে এই প্রশ্নের তাত্ত্বিক উত্তর দেওয়া হয়েছে। আমি এই প্রশ্নের একটি ব্যবহারিক উদাহরণ দিতে চাই, যা সকেট এবং বন্দর সম্পর্কে আপনার বোঝার সাফ করবে।
আমি এটি এখানে খুঁজে পেয়েছি
এই উদাহরণটি উইলির মতো কোনও ওয়েবসাইটের সাথে সংযোগ স্থাপনের প্রক্রিয়াটি অনুসরণ করবে। আপনি আপনার ওয়েব ব্রাউজারটি খুলবেন (মোজিলা ফায়ারফক্সের মতো) এবং ঠিকানা বারে www.wiley.com টাইপ করবেন। আপনার ওয়েব ব্রাউজারটি তার আইপি ঠিকানাটি সনাক্ত করতে www.wiley.com নামটি সন্ধান করতে একটি ডোমেন নেম সিস্টেম (ডিএনএস) সার্ভার ব্যবহার করে। এই উদাহরণস্বরূপ, ঠিকানাটি 192.0.2.100।
ফায়ারফক্স 192-0.2.100 ঠিকানা এবং বন্দর যেখানে অ্যাপ্লিকেশন স্তর ওয়েব সার্ভার কাজ করছে তার সাথে সংযোগ স্থাপন করে। ফায়ারফক্স জানবে কোন বন্দরটি প্রত্যাশা করবে কারণ এটি একটি সুপরিচিত বন্দর। ওয়েব সার্ভারের জন্য সুপরিচিত বন্দরটি টিসিপি পোর্ট 80।
ফায়ারফক্স সংযোগের জন্য চেষ্টা করছে এমন গন্তব্য সকেটটি সকেট: বন্দর হিসাবে লেখা হয়েছে, বা এই উদাহরণে, 192.0.2.100:80। এটি সংযোগের সার্ভার সাইড, তবে সার্ভারটি মোজিলা ফায়ারফক্সে আপনি যে ওয়েব পৃষ্ঠাটি দেখতে চান তা কোথায় পাঠাতে হবে তা জানতে হবে, সুতরাং সংযোগের ক্লায়েন্টের পক্ষে আপনার সকেট রয়েছে।
ক্লায়েন্টের পার্শ্ব সংযোগটি আপনার আইপি ঠিকানা, যেমন 192.168.1.25 এবং এলোমেলোভাবে নির্বাচিত গতিশীল পোর্ট নম্বর দিয়ে তৈরি। ফায়ারফক্সের সাথে যুক্ত সকেট দেখতে 192.168.1.25:49175 এর মতো দেখাচ্ছে। ওয়েব সার্ভারগুলি টিসিপি পোর্ট ৮০ এ কাজ করে, এই উভয় সকেটই টিসিপি সকেট, আপনি যদি কোনও ইউডিপি পোর্টে অপারেটিং সার্ভারের সাথে সংযোগ স্থাপন করছিলেন তবে সার্ভার এবং ক্লায়েন্ট সকেট উভয়ই ইউডিপি সকেট হবে।
সকেট আই / ও ডাটা ব্যবহারের জন্য ব্যবহারকারী অ্যাপ্লিকেশনগুলিতে কার্নেল দ্বারা সরবরাহ করা একটি বিমূর্ততা। একটি সকেট প্রকারটিকে হ্যান্ডলিং, একটি আইপিসি যোগাযোগ ইত্যাদি দ্বারা সংজ্ঞায়িত করা হয় তাই কেউ যদি কোনও টিসিপি সকেট তৈরি করেন তবে তিনি সকেটে ডেটা পড়ার এবং এটিতে সহজ পদ্ধতিতে ডেটা লেখার মতো কৌশলগুলি করতে পারেন এবং টিসিপি রূপান্তরগুলির মতো নিম্ন স্তরের প্রোটোকল হ্যান্ডলিং এবং নিম্ন স্তরের নেটওয়ার্ক প্রোটোকলগুলিতে প্যাকেট ফরোয়ার্ড কর্নেলের নির্দিষ্ট সকেট প্রয়োগের মাধ্যমে সম্পন্ন করা হয়। সুবিধাটি হ'ল ব্যবহারকারীর প্রোটোকল নির্দিষ্ট নাইটিগিটিগুলি পরিচালনা করার বিষয়ে চিন্তা করার দরকার নেই এবং কেবলমাত্র একটি সাধারণ বাফারের মতো সকেটে ডেটা পড়া এবং লেখা উচিত। আইপিসির ক্ষেত্রেও এটি সত্য, ব্যবহারকারী কেবল সকেটে ডেটা পড়েন এবং লেখেন এবং কার্নেল তৈরি করা সকেটের ধরণের ভিত্তিতে সমস্ত নিম্ন স্তরের বিশদ পরিচালনা করে hand
আইপি সহ একত্রে বন্দরটি সকেটে একটি ঠিকানা সরবরাহ করার মতো, যদিও এটি প্রয়োজনীয় নয় তবে এটি নেটওয়ার্ক যোগাযোগে সহায়তা করে।
একক পোর্টে একাধিক বৈদ্যুতিক আউটলেটের মতো বিভিন্ন বহিরাগত আইপির সাথে সংযুক্ত এক বা একাধিক সকেট থাকতে পারে।
TCP 192.168.100.2:9001 155.94.246.179:39255 ESTABLISHED 1312
TCP 192.168.100.2:9001 171.25.193.9:61832 ESTABLISHED 1312
TCP 192.168.100.2:9001 178.62.199.226:37912 ESTABLISHED 1312
TCP 192.168.100.2:9001 188.193.64.150:40900 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.23.194.149:43970 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.49.73.11:38842 ESTABLISHED 1312
সকেট হল নেটওয়ার্কিং এন্ডপয়েন্টের এসডাব্লু বিমূর্ততা, অ্যাপ্লিকেশনটির ইন্টারফেস হিসাবে ব্যবহৃত হয়। জাভাতে, সি # এটি অবজেক্ট দ্বারা প্রতিনিধিত্ব করা হয়, লিনাক্সে, ইউনিক্স এটি একটি ফাইল।
বন্দর হ'ল একটি সকেটের একটি সম্পত্তি যা আপনি নির্দিষ্ট করতে চান যদি আপনি কোনও যোগাযোগ স্থাপন করতে চান। সকেট থেকে প্যাকেটটি পেতে আপনাকে নির্দিষ্ট স্থানীয় বন্দর এবং এনআইসির (স্থানীয় আইপি ঠিকানার সাথে) বা সমস্ত এনআইসি-র সাথে আবদ্ধ করতে হবে (আইএনএডিডিআর_এনআই বাইন্ড কলে নির্দিষ্ট করা আছে)। প্যাকেট প্রেরণ করতে, আপনাকে দূরবর্তী সকেটের পোর্ট এবং আইপি নির্দিষ্ট করতে হবে।
একটি সকেট মূলত নেটওয়ার্ক যোগাযোগের জন্য একটি অন্তিম পয়েন্ট হয়, এতে অন্তত একটি আইপি-ঠিকানা এবং একটি পোর্ট থাকে। জাভা / সি # তে একটি সকেট দ্বি-মুখী সংযোগের একদিকে উচ্চ স্তরের বাস্তবায়ন।
এছাড়াও, জাভা ডকুমেন্টেশনের একটি সংজ্ঞা ।
পোর্ট:
একটি বন্দর পেরিফেরিয়াল ডিভাইসগুলির জন্য যেমন সিরিয়াল, সমান্তরাল এবং ইউএসবি পোর্টগুলির জন্য একটি শারীরিক সংযোগ বিন্দুকে উল্লেখ করতে পারে। পোর্ট শব্দটি নির্দিষ্ট কিছু ইথারনেট সংযোগ পয়েন্টকে হাব, সুইচ বা রাউটার হিসাবে চিহ্নিত করে।
সকেট:
একটি সকেট দুটি নেটওয়ার্ক অ্যাপ্লিকেশনগুলির মধ্যে একটি একক সংযোগ উপস্থাপন করে। এই দুটি অ্যাপ্লিকেশন নামমাত্রভাবে বিভিন্ন কম্পিউটারে চালিত হয়, তবে সকেটগুলি একটি কম্পিউটারে ইন্টারপ্রোসেস যোগাযোগের জন্যও ব্যবহার করা যেতে পারে। অ্যাপ্লিকেশনগুলি একে অপরের সাথে যোগাযোগের জন্য একাধিক সকেট তৈরি করতে পারে। সকেট দ্বি নির্দেশমূলক, যার অর্থ সংযোগের উভয় পক্ষই উভয়ই ডেটা প্রেরণ এবং গ্রহণ করতে সক্ষম।
আইপি নেটওয়ার্ক প্রোটোকলের জন্য একটি পোর্ট টিসিপি এবং ইউডিপি ট্রান্সপোর্টের একটি যোগাযোগের শেষ পয়েন্টকে নির্দেশ করে। সকেট হল এই প্রোটোকলগুলির (সকেট এপিআই) বাস্তবায়নে ব্যবহৃত যোগাযোগের শেষ পয়েন্টের জন্য একটি সফ্টওয়্যার বিমূর্ততা। একটি বিকল্প বাস্তবায়ন হল এক্সটিআই / টিএলআই এপিআই।
আরো দেখুন:
স্টিভেনস, ডাব্লুআর 1998, ইউএনআইএক্স নেটওয়ার্ক প্রোগ্রামিং: নেটওয়ার্কিং এপিআই: সকেট এবং এক্সটিআই; খণ্ড ১, প্রেন্টাইস হল।
স্টিভেন্স, ডব্লিউআর, 1994, টিসিপি / আইপি সচিত্র, খণ্ড 1: প্রোটোকলস, অ্যাডিসন-ওয়েসলি।