UDP打洞原理

2021-05-27 07:21:54 字數 784 閱讀 7258

許多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,...