JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區 » 網路程式設計  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 TCP hole punching, 穿過防火牆
maxi0361





發文: 32
積分: 0
於 2015-06-12 09:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近想實作看看利用hole punching方式穿過防火牆, 有一個想法, 想知道我了解的是否正確, 理論上是否可行

目標, 向NAT後面(即LAN裡面)的RESTful service (HTTP server) 發送命令

環境如下
在LAN裡面的Server, 負責服務, private IP 192.168.10.10, listen to 80 port, 以下稱為A端
NAT, 即路由器, 只有一個public ip, 例如 52.123.92.124, private IP 192.168.10.1
internet上的client, 即我的程式, 假設它有static public ip, 例如向中華電信申請的ADSL固定ip, 例如18.7.244.100, 以下程為 B端

服務伺服器, 跟client端程式, 都是我寫的, 所以我可以控制兩端的所有工作, 連線流程如下
1. B端listen一個TCP port XXX, 等待B端連線
2. A端利用port 80, 發送TCP connect給B端, port XXX
即NAT 形成mapping 192.168.10.10:80 - 52.123.92.124: YYY 送到目的地 18.7.244.100: XXX
3. B端Accept, 回傳OK給A端, 並結束該TCP連線
4. A端收到OK後, 切斷TCP, 始動HTTP Server, listen 80
5. B端向 52.123.92.124: YYY發送REST呼叫
6. NAT接收到, 轉送至 192.168.10.10:80
7. A端收到呼叫, 回應該請求

這樣的hole punching是否會成功? (假設NAT的mapping沒有timeout或被清除)

若以上方法可行, 4種NAT, Full cone, address restricted, port restricted, symmetric, 有適合用這個方法?


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
932 TCP hole punching, 穿過防火牆 maxi0361 875 2015-06-12 09:41
» JWorld@TW »  Java SE 討論區 » 網路程式設計

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8