কেবলমাত্র আমরা একই পৃষ্ঠায় রয়েছি তা নিশ্চিত করার জন্য (আপনার প্রশ্নটি এইভাবেই দ্ব্যর্থক), পোর্ট 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 নেই হিসাবে "সংরক্ষিত" (এটির উল্লেখ এখানে দেখতে )। অর্থ, এই বন্দরটি অনলাইনে ব্যবহার করা উচিত নয় । এটি গতিশীল অ্যাসাইনমেন্ট কনভেনশন সম্পর্কিত বিষয়টি ঠিক করে তোলে (যেহেতু এটি বাস্তবে ব্যবহৃত হবে না)। বিশেষভাবে একটি উদ্দেশ্য হিসাবে অনুধাবন করা সম্ভবত আইএএনএর পরিধি ছাড়িয়ে যাবে; প্রকৃতপক্ষে অপারেটিং সিস্টেমগুলি এগুলি দিয়ে যা কিছু চায় তা করতে মুক্ত।