پشت صحنه با FTP

پروتکل انتقال فایل (FTP) یک پروتکل اصلی شبکه برای جابجایی فایل های کامپیوتری بین مشتری و سرور در شبکه است. به عنوان دانشجوی علوم کامپیوتر و امنیت سایبری، مدتی است که با FTP آشنایی دارم. شاید بیشتر می دانستم، اما فقط می توانستم “پورت 21” و یک ابزار اساسی برای اشتراک گذاری فایل را در ذهنم به یاد بیاورم. اما امروز، وقتی FTP در یادگیری من مطرح شد، تصمیم گرفتم عمیقتر کنم. در اینجا نگاهی تازه و دقیق به FTP، نحوه کارکرد آن و چند مثال عملی برای نشان دادن عملیات آن آورده شده است.
زمینه تاریخی
-
Origins:
FTP یکی از قدیمی ترین پروتکل هایی است که هنوز در حال استفاده است و به اوایل دهه 1970 باز می گردد. این برنامه برای پشتیبانی از انتقال فایل از طریق ARPANET، پیشرو اینترنت مدرن، توسعه یافته است. -
RFC 114:
اولین مشخصات FTP با نام RFC 114 در آوریل 1971 منتشر شد. این به طور قابل توجهی در طول زمان تکامل یافته است، با شناخته شده ترین نسخه در RFC 959، منتشر شده در سال 1985 تعریف شده است.
FTP چیست؟
FTP امکان انتقال فایل ها را بین دو ماشین از طریق شبکه فراهم می کند. بر اساس الف عمل می کند معماری مشتری-سرور جایی که مشتری اتصال به سرور را برای آپلود یا دانلود فایل ها آغاز می کند. بیایید نحوه عملکرد FTP را بررسی کنیم:
-
Establishing Connection:
کلاینت به سرور در پورت 21 متصل می شود تا یک اتصال کنترلی برقرار کند. -
Authentication:
کلاینت اعتبار ورود به سیستم (نام کاربری و رمز عبور) را از طریق اتصال کنترل ارسال می کند تا با سرور احراز هویت شود. -
Command Exchange:
کلاینت دستورات FTP را از طریق اتصال کنترل ارسال می کند، مانند دستوراتی برای تغییر دایرکتوری ها، فهرست کردن فایل ها یا شروع انتقال فایل. -
Data Transfer:
هنگامی که یک فرمان انتقال فایل صادر می شود، سرور یک اتصال داده را در پورت 20 آغاز می کند. سپس داده های واقعی فایل از طریق این اتصال منتقل می شود. -
Termination:
پس از اتمام انتقال فایل، اتصال داده در پورت 20 بسته می شود. اتصال کنترل در پورت 21 باز می ماند تا زمانی که کلاینت فرمانی برای پایان دادن به جلسه ارسال کند.
ایجاد اتصال
-
Port 21 - FTP Control:
این پورت برای کنترل ارتباط بین کلاینت و سرور استفاده می شود. دستوراتی مانند اعتبار ورود، تغییر دایرکتوری ها و سایر دستورات کنترلی در اینجا ارسال و دریافت می شوند. -
Port 20 - FTP Data:
این پورت انتقال داده واقعی را انجام می دهد. هنگامی که اتصال کنترل در پورت 21 برقرار شد، پورت 20 برای انتقال داده ها بین مشتری و سرور استفاده می شود.
احراز هویت
-
Client Initiates Connection:
کلاینت در پورت به سرور متصل می شود -
Server Response:
سرور با یک پیام تبریک پاسخ می دهد. -
Client Sends Credentials:
مشتری یک نام کاربری و رمز عبور برای احراز هویت ارسال می کند. -
Server Verifies:
سرور اعتبارنامه ها را تأیید می کند و با پیام موفقیت یا شکست پاسخ می دهد.
تبادل فرمان و پاسخ
دستورات FTP مبتنی بر متن هستند و از یک نحو خاص پیروی می کنند. هر دستور ارسال شده توسط مشتری منجر به یک کد پاسخ از سرور می شود. در اینجا چند نمونه هستند:
USER: Command to send the username.
PASS: Command to send the password.
LIST: Command to list files in a directory.
RETR: Command to retrieve (download) a file.
STOR: Command to store (upload) a file.
مثال تبادل دستور:
Client: USER ftpuser
Server: 331 Password required for ftpuser.
Client: PASS ftppassword
Server: 230 User ftpuser logged in.
حالت های انتقال داده
FTP می تواند در دو حالت فعال و غیر فعال عمل کند.
FTP فعال:
در Active FTP، کلاینت یک پورت را باز می کند و منتظر می ماند تا سرور از پورت 20 به آن متصل شود. نحوه کار به این صورت است:
- کلاینت به پورت 21 سرور متصل می شود و دستور PORT را ارسال می کند و مشخص می کند که مشتری به کدام پورت گوش می دهد.
- سرور تأیید می کند و اتصالی را از پورت 20 خود به پورت مشخص شده مشتری آغاز می کند.
- انتقال داده از طریق این اتصال جدید انجام می شود.
FTP منفعل:
در Passive FTP، نقش ها معکوس می شوند و رسیدگی به مسائل فایروال و NAT را آسان تر می کند. در اینجا نحوه کار آن آمده است:
- کلاینت به پورت 21 سرور متصل می شود و دستور PASV را ارسال می کند.
- سرور با آدرس IP و شماره پورت پاسخ می دهد که مشتری باید برای انتقال داده به آن متصل شود.
- سپس مشتری یک اتصال داده به آدرس IP و پورت مشخص شده برقرار می کند.
عملیات دایرکتوری
FTP به مشتریان اجازه می دهد تا دایرکتوری ها را روی سرور هدایت و مدیریت کنند. دستورات این عملیات عبارتند از:
- PWD: چاپ فهرست کار.
- CWD: دایرکتوری کاری را تغییر دهید.
- MKD: دایرکتوری درست کنید.
- RMD: حذف دایرکتوری
انتقال فایل
عملیات انتقال فایل شامل دستورات RETR و STOR است:
-
Download a File
: سرویس گیرنده نام فایل RETR را ارسال می کند و سرور فایل را از طریق اتصال داده منتقل می کند. -
Upload a File
: کلاینت نام فایل STOR را می فرستد و کلاینت فایل را از طریق اتصال داده به سرور منتقل می کند.
برخی ملاحظات امنیتی
-
Unencrypted Transfers
: FTP استاندارد داده ها را رمزگذاری نمی کند و آن را در برابر استراق سمع و رهگیری آسیب پذیر می کند. انواع امن مانند FTPS (FTP Secure) و SFTP (SSH File Transfer Protocol) برای رفع این نگرانی های امنیتی استفاده می شود. -
FTPS
: FTPS از پروتکل های رمزنگاری امنیت لایه حمل و نقل (TLS) و لایه سوکت های امن (SSL) پشتیبانی می کند و رمزگذاری را برای کانال های کنترل و داده ارائه می دهد. -
SFTP
: SFTP برخلاف نامش پروتکلی کاملا متفاوت بر اساس پروتکل Secure Shell (SSH) است. این قابلیت انتقال فایل امن را فراهم می کند و هم فرمان و هم انتقال داده را رمزگذاری می کند. -
Anonymous FTP
: بسیاری از سرورهای عمومی از FTP ناشناس پشتیبانی می کنند، جایی که کاربران می توانند با نام کاربری “ناشناس” و یک آدرس ایمیل به عنوان رمز عبور وارد شوند. این اغلب برای توزیع فایل های عمومی و به روز رسانی نرم افزار استفاده می شود.
مثال عملی: استفاده از FTP با CLI
بیایید چند مثال عملی را با استفاده از رابط خط فرمان FTP بررسی کنیم. در این مثال ها فرض می شود که یک سرور FTP راه اندازی و در حال اجرا است. میتوانید این وبلاگ را به راهاندازی یکی در ویندوز VM ارجاع دهید.
اتصال به سرور FTP
ftp
ورود به سیستم در
Name (ftp_server_address:username): your_username
Password: your_password
فهرست کردن فایل ها
ftp> ls
تغییر دایرکتوری ها
ftp> cd
دانلود یک فایل
ftp> get
آپلود یک فایل
ftp> put
خروج از جلسه FTP
ftp> bye
پایتون یک کتابخانه آسان برای استفاده به نام فراهم می کند ftplib برای عملیات FTP
نتیجه
FTP یک پروتکل قدرتمند برای انتقال فایل بین مشتری و سرور است. درک نقش پورتهای کنترل و داده، همراه با تفاوتهای بین حالتهای فعال و غیرفعال، میتواند به شما کمک کند تا به طور موثر از FTP برای نیازهای انتقال فایل خود استفاده کنید. مثالهای عملی ارائهشده، مقدمهای عملی برای استفاده از FTP از طریق خط فرمان و پایتون است.
با تسلط بر FTP، میتوانید انتقال فایلها را در محیطهای مختلف شبکه بهطور مؤثر مدیریت کنید و از تبادل اطلاعات روان و ایمن اطمینان حاصل کنید. بنابراین دفعه بعد که به FTP فکر می کنید، آن را چیزی فراتر از پورت 21 خواهید دید، اما به عنوان یک پروتکل جامع که عملیات انتقال فایل ضروری را تسهیل می کند.
با تشکر