2005 年 12 月 20 日 11 時 56 分

内容の整理


このアーカイブは同期化されません。 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(タイムアウト)を利用するか。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.