تصور کن دنیای ارتباطات مثل یه شهر بزرگ بود که همه چیز منظم و بینقص کار میکرد. هر دستگاهی که به اینترنت وصل میشد، مثل هر خونه یا گوشی تلفن، یه آدرس منحصر به فرد داشت، درست مثل آدرس خونت یا شماره موبایلت. اما با گذر زمان، یه تغییر بزرگ اتفاق افتاد. تعداد دستگاههایی که میخواستن به اینترنت وصل بشن، با سرعت سرسامآوری افزایش پیدا کرد؛ اونقدر زیاد که دیگه آدرسهای کافی برای همه وجود نداشت. درست مثل اینه که تو یه جشنواره بزرگ، فقط تعداد محدودی بلیت ورودی داری، ولی تعداد مهمانها هر لحظه بیشتر و بیشتر میشه.
حالا چاره چیه؟ باید یه راهحل هوشمندانه پیدا میشد. نمیشد که همه رو از ورود به جشنواره منع کرد، اما همزمان نمیشد به همه یک بلیت جداگانه داد. اینجا بود که تکنولوژیای به نام NAT (Network Address Translation) اومد وسط. ایدهاش ساده ولی کارآمد بود: به جای اینکه به هر دستگاه یه آدرس اختصاصی داده بشه، یه سری آدرسهای عمومی ساخته شد که چندین دستگاه میتونستن همزمان ازش استفاده کنن. اینجوری، مثل این میمونه که به جای دادن یه بلیت ورودی به هر نفر، گروهی از افراد از یه بلیت مشترک برای ورود استفاده کنن، بدون اینکه کسی متوجه کمبود بلیت بشه.
فرض کن تو و دوستات برنامه ریختید برید یه مهمونی خفن. حالا مهمونی خیلی شلوغه و صاحبخونه گفته که من فقط یه نفر رو میشناسم، اونم یه نفره که اسمش تو لیسته. یعنی چی؟ یعنی از کل شماها فقط یه نفر میتونه بیاد داخل، ولی خب، شما که نمیخواید فقط یه نفر بره و بقیه پشت در بمونن، نه؟😊
اینجاست که اون یک نفر نماینده میشه، میره داخل مهمونی و بعدش بقیه رو دونه دونه قاچاقی میبره تو. از پشتپرده! یعنی بدون اینکه کسی بفهمه چند نفر اومدن، همه تو مهمونی هستید و خوش میگذرونید. این دقیقاً کاریه که NAT تو دنیای اینترنت برای ما انجام میده.
وقتی تو خونتون چندتا دستگاه دارید: گوشی، لپتاپ، تبلت، و حتی پلیاستیشن یا تلویزیون هوشمند. خب، اگه اینترنت قرار بود به هر کدوم از این دستگاهها یه آدرس IP عمومی (همون آدرسی که بقیه دستگاههای دنیای اینترنت میبیننش) بده، خیلی زود تعداد آدرسها تموم میشد. یعنی به یه جا میرسیدیم که دیگه IP نداشتیم که به دستگاههای جدید بدیم!
ولی خب NAT این مشکل رو حل کرده. چطوری؟ میاد میگه "ببین، من یه آدرس IP عمومی دارم که میشه همون نماینده یا اون یک نفری که تو مهمونی بود. همه دستگاههای تو خونه (یا شرکت) رو من میبرم پشت سرم داخل اینترنت، بدون اینکه بقیه بفهمن چند نفر هستید." به این ترتیب، تو با همون یه دونه آدرس IP، همه دستگاههات به اینترنت وصل میشن.
مثلاً وقتی با گوشیت میری یه سایتی مثل NAT ،7Learn.com میاد و درخواست رو از طرف گوشی تو به سایت میفرسته، بعد وقتی سایت جواب میده، NAT میفهمه که این جواب مال گوشی تو بوده و دقیقاً اون جواب رو به گوشی میرسونه. حالا همین کار رو با لپتاپت، پلیاستیشن و بقیه دستگاهها هم میکنه، بدون اینکه سایت یا دنیای بیرون بفهمه چقدر دستگاه پشت این ماجرا هستند.
پس NAT یه جورایی مثل دربان باهوش عمل میکنه؛ یه دربان که میدونه کی از کجا اومده و جواب کدوم درخواست رو باید به کدوم دستگاه بده. بدون NAT، باید برای هر دستگاه یه آدرس IP عمومی تهیه میکردی که هم خیلی گرون درمیومد، هم حسابی کلافهکننده بود.
حالا بیا یه لحظه فکر کنیم که اگه NAT نبود، چی میشد. اول از همه، هر دستگاهی که تو خونه داری – از گوشی و لپتاپ گرفته تا تلویزیون هوشمند و حتی ساعت هوشمندت، باید یه آدرس IP عمومی مخصوص به خودش میداشت. خب حالا این یعنی چی؟ یعنی هر بار که میخواستی به اینترنت وصل بشی، باید بری یه فرم پر کنی، یه درخواست بزنی، و براش یه آدرس IP جدید بخری! خندهداره، نه؟ فکر کن بخوای برای گوشی یا تبلتت هم بری یه آدرس IP جدید بگیری.
تصور کن هر بار که یه دستگاه جدید میخری، باید برای اونم یه آدرس IP عمومی بخری؛ درست مثل این که برای هر خریدی که میخوای بکنی، مجبور باشی یه کارت اعتباری جدید بگیری. تازه این همش نیست، چون هر بار باید بگردی دنبال آدرس جدید، و کلی پول خرج کنی که اصلاً منطقی به نظر نمیاد. علاوه بر هزینههای مالی، کلی دردسر و زمانبر هم هست.
دنیای بدون NAT دقیقاً مثل یه دنیایی میمونه که توش برای هر کار کوچیک، باید یه فرآیند پیچیده و زمانبر انجام بدی. اصلاً اینترنت به این راحتی و سادگی نبود. هر خونهای به جای یه مودم ساده با یه آدرس IP، نیاز به یه سیستم پیچیده برای مدیریت IPهای مختلفش داشت. حتی فکرشم خستهکنندهست!
اما خوشبختانه، NAT اومد و همه این مشکلات رو حل کرد. یه آدرس IP عمومی به همه دستگاهها اختصاص داد و از طرفشون همه درخواستها رو مدیریت میکنه، بدون اینکه تو بخوای هیچ کار اضافهای انجام بدی.
یه زمانی، اینترنت از یه سیستم به نام IPv4 استفاده میکرد که آدرسهای ۳۲ بیتی داشت و میتونست حدود ۴.۳ میلیارد دستگاه رو آدرسدهی کنه، یعنی به هر دستگاه یه آدرس خاص بده تا بتونه توی شبکه شناخته بشه. اوایل این تعداد به نظر کافی میومد، اما تا سال ۱۹۹۲ دیگه مشخص شد که تعداد دستگاههایی که میخوان به اینترنت وصل بشن خیلی بیشتر از این عدده و آدرسها داره تموم میشه!
در سال ۱۹۹۴، یه تکنولوژی به اسم NAT معرفی شد. هدف اصلی NAT این بود که به عنوان یه راهحل موقتی برای دو مشکل مهم اون زمان عمل کنه: یکی کمبود آدرسهای IP که دیگه برای همه دستگاهها کافی نبود، و دومی هم مسئله مسیریابی که با بزرگ شدن اینترنت، پیچیدهتر میشد. NAT اینطوری کار میکرد که به جای دادن یه آدرس عمومی به هر دستگاه، چندین دستگاه میتونستن از یه آدرس مشترک استفاده کنن.
تا سال ۲۰۰۴، این تکنولوژی دیگه خیلی گسترده شده بود و تقریباً همه جا ازش استفاده میشد، بهطوریکه تبدیل شد به یه راهحل اساسی برای مشکل کمبود آدرسهای IP.
خب حالا که فهمیدیم NAT چیه و چرا انقدر مهمه، بیایم ببینیم این قهرمان پشتصحنه دقیقاً چطوری کار میکنه. بذار با یه مثال جذاب شروع کنیم.
فرض کن تو خونه یه مودم داری که هم موبایلت بهش وصله، هم لپتاپت، هم تبلت و حتی پلیاستیشن. حالا همه این دستگاهها میخوان با اینترنت صحبت کنن، ولی اینترنت فقط یه دونه آدرس IP عمومی میبینه، نه همه این دستگاهها. خب چطوریه که اینترنت میفهمه کی به چی وصله؟ جوابش همون NAT هست!
NAT یه نقش خیلی مهم و باهوش داره: میاد بین دستگاههای تو و اینترنت قرار میگیره، مثل یه مترجم حرفهای. بذار اینجوری توضیح بدم. فرض کن میخوای بری 7Learn.com و یه مطلب بخونی. گوشیت درخواستش رو به مودم میفرسته. حالا مودم (که همون NAT هست) میاد و این درخواست رو میگیره، بعد به اینترنت میگه "یکی میخواد به 7Learn.com وصل بشه"، ولی اینترنت فقط آدرس مودم رو میبینه، نه موبایل تو رو. NAT میاد و آدرس IP عمومی مودم رو میفرسته به سایت.
وقتی اینترنت جواب میده و اطلاعات از 7Learn.com برمیگرده، مودم میدونه این جواب برای کیه و دقیقاً همون پاسخ رو به گوشیت میرسونه. نکته جالب اینجاست که همه این کارا تو کسری از ثانیه انجام میشه و تو اصلاً نمیفهمی که چه اتفاق پیچیدهای پشت صحنه داره رخ میده.
NAT برای مدیریت این فرآیند از چند روش مختلف استفاده میکنه. بذار برات بازش کنم:
خب حالا که تا اینجا رسیدیم و فهمیدیم NAT چیه و چطوری کار میکنه، وقتشه یه نگاهی به مزایا و معایبش بندازیم. یعنی هم ببینیم چیا رو برامون آسون کرده و هم جاهایی که ممکنه یه کم اذیت کنه رو مرور کنیم. مثل هر تکنولوژی دیگه، NAT هم خوبیهاش رو داره و هم بدیهاش، ولی بیاین با مزایا شروع کنیم چون خب، همیشه بهتره اول مثبتها رو ببینیم!
خب همونطور که در این مقاله گفتیم NAT یکی از اون تکنولوژیهای خیلی کار راهاندازه که کمک کرد مشکل کمبود آدرسهای IP رو حل کنیم و کلی دردسر رو از سر اینترنت برداشت. اما حالا ببینیم چه مزایایی داره:
بزرگترین فایده NAT اینه که باعث میشه کلی تو مصرف آدرسهای IP عمومی صرفهجویی کنیم. تصور کن برای هر دستگاهی که میخوای به اینترنت وصل کنی، باید یه آدرس IP عمومی بخری. خیلی زود آدرسها تموم میشدن و یه جورایی اینترنت کلاً قفل میکرد. ولی NAT اومده و این مشکل رو حل کرده. به جای اینکه هر دستگاه یه IP عمومی جدا داشته باشه، همه از یه IP مشترک استفاده میکنن و پشت NAT قایم میشن. اینطوری دیگه نگران کمبود آدرسها نیستیم و دستگاههای خونگی یا ادارهای راحت به اینترنت وصل میشن.
یکی دیگه از مزیتهای خفن NAT اینه که به صورت پیشفرض یه لایه امنیتی به سیستمهای ما اضافه میکنه. چطوری؟ خب، چون دستگاههای تو شبکه داخلی (مثل گوشی، لپتاپ و...) از طریق NAT به اینترنت وصل میشن، آدرسهای داخلیشون تو اینترنت دیده نمیشه. یعنی هکرها یا افراد دیگهای که بخوان به دستگاههای ما دسترسی پیدا کنن، نمیتونن به راحتی به آدرس IP داخلیمون دسترسی داشته باشن. فقط اون IP عمومی رو میبینن، که NAT پشتشه و همه چیز رو کنترل میکنه.
NAT باعث میشه که شبکهها خیلی منعطفتر و کاراتر بشن. مثلاً اگه یه شرکتی تعداد زیادی کارمند و دستگاه داشته باشه، لازم نیست برای هر دستگاه یه IP عمومی داشته باشه. میتونه با NAT همه این دستگاهها رو با هم مدیریت کنه و به اینترنت وصل کنه. حتی تو خونه هم همینطوره؛ NAT باعث میشه هر تعداد دستگاهی که داری، بدون مشکل و دردسر به اینترنت وصل بشن.
NAT خیلی به کار مدیریت شبکه داخلی هم میاد. تو میتونی به راحتی بفهمی کدوم دستگاه چه کاری داره انجام میده و اگه لازم بود، ارتباطات رو مدیریت یا محدود کنی. مثلاً میتونی تعیین کنی که بعضی از دستگاهها دسترسی به اینترنت نداشته باشن یا فقط تو یه بازه زمانی خاص وصل بشن.
خب حالا بریم سراغ معایب. هرچند NAT کلی برامون کار رو راحت کرده، ولی جاهایی هم هست که یه کم اذیت میکنه یا دستمون رو میبنده. بیاین دقیقتر نگاه کنیم:
چون NAT همه درخواستها رو از طریق خودش مدیریت میکنه، ممکنه تو بعضی موارد باعث کاهش سرعت و کارایی بشه. به خصوص اگه ترافیک زیادی تو شبکه داشته باشی. NAT باید همه درخواستها رو بگیره، تغییر بده، بفرسته به اینترنت و بعد هم جواب رو برگردونه. این فرایند ممکنه باعث بشه یه مقدار تاخیر (lag) تو ارتباطاتت حس کنی، البته تو شبکههای خیلی شلوغ این بیشتر به چشم میاد.
یه سری سرویسها و پروتکلها مثل VoIP (تلفن اینترنتی) یا بعضی بازیهای آنلاین با NAT خوب کنار نمیان. دلیلش اینه که این سرویسها معمولاً به آدرسهای IP مستقیم نیاز دارن و از اینکه NAT بینشون قرار گرفته خوششون نمیاد. مثلاً اگه بخوای تو یه بازی آنلاین با یه دوستت بازی کنی، NAT ممکنه نتونه به درستی ارتباط مستقیم بین شما برقرار کنه و مشکلاتی مثل قطع و وصلی یا لگ به وجود بیاد.
یادت میاد تو بخشهای قبل گفتیم NAT از Port Address Translation (PAT) استفاده میکنه؟ خب، این کار یه کم پیچیدهست. یعنی اگه مثلاً بخوای سرویسهای خاصی رو تو شبکت راهاندازی کنی که نیاز به دسترسی از بیرون دارن (مثلاً یه سرور وب تو خونه راه بندازی)، باید حسابی بدونی چطوری پورتها رو مدیریت کنی و تنظیمات NAT رو درست انجام بدی. این کار برای بعضیها ممکنه سخت و گیجکننده باشه.
چون NAT همه دستگاهها رو با یه آدرس IP عمومی به اینترنت وصل میکنه، ردیابی دقیق دستگاههای پشت NAT از بیرون خیلی سخته. یعنی مثلاً اگه تو یه شرکتی که از NAT استفاده میکنه، بخوای بفهمی کدوم دستگاه یه کار خاص رو انجام داده، باید حتماً به ریز جزییات دسترسی داشته باشی وگرنه همه دستگاهها پشت یه IP پنهان شدن.
یه جورایی، ما به NAT وابسته شدیم! یعنی اگه یه مشکلی تو NAT به وجود بیاد، کل شبکه میتونه از کار بیفته. مثلاً اگه مودم یا روترت که داره NAT رو مدیریت میکنه خراب بشه، هیچ کدوم از دستگاههات نمیتونن به اینترنت وصل بشن. پس همیشه باید حواست به این سیستم باشه.
NAT (Network Address Translation) یه تکنولوژی باحال و مهمه که وظیفه داره آدرسهای IP داخلی تو شبکه خونگی یا ادارت رو به یه آدرس IP عمومی تبدیل کنه. حالا این یعنی چی؟ فرض کن تو خونه چند تا دستگاه داری (گوشی، لپتاپ، تلویزیون هوشمند و...). همه اینا از یه آدرس IP داخلی استفاده میکنن که فقط تو شبکه خونگی دیده میشه. ولی وقتی به اینترنت وصل میشن، NAT میاد و همه این دستگاهها رو از یه آدرس IP عمومی به اینترنت معرفی میکنه. یعنی از بیرون فقط یه آدرس IP دیده میشه، ولی پشتش کلی دستگاه دارن با اینترنت حال میکنن!
خیلی ساده بخوام بگم، NAT باعث میشه کلی تو مصرف آدرسهای IP صرفهجویی کنیم. اگه NAT نبود، برای هر دستگاهی که بخوای به اینترنت وصل کنی، باید یه آدرس IP عمومی بخری. حالا تصور کن خونت ۱۰ تا دستگاه داشته باشه، اونوقت چقدر باید هزینه کنی؟ کلی دردسر میشد. علاوه بر این، NAT یه لایه امنیتی هم به شبکت اضافه میکنه که جلوی دسترسی هکرها به دستگاههات رو میگیره.
خب، وقتی از NAT استفاده میکنی، دستگاههات پشت NAT قایم میشن. یعنی چی؟ یعنی آدرسهای IP داخلی تو شبکت تو اینترنت دیده نمیشن و فقط همون IP عمومی که NAT بهش اختصاص داده شده قابل دیدنه. این یعنی هکرها نمیتونن به راحتی به دستگاههات دسترسی پیدا کنن. در واقع، NAT به نوعی مثل یه دربان عمل میکنه و جلوی هکرها رو میگیره!
تو اکثر موارد، تاثیر NAT رو سرعت اینترنت خیلی کمه. ولی بعضی وقتا اگه شبکه خیلی شلوغ باشه و ترافیک زیادی رو NAT مدیریت کنه، ممکنه یه ذره تاخیر (یا همون lag) احساس کنی. این تاخیر به خاطر اینه که NAT باید همه درخواستها رو بگیره، ترجمه کنه و بعد پاسخشون رو برگردونه. ولی نگران نباش، تو استفادههای روزمره خیلی وقتا این تاخیر قابل احساس نیست.
NAT استاتیک (Static NAT) مثل این میمونه که برای هر دستگاه یه آدرس IP عمومی ثابت داشته باشی. یعنی مثلاً گوشیت همیشه با یه آدرس خاص به اینترنت وصل بشه. ولی NAT پویا (Dynamic NAT) مثل اینه که هر وقت یه دستگاه به اینترنت وصل میشه، NAT بهش یه IP موقت میده و وقتی کارش تموم شد، اون IP دوباره آزاد میشه تا دستگاه بعدی ازش استفاده کنه. این روش خیلی منعطفتره و استفاده بهتری از منابع IP میشه.
NAT بعضی وقتا با سرویسهایی مثل VoIP (تلفن اینترنتی) یا بعضی بازیهای آنلاین مشکل داره. این سرویسها معمولاً نیاز به ارتباط مستقیم با اینترنت دارن و NAT ممکنه مانع بشه. ولی خوشبختانه راهحلهایی مثل Port Forwarding میتونه این مشکل رو حل کنه. با یه سری تنظیمات کوچیک، این مشکل قابل برطرف شدنه.
اگه اهل بازیهای آنلاین باشی، ممکنه بعضی وقتا NAT برات مشکلساز بشه. NAT ممکنه باعث تاخیر یا لگ تو بازی بشه، چون بازیها نیاز به ارتباط مستقیم دارن. ولی با تنظیمات درست مثل Port Forwarding میشه این مشکل رو برطرف کرد و بازی رو بدون مشکل انجام داد.
بله، امکانش هست. ولی خب مشکل اینجاست که برای هر دستگاهی که بخوای به اینترنت وصل کنی، باید یه آدرس IP عمومی بخری و این هم خیلی گرونه و هم دردسر داره. NAT این مشکل رو برات حل میکنه و با یه آدرس عمومی، همه دستگاههات به اینترنت وصل میشن.
تقریباً همه روترهای مدرن NAT رو به صورت پیشفرض فعال دارن. ولی اگه میخوای مطمئن بشی، میتونی وارد تنظیمات روترت بشی و چک کنی که NAT فعاله. اگه NAT خاموش باشه، دستگاههات به اینترنت وصل نمیشن.
بله، ولی با وجود تعداد زیاد آدرسهای IP در IPv6، نیاز به NAT به طور قابل توجهی کمتر شده.
خب رسیدیم به آخر مقاله و وقتشه یه جمعبندی کوتاه و ساده داشته باشیم از اینکه NAT چیه و چرا انقدر مهمه. اگه بخوایم به زبون ساده بگیم، NAT یه تکنولوژی باحاله که به ما اجازه میده کلی دستگاه رو با یه آدرس IP عمومی به اینترنت وصل کنیم. این یعنی بدون اینکه لازم باشه برای هر دستگاه یه آدرس جدا بخری و کلی خرج کنی، همه میتونن به اینترنت وصل بشن و کار خودشون رو بکنن.
علاوه بر این، NAT به نوعی نقش یه محافظ رو داره. چون آدرسهای داخلی شبکه رو از دید بقیه پنهون میکنه و به این ترتیب امنیت رو بیشتر میکنه. با همه این مزایا، NAT تبدیل به یکی از ابزارهای ضروری برای شبکههای خونگی و حتی شرکتهای بزرگ شده.
در نهایت، NAT هم کارایی شبکهمون رو بالا میبره و هم دسترسی به اینترنت رو راحتتر میکنه. حالا که فهمیدی NAT چیه و چطور کار میکنه، میتونی با خیال راحت از اینترنت استفاده کنی و بدونی که این تکنولوژی پشت صحنه داره همه چیز رو مدیریت میکنه تا تو بدون هیچ دردسری به اینترنت وصل بشی.
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: