マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • インターネット初期の頃から存在するプロトコル
  • 任意のホスト間のファイル転送を行うことが可能
  • 通常は接続したクライアントとサーバ(FTPサーバ)間の転送に利用される。

モード

以下の2つのモードがある。

アクティブ

inboundを受け入れないF/Wと相性が悪く、最近は使用されていない。

  • クライアント → サーバ
    クライアントがサーバへ待ち受けIPアドレスとポート番号を通知
  • サーバ → クライアント
  • サーバがクライアントから通知された
    IPアドレスのポート番号へコネクションを確立しに行く。
  • ポート番号が毎回異なるので、ファイアウォール、NAPTを使った環境では、
    場合によってはうまく接続できないこともある。 この場合はパッシブモードを用いる。

パッシブ

こちらも、イントラ → クラウド環境での接続では、
サーバー側のNAPTと相性が悪くサーバー側に設定が必要になる。

  • クライアント → サーバ
    サーバがクライアントへ待ち受けポート番号を通知する。
  • サーバ → クライアント
    待ち受けポート番号の通知を受けたクライアントがサーバにコネクションを確立しに行く。

セキュアなFTP

FTPは、セキュア(安全)なプロトコルとして設計されていないため、
インターネット回線を経由するケースなど、FTPSSFTPが利用されるようになった。

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?

FtpWebRequest の後継 → 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.

     スピードのために最適化された .NET & .NET Standard 用の FTP および FTPS クライアント。豊富な FTP コマンド、ファイルのアップロード/ダウンロード、SSL/TLS 接続、自動ディレクトリリスト解析、ファイルハッシュ/チェックサム、ファイルパーミッション/CHMOD、FTP プロキシ、FXP サポート、UTF-8 サポート、Async/await サポート、Powershell サポートなどを提供します。完全に C# で書かれており、外部からの依存関係はありません。

その他

参考

クラウド環境にFTPサーバを構築する場合


Tags: :IT国際標準, :インフラストラクチャ, :通信技術, :IIS


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-06-23 (水) 08:59:29 (1031d)