একটি সকেট এবং একটি বন্দরের মধ্যে পার্থক্য


121

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


9
পোর্ট একটি শারীরিক ঠিকানা, যখন সকেট একটি অবজেক্ট।
সুপারম

14
যদি কোনও প্যাকেট কোনও পকেটে কোনও পকেটে কোনও সকেটে আঘাত করে ...
ব্যবহারকারী16764

উত্তর:


116

এস একটি সার্ভার প্রোগ্রাম: ধরা যাক এটি একটি এইচটিটিপি সার্ভার, সুতরাং এটি 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, সেই প্রক্রিয়াটির শিশু হওয়া এবং উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া, বা সেই প্রক্রিয়া থেকে স্পষ্টত একটি সকেট পাস করা

1
@Useless এটি মূল্যহীন উল্লেখ সকেট না না আইপি ভিত্তি করে করা হিসেবে উত্তর ইঙ্গিত প্রয়োজন। এটি ওপির সাথে একেবারেই প্রাসঙ্গিক নয় তবে সকেট পরিবারগুলির একটি ব্যাখ্যা এই উত্তরটি খুঁজে পেতে সহায়তা করবে।
হাফিচুক

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

11
এটি মোটেও অকেজো নয়
l

আমি ইলেক্ট্রনিক্সে সকেটটি বোঝার চেষ্টা করি, একটি সার্ভার একটি সকেটকে একটি বন্দর সংখ্যায় বাঁধাইয়ের মতো কোনও প্রাচীরের উপরে সকেট লাগানোর জন্য কিছু বৈদ্যুতিন ডিভাইসের জন্য ব্যাটারি চার্জ করার জন্য প্লাগইন করতে অপেক্ষা করে to কিন্তু যখন গৃহীত হয়, একটি নতুন সকেট ফিরে আসে? কেন? একটি নতুন সকেট একটি প্রাচীর করা হয়? দয়া করে কিছু উপমা দিয়ে এটিকে বোঝাতে আমাকে সহায়তা করুন।
অ্যারন শেন

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

49

আপনার যন্ত্রটিকে অ্যাপার্টমেন্ট বিল্ডিং হিসাবে ভাবেন:

  • একটি বন্দর একটি অ্যাপার্টমেন্ট নম্বর।

  • একটি সকেট একটি অ্যাপার্টমেন্টের দরজা।

  • একটি আইপি ঠিকানা বিল্ডিংয়ের রাস্তার ঠিকানা।


3
আমি এই উপমাটি পছন্দ করি যদিও এখন আমি সেই অ্যাপার্টমেন্টের ভিতরে থাকার কথা ভাবছি প্রচুর দরজা সহ একটি অন্তহীন করিডোরের দিকে তাকিয়ে। আমি বেরোতে পারি না। আমি বেরোতে পারি না! :)
ড্যানিয়েল হোলিনরাকে

1
@ কালেব A socket is the door of an apartment.তবে একটি বন্দরে অসংখ্য সকেট খোলা যাবে না?
সুহেল গুপ্ত

3
@ সুহাইল কখনও কখনও অ্যাপার্টমেন্টে একাধিক দরজা থাকে। তাদের সবার একই অ্যাপার্টমেন্ট নম্বর রয়েছে তবে তারা আলাদা দরজা।
কালেব

45

একটি পোর্ট টিসিপি এবং ইউডিপি প্রোটোকলগুলির ঠিকানার অংশ। কোন অ্যাপ্লিকেশনটি প্রাপ্ত হওয়া ডেটা পেতে হবে তা অ্যাপ্লিকেশনটিকে ওএসকে সনাক্ত করতে সহায়তা করতে ব্যবহৃত হয়। টিসিপি এবং ইউডিপিকে সমর্থন করার জন্য কোনও ওএসকে পোর্টগুলি সমর্থন করতে হবে কারণ পোর্টগুলি টিসিপি এবং ইউডিপির একটি অন্তর্গত অংশ।

ওকে অ্যাপ্লিকেশনগুলিতে নেটওয়ার্ক ডেটা প্রেরণ এবং গ্রহণের জন্য অনুমতি দেওয়ার জন্য একটি ইন্টারফেসের একটি অংশ সকেট। বেশিরভাগ সকেট বাস্তবায়নগুলি টিসিপি এবং ইউডিপি ছাড়িয়ে অনেকগুলি প্রোটোকলকে সমর্থন করে, যার কয়েকটিতে বন্দরগুলির কোনও ধারণা নেই। টিসিপি বা ইউডিপি সমর্থন করার জন্য কোনও ওএসকে সকেট সমর্থন করতে হয় না; এটি অ্যাপ্লিকেশনগুলি ব্যবহারের জন্য একটি পৃথক ইন্টারফেস সরবরাহ করতে পারে। সকেট নির্দিষ্ট পোর্টে ডেটা প্রেরণ ও গ্রহণের সহজ উপায়।


একটি সকেট মূলত একটি 4 টি টুপল যা উত্স IP: পোর্ট-ডেস্ট আইপি: পোর্ট।
টনি দ্য লায়ন

আপনার অর্থ হ'ল পোর্টটি কেবলমাত্র টিসিপি এবং ইউডিপি প্রোটোকলগুলিতে বিদ্যমান ??? এইচটিপি এবং অন্যান্য প্রোটোকল সম্পর্কে কী?
এইচ। আকজান

এইচটিটিপি হ'ল একটি অ্যাপ্লিকেশন স্তর প্রোটোকল যা টিসিপি বা ইউডিপির মতো পরিবহন স্তর প্রোটোকলের উপরে চলে। এটির বন্দরগুলির নিজস্ব ধারণা নেই, এটি তাদের অন্তর্নিহিত পরিবহন স্তর প্রোটোকল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
ডার্ক হোলসোপ্পল

8

একটি কম্পিউটারের একটি আইপি ঠিকানা রয়েছে যা এটি নেটওয়ার্কে পৃথক সত্তা হিসাবে চিহ্নিত করে। আমাদের সেই কম্পিউটারে সংযোগের মধ্যে পার্থক্য করার জন্য আমরা এতে একটি অতিরিক্ত নম্বর যুক্ত করি। এটি বন্দর নম্বর। সংযোগের ওএস দিকে আপনার বাফারগুলি, সংযোগের স্থিতি ইত্যাদির প্রয়োজন This এই লজিক্যাল অবজেক্টটি সকেট।


0

একটি সকেট একটি বন্দরের যোগাযোগের পথ। আপনি যখন নিজের প্রোগ্রামটি নেটওয়ার্কের মাধ্যমে যোগাযোগ করতে চান, আপনি এটি বন্দরে সম্বোধনের একটি উপায় দিয়েছেন এবং এটি একটি সকেট তৈরি করে এবং বন্দরে সংযুক্ত করে এটি করা হয়। মূলত, সকেট = আইপি + পোর্টস সকেটগুলি পোর্ট + আইপিতে অ্যাক্সেস সরবরাহ করে


-1

একটি আইপি ঠিকানা ডিভাইসটি চিহ্নিত করে অর্থাৎ নির্দিষ্ট ডিভাইসের ঠিকানা, আপনি যখন আইপি ব্যবহার করে মেশিনে পৌঁছেছিলেন তখন পোর্টটি সেই মেশিনে কোন প্রক্রিয়াটি যোগাযোগ করবে তা সংজ্ঞায়িত করে।

সুতরাং প্রকৃত যোগাযোগের জন্য আপনার পোর্ট + আইপি উভয়ই দরকার যা সকেট বলে।

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