ویدیو مربوط به این مقاله: (کلیک کن)

یه شرکت رو در نظر بگیر. این شرکت یک شماره تماس داره. من با این شماره تماس میگیرم و ارتباط میگیرم با شرکت.
تماس رو یک سیستم خودکار پاسخ میده و شروع میکنه قسمت های مختلف شرکت رو معرفی میکنه! برای مثال میگه جهت ارتباط با واحد فروش عدد 1 رو وارد کنید، برای ارتباط با واحد فنی عدد 2 رو وارد کنید، جهت ارتباط با واحد مالی عدد 3 رو وارد کنید و...
هر قسمت از شرکت، به شکل خاصی مدیریت شده و برای یک هدف خاص فعالیت میکنه. اپراتوری که برای قسمت فروش در نظر گرفته شده، نمیتونه پاسخ دهندهی سوالات فنی من باشه. چرا؟ چون اون اپراتور، فقط برای معرفی محصولات شرکت و فروش اونها مدیریت شده، اطلاعاتش تا حد محصولات شرکته. اگه من درخواست فنی بهش بدم، پاسخ درستی دریافت نمیکنم! برای همین، شرکت ها میان قسمتها یا سرویسهای مختلف رو ایجاد میکنن، تا هر قسمت، پاسخگوی یک نیاز خاص از سمت مشتری ها (سرویس گیرندهها) باشه.
تو دنیای شبکه هم، این مورد وجود داره.
هم سمت کلاینت، port هارو داریم و هم سمت سرور.
یک سرور ممکنه چندین سرویس رو همزمان ارائه بده (مثل شرکت که چندین سرویس رو ارائه میده) مدیران شبکه اومدن به هر سرویس یک شماره یا port اختصاص دادن، به این صورت که من باید به سرور متصل بشم، و همزمان با این اتصال باید بگم که از کدوم سرویس روی سرور میخوام استفاده کنم! اینکارو هم با شماره port تعیین میکنم.
همینطور که میدونید، شبکه و اینترنت تشکیل شده از یک عالمه قانون، پروتکل و استاندارد.
این قوانین و پروتکلها، تو تک تک دستگاه ها وجود دارن.
هر سرویس، یک شماره پورت مشخص داره. برای مثال، اگه یک نفر بخواد روی سرورش، وبسایت بالا بیاره، باید یک Web Server نصب کنه، کدهای مربوط به سایت رو داخلش قرار بده تا هرکس که بهش درخواست زد، اون کدهارو براش بفرسته و مرورگر کاربر هم کدهارو بهش نمایش بده.
حالا کسایی که قوانین اینترنت و شبکه هارو ساختن، گفتن که وب سرورها باید روی پورت 80 کار کنن. یعنی شمایی که میخوای روی سرورت سایت بالا بیاری، باید این سایت روی پورت 80 سرورت فعال باشه. یعنی سرور همیشه باید درحال گوش دادن باشه که اگه، یه نفر بهش درخواست زد و توی درخواستش گفته بود که میخوام به پورت 80 وصل بشم، بیاد وصلش کنه به Web Server و مابقی کارهارو انجام بده. حالا همین قانون تو سمت Client هم وجود داره، یعنی برای مرورگر من تعیین شده که اگه بخواد وصل بشه به یک سایت، باید درخواستش رو به پورت 80 اون سرور ارسال کنه.
درنتیجه این قوانین به هر دو طرف ارتباط کمک میکنن تا بتونن درخواست هارو به مقصد های درست ارسال/دریافت کنن.
شماره پورت ها از 0 شروع میشه تا 65535.
صد در صد مثل هرچیز دیگه داخل شبکه، برای این port ها هم قانون وجود داره.
پورت شماره 0 تا 1023 به عنوان پورت های معروف و رزرو شده شناخته میشن. اکثر سرویسها روی یکی از این پورتها وجود دارن. برای مثال پروتکل HTTP که برای سرویس وب استفاده میشه، با پورت 80 کار میکنه. یا پروتکل HTTPS که اینم برای سرویس وب هست، روی پورت 443 کار میکنه. بیا فرض کنیم که IP سرور گوگل 10.20.30.40 هست. من اگه بخوام سایت گوگل رو ببینم، توی مرورگر فقط آدرس سایت رو مینویسم، کامپیوتر خودش میره آدرس گوگل رو پیدا میکنه، و به پورت 443 اون درخواستم رو میفرسته. این درخواست به شکل 10.20.30.40:443 شناخته میشه.
پورت شماره 1024 تا 49151 به عنوان پورت های ثبت شده شناخته میشه. بطور مثال یه شرکت میاد نرمافزاری رو ایجاد میکنه و میره به شرکت IANA میگه من میخوام نرمافزارم روی پورت 3306 شناخته بشه. وقتی یه شرکت میاد پورتش رو ثبت میکنه، به این معنیه که من روی سرورم، با این پورت فلان سرویس رو ارائه میدم! حالا این ثبت کردنه به این معنی نیست که اون پورت کلا مسدود میشه و کس دیگهایی نتونه استفادش کنه.
پورت شماره 49152 تا 65535 به عنوان پورت های موقتی کلاینت شناخته میشن. بزار بیشتر توضیح بدم...
شما در آن واحد چندین درخواست رو از سیستم خودتون ارسال و دریافت میکنید، بطور مثال داخل مرورگرم تب های مختلف بازه که یکیش سایت Youtube رو بالا اورده و دارم فیلم میبینم، یکی دیگش سایت ویرگول رو باز کرده، یکی دیگش Instagram و... به غیر از مرورگر، ممکنه تلگرام هم روی سیستم باز باشه و اون هم اتصال با سرورهای تلگرام رو برقرار کرده، به غیر از این موارد ممکنه خود ویندوز هم اون پس زمینه آپدیتی انجام بده و...
درکل، وقتی درخواستی از سمت کامپیوتر من ارسال میشه به سمت مثلا گوگل، و گوگل هم پاسخ میده، این پاسخ وقتی میرسه به سیستم من، باید بدونه که به کدوم بخش ارسال بشه.
مثلا من یه تب جدید توی مرورگرم باز میکنم و سایت دیوار رو بالا میارم، مرورگر میاد به سرور دیوار روی پورت 443 وصل میشه و محتوای سایت رو دریافت میکنه، حالا پاسخ دیوار رسید به کامپیوتر من، این پاسخی که الان رسیده، مربوط به کدوم نرمافزار یا سرویس میشه؟ چون چندین سرویس روی کامپیوتر من داره کار میکنه و مدام بستههای مختلفی رو ارسال/دریافت میکنن. اینجا بحث پورت های موقتی کلاینت مطرح میشه.
سیستم عامل از رنج شماره 49151 تا 65553 یک عددی رو انتخاب میکنه و اختصاص میده به یک سرویس موقت. همینطور که روی سرور، پورت ها تو حالت گوش دادن هستن، تو سمت کلاینت هم پورت های مختلف تو حالت گوش دادن هستن. من وقتی میام توی تب جدید مرورگرم سایت دیوار رو باز میکنم، سیستم عامل یک پورتی رو بین بازه 49151 تا 65535 انتخاب میکنه و اختصاص میده به اتصالم با سایت دیوار، حالا این بسته وقتی میره سمت سایت دیوار و برمیگرده، کامپیوتر میفهمه که این بسته باید به کدوم نرمافزار/سرویس تحویل داده بشه، چون توی مقصد بسته، پورتی که خود سیستم عامل قبلا مشخص کرده نوشته شده.
توی cmd با دستور netstat -n میتونید درخواست هایی که ارسال و دریافت شدن رو به همراه پورت هاشون ببینید.
یکم بالاتر گفتم پورت های 0 تا 1023 برای سرویس های معروف درنظر گرفته شده. چندتا از این پورتها و سرویسهایی که مربوط به اونها میشه رو معرفی کنم...

تا الان با مفهوم Port های نرمافزاری آشنا شدیم. یه موضوع دیگه وجود داره به اسم پورت های سختافزاری که USB یه نمونه از این پورت هاست. درکل به اون درگاهی که من یک کابل یا چیزی رو بصورت سختافزاری وارد میکنم، پورت سختافزاری گفته میشه.