تصویر حسین نائیجی
حسین نائیجی

غرق در دنیای صفر و یک

پروتکل یا Protocol چیست؟

پروتکل به مجموعه قوانینی که تعیین یا مشخص میکند که data چطور بین دو دستگاه مختلف رد و بدل شود ، اساسا اجازه اتصال یک دستگاه را با دستگاه دیگر را میدهد . یک مثال کاربردی ، اگر بخواهید یک فایلی را در اینترنت دانلود کنید. طی مجموعه‌ای از قوانین ، سیستم شما اجازه ارتباط با سیستم مقصد را میگیرد. سپس بعد از گرفتن اجازه منتظر برقراری ارتباط و رد و بدل کردن data می ماند. ارتباطی بین سیستم شما و سیستم مقصد تشکیل میشود تا بتوانید ان فایل را دانلود کنید. این فایل میتواند یک فایل ویدئویی ، صوتی ، تصویری باشد . این ارتباط بر بستر شبکه از طریق پروتکل تشکیل میشود و درواقع سیستم شما از طریق پروتکل مربوطه میتواند ان فایل را دریافت کند.
این قسمت سیستم شما باید با زبانی قابل فهم با سیستم مقصد ارتباط بگیرد که این عمل در شبکه‌های کامپیوتری بر عهده‌ی پروتکل است. می توان به سرویس پست الکترونیکی که بارها از آت استفاده کردیم اشاره کرد. تمامی این ارتباط ها و ارسال و دریافت پبام‌های الکترونیکی در بستر شبکه و از طریق یک پروتکل خاص انجام میشود.

تا اینجا با اهمیت پروتکل ها آشنا شدید . و با دو مثال بالا یک تصویر سازی ذهنی از موضوع داشته داشت. الان بهترین موقع است تا وارد مباحث فنی شویم.

پورت یا Port چیست؟

در حالت کلی ما دو نوع پورت داریم .  پورت سخت افزاری (Hardware port) و پورت نرم‌افزاری (software port) . اما در این قسمت از آموزش محوریت ما بر روی پورت نرم افزاری است. قبل از آشنایی با پورت نرم افزاری بهتر است با پورت سخت افزاری آشنا شوید. 
اگر به به پشت کیس کامپیوتر دقت کنید. پورت‌های USB / AUDIO / HDMI / VGA و یا بر روی تجهیزات سخت افزاری که در شبکه استقرار یافته اند پیدا خواهید کرد. که به تمامی این موارد پورت سخت‌افزاری می‌گویند و صفت بارز آن قابل لمس و مشاهده بودن است.
پورت نرم افزاری کاملا متفاوت با پورت سخت افزاری است و مدیریت پورت نرم‌افزاری به عهده سیستم عامل یا Operation System است. کاملا مفهومی یا conceptual است و به صورت نرم‌افزاری مورد استفاده سرویس‌ها قرار می‌گیرد. تعداد پورت‌های نرم‌افزاری 65535 عدد است که این تخصیص پورت از 0 آغاز می‌شود. که مهم‌ترین آن از 0 تا 1023 شماره‌گزاری شده است که به آن Well-known یا پورت‌های شناخته شده می‌گویند. بعضی از این پورت‌ها توسط سازمانی به نام IANA برای سرویس‌های خاص شبکه رزرو شده است. از پورت‌های 1024 تا 65535 جزو پورت‌های آزاد قرار میگیرند.

FTP(File Transfer Protocol) over TCP 20,21

پرتوکل ftp برای تبادل و انتقال فایل‌ها با حجم های متغیر خصوصا حجم بالا استفاده میشود. نوع فایل ها میتواند چندرسانه یا Multimedia ، اسناد متنی و یا غیره باشد. از پورت 20 برای data connection بین Clint و Server استفاده میشود. و از پورت 21 برای اتصال کنترل connection control در شبکه استفاده می‌شود. در واقع این پروتکل از دو اتصال موازی TCP روی پورت های 20 و 21 تشکیل میشود. لازم به ذکر است مبادله اطلاعات در این پروتکل به صورت out-of-band یا خارج باندی است بدین ترتیب از یک اتصال جدا برای انتقال داده استفاده می‌شود و از اتصالی دیگر برای کنترل ارتباط. این پروتکل مکانیزم Authentication را جهت احراز هویت دارد و قبل از اتصال به ftp server سمت کاربر یا ftp client باید user و pass مربوط را جهت authenticate به سمت ftp sever ارسال کند. از معایب این پروتکل نبود Encryption یا رمزنگاری است.

لازم به ذکر است که احراز هویت را برایتان مختصرا توضیح دهم.
احراز هویت یا authentication چیست؟
فرایندی برای شناسایی و تصدیق هویت کاربر است. به این صورت که کاربر باید خودش را اثبات کند. که کاربری حقیقی است برای مثال وارد کردن Username و Password برای ورود به سرویس جیمیل یک نمونه احراز هویت است. تا کاربر مجوز ورود و دسترسی به یکسری سرویس‌های محرمانه را بگیرد.

SFTP (Secure File Transfer Protocol) over TCP 22

نسخه‌ی امن FTP و انتقال داده در بستری امن و رمزنگاری شده. برای این امر از پروتکل رمزنگاری به نام SSH روی پورت 22 استفاده می‌شود. که در ادامه آن را توضیح خواهیم داد در صورتی که در پروتکل FTP ما بحثی به عنوان رمزنگاری نداشته‌ایم.
و دیگر تفاوت عمده این پروتکل با FTP تک اتصال بودن آن است که در ارتباط بین SFTP server و SFTP client برقرار می‌شود برخلاف FTP که از تو اتصال TCP استفاده می‌کند.

