許多p2p軟體比如skype,qq,電驢之類需要不同內網的兩台機子進行通訊,而路由器的nat機制決定了內網訪問外網容易,而外網訪問內網困難,那如何才能做到這一點呢?有辦法------打洞!
具體實現方法需要一台伺服器,現在假設兩台內網pc,a和b想用埠40000通訊,閘道器分別為nata,natb.伺服器為s,配置如下:
a: 192.168.0.34 40000
nata: 58.240.157.121 60020
b: 192.168.0.227 40000
natb: 58.240.157.222 50030
s: 58.240.157.240 40000
打洞過程:
1.a訪問s,打乙個洞,洞的指向為a<->s
2.b訪問s,打乙個洞,洞的指向為b<->s
3.s訪問a,告訴它:b想訪問你
4.a訪問b,洞的指向為a<->b,這個包b的路由器natb收到後不會**給b,而是丟棄,因為它認為這是來歷不明的包:(
5.b訪問a,洞的指向為b<->a,此時a與b可以進行雙向通訊,打洞成功
打洞的目的是為了告訴nat,我要訪問的ip是我"朋友",你不能阻攔它發過來的資訊,比如第4步a通過傳送這個包,告訴了nata:b是我朋友;第5步b傳送包給a,告訴了natb:a是我朋友.最後nata認識了b,而natb認識了a,a與b終於實現了雙向通訊.
UDP打洞原理
許多p2p軟體比如skype,qq,電驢之類需要不同內網的兩台機子進行通訊,而路由器的nat機制決定了內網訪問外網容易,而外網訪問內網困難,那如何才能做到這一點呢?有辦法 打洞 具體實現方法需要一台伺服器,現在假設兩台內網pc,a和b想用埠40000通訊,閘道器分別為nata,natb.伺服器為s,...
UDP打洞原理
許多p2p軟體比如skype,qq,電驢之類需要不同內網的兩台機子進行通訊,而路由器的nat機制決定了內網訪問外網容易,而外網訪問內網困難,那如何才能做到這一點呢?有辦法 打洞 具體實現方法需要一台伺服器,現在假設兩台內網pc,a和b想用埠40000通訊,閘道器分別為nata,natb.伺服器為s,...
UDP打洞原理
許多p2p軟體比如skype,qq,電驢之類需要不同內網的兩台機子進行通訊,而路由器的nat機制決定了內網訪問外網容易,而外網訪問內網困難,那如何才能做到這一點呢?有辦法 打洞 具體實現方法需要一台伺服器,現在假設兩台內網pc,a和b想用埠40000通訊,閘道器分別為nata,natb.伺服器為s,...