「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[通信技術]] --[[ネットワークの基礎編]] * 目次 [#k9879034] #contents *概要 [#o2c4986c] -インターネット初期の頃から存在するプロトコル -任意のホスト間のファイル転送を行うことが可能 -通常は接続したクライアントとサーバ(FTPサーバ)間の転送に利用される。 *モード [#a3020171] 以下の2つのモードがある。 **アクティブ [#i3884299] inboundを受け入れないF/Wと相性が悪く、最近は使用されていない。 -クライアント → サーバ~ クライアントがサーバへ待ち受けIPアドレスとポート番号を通知 -サーバ → クライアント --サーバがクライアントから通知された~ IPアドレスのポート番号へコネクションを確立しに行く。 --ポート番号が毎回異なるので、ファイアウォール、[[NAPT>ネットワーク機器一覧#x06ef648]]を使った環境では、~ 場合によってはうまく接続できないこともある。 この場合は[[パッシブモード>#vf92b853]]を用いる。 **パッシブ [#vf92b853] こちらも、イントラ → クラウド環境での接続では、~ サーバー側の[[NAPT>ネットワーク機器一覧#x06ef648]]と相性が悪くサーバー側に設定が必要になる。 -クライアント → サーバ~ サーバがクライアントへ待ち受けポート番号を通知する。 -サーバ → クライアント~ 待ち受けポート番号の通知を受けたクライアントがサーバにコネクションを確立しに行く。 *セキュアなFTP [#c974e1bb] FTPは、セキュア(安全)なプロトコルとして設計されていないため、~ インターネット回線を経由するケースなど、[[FTPS>#e3387a98]]、[[SFTP>#k89c7dd5]]が利用されるようになった。 **FTPS [#e3387a98] ***概要 [#e106067f] -FTPで送受信するデータをTLSまたはSSLで暗号化する通信プロトコル。 -Well-known Portは、990/tcp(IISのFTPSは、port 21をFTPと共有)。 -RFC 2228, 4217 で標準化されている。 ***モード [#ra2e6c03] -Explicitモード --STARTTLS(平文の通信プロトコルを暗号化通信に拡張する方法) --認証コマンド実行後に暗号化通信を開始する。 --認証コマンドを実行しなければ通常のFTPとして機能する。 -Implicitモード --サーバ接続開始時点から暗号化通信を開始する。 --クライアントはサーバが採用している暗号化プロトコルに~ 適合したFTPSクライアントソフトを使用する必要がある。 --RFC 4217ドラフトは削除されており、現在、正式なRFCとして掲載されていない。 **SFTP [#k89c7dd5] -Secure Shell([[SSH]])上でSFTPコマンドを実行してファイル転送する。 -ただし、SFTPコマンドはFTPコマンドとはまったく別物。 *FTPS vs SFTP [#nf560911] **FTPS [#had22e90] ***メリット [#b07b451a] -ASCII/BINARY モードのサポート -フォルダ単位での転送 ***デメリット [#k3c94aad] サーバ側でSSL証明書の購入コストが発生~ ※ ワイルドカード証明書でWebサイトと共通可能。 **SFTP [#oa45ef7a] ***メリット [#j4dcf2c2] ***デメリット [#lfff24e3] *クライアント [#g210f8f1] **ツール [#f6ad6546] ***FFFTP [#re40eea3] -日本製のFTPクライアント -FTPSなどのサポートも加えられるなどメンテも続いていた。 -しかし、[[WinSCP>#j6f8c7cd]]の隆盛に従い、二代目開発者氏曰く、~ 最終バージョン2.00のリリースで開発の終了を検討しているもよう。 ***FileZilla [#i1a498d1] 成果物は、クライアントとサーバーの両方がある。 -クライアント --Windows、Linux、macOS --FTP、SFTP、FTPS(FTP over SSL/TLS) -サーバー --FTPと FTP over SSL/TLS をサポート --クライアントと異なり、Windowsだけサポート。 ***WinSCP [#j6f8c7cd] -オープンソースで開発されている~ FTP/SFTP/SCPクライアントソフト。 -こちらが主流になりそう。 **ライブラリ [#tfe69fdd] ***WinInet [#c9503825] -インターフェイスを確認すると、Win32のDLL(COMではない)。 -System32の下に、存在するwininet.dllが、WinInetに該当する模様。 -参考 --Win32 インターネット拡張機能 (WinInet) | Microsoft Docs~ https://docs.microsoft.com/ja-jp/cpp/mfc/win32-internet-extensions-wininet --Implement FTP on VBA with WinInet - Qiita~ https://qiita.com/ykws/items/7c80cc4c2b646c82c010 --VB6リファレンス FTP操作(API)~ http://cya.sakura.ne.jp/vb/WinInet.htm --FTPによるアップロード/ダウンロード(wininet.dll)(dinop.com)~ https://www.dinop.com/vc/ftp_wininet.html ***FtpWebRequest [#m061e219] 非推奨 -参考 --FtpWebRequest Class (System.Net) | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/api/system.net.ftpwebrequest ***System.Net.FtpClient [#ad9c6c1b] → [[FluentFTP>#z6fc6570]] -参考 --NuGet Gallery | System.Net.FtpClient~ https://www.nuget.org/packages/System.Net.FtpClient/ ***FluentFTP [#z6fc6570] [[System.Net.FtpClient>#ad9c6c1b]]の後継 -参考 --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. ***その他 [#h9878187] -Free .NET FTP library~ https://enterprisedt.com/products/edtftpnet/ -Alex FTPS Client - CodePlex Archive~ https://archive.codeplex.com/?p=ftps -.NET FTP, FTP .NET, FTP C#, FTP VB, C# FTP, VB FTP~ New improved FTP Component for .NET~ https://enterprisedt.com/general/press/20060818.html *参考 [#q7b4867f] -File Transfer Protocol - Wikipedia~ https://ja.wikipedia.org/wiki/File_Transfer_Protocol -FTPS - Wikipedia~ https://ja.wikipedia.org/wiki/FTPS -SSH File Transfer Protocol - Wikipedia~ https://ja.wikipedia.org/wiki/SSH_File_Transfer_Protocol -c# — 無料のFTPライブラリ~ https://www.it-swarm-ja.tech/ja/c%23/%E7%84%A1%E6%96%99%E3%81%AEftp%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/967009712/ **[[クラウド環境にFTPサーバを構築する場合]] [#nf2e09d6] ---- Tags: [[:IT国際標準]], [[:インフラストラクチャ]], [[:通信技術]], [[:Windows]], [[:IIS]]