টিসিপি পোর্ট 0 এর সাথে সংযোগ স্থাপন করা কি সম্ভব?


59

টিসিপি পোর্ট 0 শুনে আমার সিস্টেমে একটি বিনামূল্যে পোর্ট নম্বর বরাদ্দ করে।

তবে আমি যখন টিসিপি পোর্ট 0 এর সাথে সংযোগ স্থাপন করার চেষ্টা করব তখন কী ঘটে ? সুস্পষ্ট উত্তরটি হ'ল: "এটি কাজ করে না":

$ nc localhost 0                 
nc: port number too small: 0

সিস্টেমে কোথায় এটি পরিচালনা করা হয়? ওএস কার্নেলের টিসিপি স্ট্যাকে? এখানে কি ইউনিক্স রয়েছে যেখানে টিসিপি পোর্ট 0 এ সংযোগ স্থাপন কাজ করবে?


2
তত্ত্বের ভিত্তিতে আপনি একটি কাস্টম টিসিপি স্ট্যাক তৈরি করতে পারেন যার মধ্যে শোনার জন্য বা বন্দর 0 টির সাথে সংযোগ স্থাপন, যার অর্থ এই জাতীয় দুটি বাস্তবায়ন বন্দর 0 তে একে অপরের সাথে কথা বলতে পারে
জোশুয়া

উত্তর:


60

কেবলমাত্র আমরা একই পৃষ্ঠায় রয়েছি তা নিশ্চিত করার জন্য (আপনার প্রশ্নটি এইভাবেই দ্ব্যর্থক), পোর্ট 0 তে টিসিপিকে বাঁধতে জিজ্ঞাসা করা অব্যবহৃত পোর্ট নম্বরটি কার্যকরভাবে অনুরোধের নির্দেশ করে। অন্য কথায়, সেই অনুরোধের পরে আপনি যে পোর্ট নম্বরটি শুনেছেন তা শূন্য নয়। এই সম্পর্কে একটি মন্তব্য নেই [linux kernel source]/net/ipv4/inet_connection_sock.cউপর inet_csk_get_port():

/* Obtain a reference to a local port for the given sock,
 * if snum is zero it means select any available local port.
 */

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

এজন্য আপনি বুদ্ধি শূন্যের সাথে সংবেদনশীলভাবে কোনও টিসিপি সংযোগ তৈরি করতে পারবেন না। সম্ভবত ncএটি সম্পর্কে অবগত এবং আপনাকে অবহিত করে যে আপনি একটি সংবেদনশীল অনুরোধ করছেন না। আপনি যদি স্থানীয় কোডে এটি ব্যবহার করে থাকেন:

int fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = 0;
inet_aton("127.0.0.1", &addr.sin_addr);
if (connect(fd, (const struct sockaddr*)&addr, sizeof(addr)) == -1) {
    fprintf(stderr,"%s", strerror(errno));
}    

আপনি অন্য কোনও উপলভ্য বন্দরের সাথে সংযোগ স্থাপনের চেষ্টা করতে চাইলে একই ত্রুটি পান: ECONNREFUSED"সংযোগ অস্বীকার করা হয়েছে"। সুতরাং জবাবে:

সিস্টেমে কোথায় এটি পরিচালনা করা হয়? ওএস কার্নেলের টিসিপি স্ট্যাকে?

সম্ভবত না; এটি বিশেষ হ্যান্ডলিং প্রয়োজন হয় না। উদাহরণস্বরূপ, আপনি যদি এমন একটি সিস্টেম খুঁজে পেতে পারেন যা পোর্ট 0-এ বাঁধাই এবং শোনার অনুমতি দেয় তবে আপনি সম্ভবত এটির সাথে সংযোগ স্থাপন করতে পারেন।


