「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- インターネット初期の頃から存在するプロトコル
- 任意のホスト間のファイル転送を行うことが可能
- 通常は接続したクライアントとサーバ(FTPサーバ)間の転送に利用される。
モード †
以下の2つのモードがある。
アクティブ †
inboundを受け入れないF/Wと相性が悪く、最近は使用されていない。
- クライアント → サーバ
クライアントがサーバへ待ち受けIPアドレスとポート番号を通知
- サーバがクライアントから通知された
IPアドレスのポート番号へコネクションを確立しに行く。
- ポート番号が毎回異なるので、ファイアウォール、NAPTを使った環境では、
場合によってはうまく接続できないこともある。 この場合はパッシブモードを用いる。
パッシブ †
こちらも、イントラ → クラウド環境での接続では、
サーバー側のNAPTと相性が悪くサーバー側に設定が必要になる。
- クライアント → サーバ
サーバがクライアントへ待ち受けポート番号を通知する。
- サーバ → クライアント
待ち受けポート番号の通知を受けたクライアントがサーバにコネクションを確立しに行く。
セキュアなFTP †
FTPは、セキュア(安全)なプロトコルとして設計されていないため、
インターネット回線を経由するケースなど、FTPS、SFTPが利用されるようになった。
FTPS †
概要 †
- FTPで送受信するデータをTLSまたはSSLで暗号化する通信プロトコル。
- Well-known Portは、990/tcp(IISのFTPSは、port 21をFTPと共有)。
- RFC 2228, 4217 で標準化されている。
モード †
- Explicitモード
- STARTTLS(平文の通信プロトコルを暗号化通信に拡張する方法)
- 認証コマンド実行後に暗号化通信を開始する。
- 認証コマンドを実行しなければ通常のFTPとして機能する。
- Implicitモード
- サーバ接続開始時点から暗号化通信を開始する。
- クライアントはサーバが採用している暗号化プロトコルに
適合したFTPSクライアントソフトを使用する必要がある。
- RFC 4217ドラフトは削除されており、現在、正式なRFCとして掲載されていない。
SFTP †
- Secure Shell(SSH)上でSFTPコマンドを実行してファイル転送する。
- ただし、SFTPコマンドはFTPコマンドとはまったく別物。
FTPS vs SFTP †
FTPS †
メリット †
- ASCII/BINARY モードのサポート
- フォルダ単位での転送
デメリット †
サーバ側でSSL証明書の購入コストが発生
※ ワイルドカード証明書でWebサイトと共通可能。
SFTP †
メリット †
デメリット †
クライアント †
ツール †
FFFTP †
- 日本製のFTPクライアント
- FTPSなどのサポートも加えられるなどメンテも続いていた。
- しかし、WinSCPの隆盛に従い、二代目開発者氏曰く、
最終バージョン2.00のリリースで開発の終了を検討しているもよう。
FileZilla? †
成果物は、クライアントとサーバーの両方がある。
- クライアント
- Windows、Linux、macOS
- FTP、SFTP、FTPS(FTP over SSL/TLS)
- サーバー
- FTPと FTP over SSL/TLS をサポート
- クライアントと異なり、Windowsだけサポート。
WinSCP †
- オープンソースで開発されている
FTP/SFTP/SCPクライアントソフト。
ライブラリ †
WinInet? †
- インターフェイスを確認すると、Win32のDLL(COMではない)。
- System32の下に、存在するwininet.dllが、WinInet?に該当する模様。
FtpWebRequest? †
非推奨
System.Net.FtpClient? †
→ FluentFTP
FluentFTP †
System.Net.FtpClientの後継
- 参考
- robinrodricks/FluentFTP
https://github.com/robinrodricks/FluentFTP
: An FTP and FTPS client for .NET & .NET Standard, optimized for speed. Provides extensive FTP commands, File uploads/downloads, SSL/TLS connections, Automatic directory listing parsing, File hashing/checksums, File permissions/CHMOD, FTP proxies, FXP support, UTF-8 support, Async/await support, Powershell support and more. Written entirely in C#, with no external dependencies.
その他 †
参考 †
Tags: :IT国際標準, :インフラストラクチャ, :通信技術, :Windows, :IIS