このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
処理の流れを整理してみよう
大文字はグローバル、小文字はプライベート IP/Port
R: リモートホスト(クライアント)
P: FTP プロキシ IP/Port
S: FTP サーバ IP/Port
D: データ接続用 IP/Port
静: 静的 NAPT ルール
動: 動的 NAPT ルール
接続時:
R───────┬ルータ┬───────p───────s
│ │ │ │ │
│ 接続→P→静→p→→→→→→→│ │
│ │ │ │ 接続→│
│ │ │ │←220応答 │
│←←←←←←←P←静←p←220応答 │ │
│ │ │ │ │
└───────┴───┴───────┴───────┘
PASV 以外のコマンド:
R───────┬ルータ┬───────p───────s
│ │ │ │ │
│ コマンド→P→静→p→→→→→→→│ │
│ │ │ │ コマンド→│
│ │ │ │←応答 │
│←←←←←←←P←静←p←応答 │ │
│ │ │ │ │
└───────┴───┴───────┴───────┘
PASV:
R───────┬ルータ┬───────p───────s
│ │ │ │ │
│ PASV→P→静→p→→→→→→→│ │
│ │ │ │ PASV→│
│ │ │ │ dで待機
│ │ │ │←dを返信 │
│ │動 的│←dを登録 │ │
│ │登 録│ Dを通知→│ │
│←←←←←←←P←静←p←Dを返信 │ │
│ │ │ │ │
│ データ接続→D→動→d→→→→→→→→→→→→→→→│
│ │ │ │ │
│LISTなど→P→静→p→→→→→→→│ │
│ │ │ │LISTなど→│
│ │ │ │ │
│←←←←←←←D←動←d←←←←←←←←←データ返送 │
│ │ │ │ d切断
│ │ │ │ │
└───────┴───┴───────┴───────┘
プロキシが、自らが LAN 内にいることを感知し、
NAT Traversal 機能を利用してグローバルアドレスを登録。
そしてグローバルアドレスを使ってクライアントに返信。
ここがポイントとなる。
ただ、このままだと動的登録エントリが
後始末されずに残ってしまうが、これは後の課題としよう。
当面は、登録エントリの TTL(タイムアウト)を利用するか。