چرا همه از localhost:3000 استفاده میکنند؟ تاریخچه پورتهای محبوب توسعهدهندگان؛ از 3000 تا 5173
آیا تا حالا از خودتان پرسیدهاید چرا توسعهدهندگان تقریباً هر پروژهی برنامهنویسی را با آدرسی مثل localhost:3000 یا localhost:5173 اجرا میکنند؟
این شمارهها اتفاقی انتخاب نشدهاند، پشت هرکدام تاریخی نهفته است که از دههها پیش و از دوران Java و Python تا Node.js و Vite ادامه دارد. بیایید ببینیم این اعداد از کجا آمدهاند و چرا هنوز با ما هستند.
پورت چیست؟
کامپیوترتان را مثل یک ساختمان اداری در نظر بگیرید، هر پورت یک «درب شمارهدار» است که به یک سرویس خاص منتهی میشود.
وقتی آدرس localhost:3000 را در مرورگر میزنید، در واقع دارید درب شمارهی ۳۰۰۰ را میکوبید و میپرسید:
«سلام، اپ من آماده است؟»
| محدوده پورت | کاربرد | مثال |
|---|---|---|
| 0–1023 | پورتهای سیستمی / رزروشده | HTTP(80)، HTTPS(443)، SSH(22) |
| 1024–49151 | پورتهای کاربر / ثبتشده | 3000، 8000، 8080 |
| 49152–65535 | پورتهای موقت / خصوصی | ارتباطات لحظهای سیستمعامل |
پس بله، پورت 3000 فقط یکی از هزاران درب ممکن است، اما داستان جالبی پشت آن پنهان است.
پورت 3000؛ میراث Node.js
اوایل دههی ۲۰۱۰، وقتی Node.js و Express.js به اوج محبوبیت رسیدند، مستندات رسمی این مثال را نشان میدادند:
app.listen(3000, () => console.log('Server running on port 3000'));
همین یک خط، عادت نسل کاملی از توسعهدهندگان را شکل داد. تقریباً همهی آموزشها، بوتکمپها و قالبهای آماده همین شماره را تکرار کردند.
بعد React آمد، از همان استفاده کرد.
Next.js آمد، باز هم همان پورت را نگه داشت.
هیچ دلیل خاصی وجود نداشت، فقط یک عدد ساده و خالی بود. اما تکرار مداومش باعث شد پورت 3000 به نماد “Hello World” توسعه وب تبدیل شود.
پورت 8000؛ انتخاب کلاسیک پایتون
قبل از آنکه Node متولد شود، توسعهدهندگان پایتون با دستور زیر سرور محلیشان را بالا میآوردند:
python3 -m http.server
و پورت پیشفرضش چه بود؟ 8000
نه فلسفهای داشت و نه داستانی خاص — فقط عددی ساده، امن و بالاتر از ۱۰۲۴ که نیاز به دسترسی root نداشت.
بعدتر، فریمورکهایی مثل Django هم آن را بهعنوان پیشفرض برگزیدند:
Starting development server at http://127.0.0.1:8000
از آن زمان، پورت ۸۰۰۰ تبدیل شد به عددی آشنا برای هر کسی که میخواست پروژهای را بهصورت محلی تست کند.
پورت 8080؛ افسانهی جاوا
در دههی ۹۰ میلادی، اجرای سرور روی پورت رسمی HTTP یعنی ۸۰ نیاز به دسترسی مدیر سیستم داشت. توسعهدهندگان جاوا که روی Apache Tomcat و Jetty کار میکردند، تصمیم هوشمندانهای گرفتند:
80=>8080 (double eighty)
این عدد هم شبیه پورت اصلی بود، هم بدون نیاز به دسترسی ریشه کار میکرد. بهمرور، پورت 8080 تبدیل شد به پورت نمادین برنامهنویسان جدی بکاند و جاواکارها. حتی امروز هم بسیاری از سرورهای جاوا (مثل Spring Boot) بهصورت پیشفرض روی همین پورت اجرا میشوند.
پورت 5173؛ شوخی هوشمندانهی Vite
در دههی ۲۰۲۰، با معرفی ابزار Vite توسط «اِوان یو» (خالق Vue.js)، نسل تازهای از ابزارهای توسعه سریع پدید آمد.
تیم Vite میخواست یک پورت پیشفرض جدید انتخاب کند و بهجای عددی تصادفی، یک شوخی جالب در آن گنجاند:
51 = “VI” (Roman number 'V' => 5)
73 = “TE”
5173 => “VITE”
به همین دلیل است که وقتی در پروژه Vite میزنید:
npm run dev
میبینید که در خروجی نوشته شده:
VITE v5.0 ready in 220 ms
Local: http://localhost:5173/
عدد 5173 حالا تبدیل شده به امضای فرهنگی Vite، عددی خاص، شوخ و ماندگار.
آیا استفاده از localhost:3000 اشتباه است؟
نه اشتباه، اما شاید محدودکننده باشد. بسیاری از توسعهدهندگان فقط از 3000 استفاده میکنند و وقتی خطای زیر را میبینند وحشت میکنند:
Error: Port 3000 already in use
در حالی که هر پورتی بین 1024 تا 49151 مجاز و ایمن است. میتوانید هر عدد دلخواهی را انتخاب کنید، مثلاً:
npm run dev -- --port=42069
یا در Vite:
vite --port=13337
به این ترتیب هم از تداخل پورتها خلاص میشوید و هم کمی «شخصیت مخصوص خودتان» را به پروژه میدهید.
تاریخچهای در چند عدد
هر پورت، داستان خودش را دارد:
- 8080 → راهحل هوشمند جاوا برای دور زدن محدودیت HTTP
- 8000 → انتخاب ساده و بیدردسر پایتون
- 3000 → عادت تصادفی Node.js که به سنت تبدیل شد
- 5173 → تخممرغ شانسی خلاقانهی Vite
از دههی ۹۰ تا امروز، همین چند عدد کوچک بخشی از فرهنگ روزمرهی توسعهدهندگان سراسر دنیا شدهاند.
نتیجهگیری
دفعهی بعد که سرورتان روی localhost:3000 بالا آمد، به یاد بیاورید که این فقط یک عدد نیست، بخشی از تاریخچهی توسعهی وب است که از جاوا تا جاوااسکریپت ادامه پیدا کرده.
و اگر روزی پورت 3000 مشغول بود، فقط یک عدد جدید انتخاب کنید، شاید این عدد، امضای شخصی شما شود.


