NAT Traversal, part 1 - NAT Behavior
Posted on September 21st, 2006 at 1:12 by fr3@K

續自 NAT Traversal, part 0.

NAT (不包含防火牆) 處理 UDP 封包的行為中, 對 p2p 影響最大的兩類為:

  1. External Port Mapping
  2. Filtering


exteranl-port-mapping.640x550.png

External Port Mapping 指的是當使用內部同一個端口 (L:l) 對外部發封包的時候, NAT 對外面是否使用同一個端口 (N:?):

  • 若 NAT 對外使用的都是同一個端口 (n1 == n2 && n2 == n3), 則該 NAT 的 External Port Mapping 行為是 endpoint independent (與外部端點無關).
  • 若只有在外部端點 IP 不變只變 port 的情況下, NAT 對外使用的都是同一個端口 (n1 == n2 && n2 != n3) 則該 NAT 的 External Port Mapping 行為是 address dependent (與外部端點地址有關).
  • 若對任何不同的外部端點 NAT 對外使用的都不是同端口 (n1 != n2 && n2 != n3 && n1 != n3) 則該 NAT 的 External Port Mapping 行為是 address port dependent (與外部地址與端口都有關).

filtering.640x550.png

Filtering 指的是在不考慮封包掉了的情況下, 當一個位於內部的端口 (L:l) 對外部的一個端口 (X:x1) 發了封包, 外部不同端口 (X:x1, X:x2 and Y:y) 對 NAT 上 map 出來的端口 (N:n) 發封包時的過濾行為:

  • 若內部端口都能收到任何外部端口所發的封包, 則 該 NAT 的 Filtering 行為是 endpoint independent.
  • 若內部端口能收到外部同一個 IP 的另一個端口 (X:x2) 所發的封包, 則該 NAT 的 Filtering 行為是 address dependent.
  • 若內部端口僅能收到外部同一個 IP 固定端口 (X:x1) 所發的封包, 則該 NAT 的 Filtering 行為是 address port dependent.

在所有 NAT 上, 這兩類行為都同時存在. 但組合起來時, 不是如直覺般產生九種組合 (3 X 3 的矩陣). 細想一下就會知道只能有六種組合:

  • External Port Mapping 為 endpoint independent 時, Filtering 可為 endpoint independent, address dependent 或 address port dependent.
  • External Port Mapping 為 address dependent 時, Filtering 可為 address dependent 或 address port dependent.
  • External Port Mapping 為 address port dependent 時, Filtering 只能是 address port dependent.

繼續閱讀 NAT Traversal, part 2 - STUN.

del.icio.us:NAT Traversal, part 1 - NAT Behavior digg:NAT Traversal, part 1 - NAT Behavior spurl:NAT Traversal, part 1 - NAT Behavior newsvine:NAT Traversal, part 1 - NAT Behavior furl:NAT Traversal, part 1 - NAT Behavior Y!:NAT Traversal, part 1 - NAT Behavior 黑米共享書籤:NAT Traversal, part 1 - NAT Behavior 推推王:NAT Traversal, part 1 - NAT Behavior
Previous Post
« 給小乖乖 «
Next Post
» Bug Freedom »

Zero Comments »

No comments yet.

Comments RSS TrackBack URI

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>