TFTP (Trivial File Transfer Protocol) over UDP 69

این پروتکل از ساده ترین حالت های FTP است و نسبت به FTP دارای بسیار محدودیت‌هایی است و ساختار احراز هویت یا Authentication ندارد و به ندرت استفاده میشود و این پروتکل برخلاف FTP محدودیت حجمی دارد.

با سه نوع از پروتکل‌‌های پرکاربرد جهت انتقال اطلاعات در بستر شبکه آشنا شدید . در این بخش شمارا با سه پروتکل دیگر به نام‌های TELNET ، RDP , SSH آشنا خواهیم کرد.

Telnet over TCP 23

یکی از پروتکل‌های پرکاربرد و ناامن در شبکه‌های داخلی یا خصوصی. پروتکی که از طریق یک اتصال TCP روی پورت 23 این امکان را میدهد تا بتوانیم از راه دور منابع یک سیستم را کنترل کنیم. شما در این پروتکل محیط گرافیکی یا GUI ندارید و کاملا محیطی CLI یا Command-line است و باید دستورات را در قالب Text-mode وارد کنید. دستورات این پروتکل جهت ارسال و دریافت به سیستم مقصد به صورت plain-text یا داده‌ای خام است. که قابل شنود یا Sniff شدن است و این امر می‌تواند برای یک شبکه بسیار آسیب‌زا باشد. به همین طریق برای کار‌هایی که امنیت اطلاعات در آن ضروری نیست استفاده می‌شود.

RDP (Remote Desktop Protocol) over TCP 3389

یک پروتکل مشهور که توسط مایکروسافت طراحی و توسعه داده شده است. و این امکان را به کاربر می‌دهد تا با یک محیط GUI و گرافیکی بتواند یک سیستم را از  راه دور کنترل و مدیریت کند. و این امکان بسیار مورد توجه مدیران شبکه قرار گرفته است.  با این حال استفاده از این پروتکل در شبکه هم می‌تواند بسیار خطرناک باشد و برای کاهش ریسک انتظار می‌رود پورت پیش فرض این پروتکل یعنی 3389 را تغییر دهید.

SSH (Secure Shell) over TCP 22

این پروتکل از پورت 22 جهت ارتباط از راه دور استفاده می‌شود عملکردی مشابه به TELNET با تفاوت عمده و امنیتی. در این پروتکل از یک Cipher جهت رمزنگای استفاده می‌شود plain-text یا داده خام به صورت cipher-text ارسال می‌شود و خطر sniff یا شنود را کاهش ‌می‌سازد هرچند که نمیتوان به طور کامل مطمئن شد اما خطر افشای اطاعات را به طور چشم‌گیری کاهش می‌دهد و توصیه میشود در ارتباطاتی که امنیت اطلاعات ضروری است از این پروتکل استفاده شود. این پروتکل به صورت کلی دارای 2 ورژن اصلی SSH-1 و SSH-2 است که به ترتیب در سال‌های 1995 و 2006 عرضه شده است.

SMTP (Simple Mail Transfer protocol) over TCP 25

این پروتکل جهت تبادل electronic mail یا نامه های الکترونیکی استفاده میشود. برای درک بهتر این پروتکل و تفاوت آن با IMAP و POP3 بهتر است کمی در رابطه با ساختار electronic mail صحبت کنیم. سیستم پست اینترنتی دارای سه جزء اصلی است به ترتیب user agent و mail server و پروتکل SMTP است. این پروتکل ارتباط بین Mail server یا سرویس دهنده‌های پست الکترونیکی برقرار می‌کند . نامه‌ها را از سرور سمت کاربری آن سوی دنیا دریافت می‌کند و به سمت سرور مقصد که ممکن است هرجای کره خاکی باشد ارسال می‌کند. اما دو پروتکل که در ادامه با آن آشنا می‌شوید یک ارتباط بین user agent و mail server را دارند.

IMAPv4 (Internet Message Access Protocol) over TCP 143

این پروتکل در بستر وب که بخشی از اینترنت است استفاده میشود. و کاربرد آن دانلود mail ها از mail server است به برنامه جیمیل که بر روی گوشیتان نصب است و از سرویس آن استفاده میکنید نگاهی بی اندازید. در واقع برای دریافت mail ها از این پروتکل استفاده میشود و این امکان را میدهد تا تمامی mail دریافتی را از mail server مربوطه دانلود کنید. تا در زمان و مکان‌ها و سیستم‌های متفاوت بتوانید به mail های خود دسترسی داشته باشید و این اطلاعات در mail server باقی می ماند بر خلاف POP3 که با ان اشنا میشوید. کاربر به دلخواه خودش میتواند پیغام هارا حذف کند . در این قسمت برنامه Gmail یک User agent تلقی می‌شود.

POP3 (Post Office Protocol) over TCP 110

پروتکلی با قدمتی بیشتر نسبت به برادر خود IMAP روِش کارکرد این پروتکل به این صورتی است که شما از طریق پورت 110 اتصال TCP به mail server متصل می‌کند.  و فقط mail های دریافتی جدید را دانلود می‌کند و بعد از مدت زمان مشخصی اون mail ها از mail server حذف میشود.

از توضیح پروتکل‌های HTTP و HTTPS خود داری شده تا در بخش معماری وب به صورت مفصل و تخصصی تر برسی شوند.