簡單明瞭說明UDP打洞原理

2021-07-29 09:05:48 字數 683 閱讀 7558

為什麼需要打洞呢?主要是不同區域網的電腦,他們通過一台路由器連線internet上外網,由於不同區域網的電腦ip是內部ip,連線外網是通過內網的伺服器的路由器臨時分派乙個通訊埠實現的,區域網路內部的電腦並不是真正internet上的乙個節點,這樣不同區域網路的電腦肯定無法通過internet直接通訊了(因為他們之間根本不知道對方在**)。那是不是沒有辦法實現呢?肯定有,那就是把很多人都整得迷迷糊糊udp打洞技術。

1)打洞技術需要借助乙個真正的internet伺服器,目的讓對方都能找到這個伺服器上的橋接器(其實就是我們程式設計人員寫的乙個程式啦)。

2)打洞的a和b雙方都需要連線到這個伺服器上的橋接器,連線成功後,這個橋接器將需要打洞的a、b雙方的ip和通訊埠(雙方局域  路由器臨時分派的port)做好記錄。

3)橋機器分別告訴a和b對方的ip和埠。

4)a直接向b發請求,b也向a發請求,這樣通訊建立了。

注意大多數路由器都支援打洞,有的不一定。另外路由器分派的埠,很多情況下是變動的(5分鐘可能變一次),橋機器應該動態更新這個port且告訴對方。

upd實現不同區域網的電腦直接通訊,不通過伺服器**,qq等軟體發檔案基本上udp這種方式,這樣降低伺服器開銷,實現更加高效的點對點通訊。

很多朋友問tcp能打洞嗎?我覺得不能,因為tcp是面上連線的,技術應該不可行。

今天晚了,不想寫了,如果有需要列子的朋友,可以聯絡我。

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