এস একটি সার্ভার প্রোগ্রাম: ধরা যাক এটি একটি এইচটিটিপি সার্ভার, সুতরাং এটি HTTP- র জন্য সুপরিচিত পোর্ট নম্বরটি ব্যবহার করবে , এটি 80 I আমি এটি আইপি অ্যাড্রেস সহ একটি হোস্টে চালিত করি 10.0.0.4
, সুতরাং এটি সংযোগগুলি শুনবে 10.0.0.4:80
(কারণ এটি সকলেই এটি সন্ধানের প্রত্যাশা করবে)।
এস এর অভ্যন্তরে , আমি একটি সকেট তৈরি করব এবং এ ঠিকানায় এটি আবদ্ধ করব : এখন, ওএস জানে যে সংযোগগুলি 10.0.0.4:80
আমার এস প্রসেসটিতে নির্দিষ্ট সকেটের মাধ্যমে প্রবর্তিত হওয়া উচিত ।
সকেট আবদ্ধ হলে নেটস্যাট আউটপুট:
$ netstat --tcp -lan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
বিশেষ দ্রষ্টব্য। স্থানীয় ঠিকানাটি সমস্ত শূন্য কারণ এস এর ক্লায়েন্টরা কীভাবে এটি পৌঁছে যায় তা যত্ন করে না
এস- এর এই সকেটটি আবদ্ধ হয়ে গেলে , এটি সংযোগ গ্রহণ করবে - প্রতিবার নতুন ক্লায়েন্ট সংযুক্ত হওয়ার পরে, নতুন সকেট accept
ফেরত দেয় , যা সেই ক্লায়েন্টের সাথে সুনির্দিষ্ট
একবার সংযোগ গৃহীত হওয়ার পরে নেটস্ট্যাট আউটপুট:
$ netstat --tcp -lan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 10.0.0.4:80 10.0.0.5:55715 ESTABLISHED
10.0.0.4:80
এস এর সংযোগের শেষ প্রতিনিধিত্ব করে, এবং ফিরে আসা সকেটের সাথে যুক্তaccept
10.0.0.5:55715
হ'ল সংযোগের ক্লায়েন্টের সমাপ্তি, এবং সংযোগের জন্য ক্লায়েন্টটি পাস করা সকেটের সাথে সম্পর্কিত । ডান প্রসেসের সাথে এই টিসিপি সংযোগের প্যাকেটগুলি রাউটিং ব্যতীত ক্লায়েন্টের বন্দর ব্যবহার করা হয় না: এটি এফেমেরাল বন্দর সীমা থেকে ক্লায়েন্টের কার্নেল দ্বারা এলোমেলোভাবে নির্ধারিত হয়।
এখন, এস সুখে আরও ক্লায়েন্ট সংযোগ গ্রহণ করতে পারে ... প্রত্যেকে তার নিজস্ব সকেট পাবে, প্রতিটি সকেট একটি অনন্য টিসিপি সংযোগের সাথে যুক্ত হবে এবং প্রতিটি সংযোগটির একটি অনন্য দূরবর্তী ঠিকানা থাকবে। এস সকেটের সাথে যুক্ত করে ক্লায়েন্টের অবস্থার (যদি থাকে তবে) ট্র্যাক করবে।
সুতরাং, মোটামুটি:
- আইপি ঠিকানাটি নেটওয়ার্কে হোস্টগুলির মধ্যে রাউটিংয়ের জন্য
- পোর্টটি হোস্টের সঠিক সকেটে যাওয়ার জন্য রয়েছে
- আমি প্রায় সঠিক প্রক্রিয়াটিই বলেছি , তবে একই সকেটে একাধিক (সাধারণত শিশু) সমস্ত গ্রহণযোগ্য প্রক্রিয়া থাকা সম্ভব ...
- যাইহোক, প্রতিটি বার যখন একযোগে
accept
কল আসে তখন এটি কেবল একটি প্রক্রিয়াতেই করে, প্রতিটি আগত সংযোগের সকেট সার্ভারের একটি উদাহরণের জন্য স্বতন্ত্র is
- সকেট এমন একটি বস্তু যা কোনও প্রক্রিয়া ওএসের সাথে কোনও নির্দিষ্ট সংযোগ সম্পর্কে কথা বলার জন্য ব্যবহার করে, অনেকটা ফাইল বর্ণনাকারীর মতো
- মন্তব্যে উল্লিখিত হিসাবে, সকেটের জন্য প্রচুর অন্যান্য ব্যবহার রয়েছে যা বন্দরগুলি মোটেও ব্যবহার করে না: উদাহরণস্বরূপ সকেটপেইর এমন এক জোড়া সকেট তৈরি করে যার কোনও অ্যাড্রেসিং স্কিম নেই - পাইপটি ব্যবহারের একমাত্র উপায় হ'ল যে প্রক্রিয়াটিকে বলা হয়
socketpair
, সেই প্রক্রিয়াটির শিশু হওয়া এবং উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া, বা সেই প্রক্রিয়া থেকে স্পষ্টত একটি সকেট পাস করা