1. কিন্তু IANA নেই হিসাবে "সংরক্ষিত" (এটির উল্লেখ এখানে দেখতে )। অর্থ, এই বন্দরটি অনলাইনে ব্যবহার করা উচিত নয় । এটি গতিশীল অ্যাসাইনমেন্ট কনভেনশন সম্পর্কিত বিষয়টি ঠিক করে তোলে (যেহেতু এটি বাস্তবে ব্যবহৃত হবে না)। বিশেষভাবে একটি উদ্দেশ্য হিসাবে অনুধাবন করা সম্ভবত আইএএনএর পরিধি ছাড়িয়ে যাবে; প্রকৃতপক্ষে অপারেটিং সিস্টেমগুলি এগুলি দিয়ে যা কিছু চায় তা করতে মুক্ত।


এটি আইপিভি 4-তে 0.0.0.0 ঠিকানার মতো একই ধারণা বলে মনে হচ্ছে। একটি সংরক্ষিত মান এবং ওএস এবং প্রোগ্রামগুলির দ্বারা একটি বিশেষ উদ্দেশ্যে ব্যবহৃত হয়। সাদৃশ্য হিসাবে, রেডিওতে সংরক্ষিত ফ্রিকোয়েন্সি রয়েছে যা কেউ সংক্রমণে ব্যবহার করে না, তবে সরঞ্জামগুলিতে অভ্যন্তরীণভাবে ব্যবহৃত হয়।
ctrl-alt-delor

1
@রিচার্ড নং, ০.০.০.০ এর আলাদা অর্থ রয়েছে;) এটি একটি অবৈধ, অজানা বা অযোগ্য প্রয়োগযোগ্য লক্ষ্য বা "সম্প্রচার" হিসাবে মনোনীত করতে ব্যবহৃত হয়
AndreaCi

2
@ আন্ড্রেইসি 255.255.255.255 প্রচার করা হয়নি?
রাচেট ফ্রিক

4
@ratchetfreak 255.255.255.255 সম্প্রচারিত হয়েছে। ০.০.০.০ এর দুইটি অর্থ প্রসঙ্গে নির্ভর করে। প্রোগ্রামিংয়ে এটি সমার্থক ডাব্লু / INADDR_ANY, যা রিচার্ড উল্লেখ করছে (সিস্টেম এটি একটি ডিফল্ট দ্বারা প্রতিস্থাপন করবে)। তবে প্রকৃতপক্ষে কোনও নেটওয়ার্কে ঠিকানাটি ব্যবহার করার ফলে অ্যান্ড্রিয়া উল্লেখ করেছেন (তবে এটি "সম্প্রচার" হিসাবে গণ্য হয়েছে তা পরিষ্কার নয়): এন.ইউইকিপিডিয়া.আরভিউ //0.0.0.0.0
সোনারলকস


5

পোর্ট 0 ব্যবহার করে অপারেটিং সিস্টেমটিকে পরবর্তী উপলব্ধ পোর্ট অনুসন্ধান এবং বরাদ্দ দিতে ট্রিগার করে। এটি আপনাকে নির্দিষ্ট একটি পোর্টের হার্ড কোড করা বা কোনও উপলভ্য পোর্ট অনুসন্ধান করতে এড়াতে পারে। আমার পুদিনা লিনাক্স সিস্টেম ফিরে আসে

nc: port range not valid

প্রতি

nc localhost 0 

2

nc -l 0ওএসকে বন্দর ০. তে শোনার জন্য জিজ্ঞাসা করবে। তবে উপরে উল্লিখিত হিসাবে, বেশিরভাগ অপারেটিং সিস্টেমগুলি 0 টি দেখতে পাবে এবং আপনার অ্যাপ্লিকেশনের জন্য ইতিবাচক-নম্বরযুক্ত বন্দরটি বেছে নেওয়ার জন্য তাদের বিশেষ রীতিনীতিকে অনুরোধ করবে, সুতরাং nc56514 এর মতো কিছু বন্দরে শোনার চেষ্টা করবে।


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