網路上的大多數udp原理研究分析後,自己總結了下面的結果.
1、client a 登入 通過http伺服器 webservices 驗證成功獲取自身資訊與好友
列表資訊等。
2、http伺服器登記client a的nat後的ip位址與埠
3、client b登入 通過http伺服器 webservices 驗證成功獲取自身資訊與好友列
表資訊等。
4、http伺服器登記client b的nat後的ip位址與埠
6、client a獲得client b的ip位址後並傳送udp資訊到client b
7、client a與client b請求失敗,資訊丟失,此時client a報告http伺服器要求
伺服器幫忙對client b進行通知
8、http伺服器接到此命令後,將client a的ip位址發給client b,要求他連線
9、client b收到http伺服器的資訊後傳送請求到 client a
10、由於此時client a nat已經存在clinet b的session,所以此時 client a與
client b建立鏈結成功。
11、client a傳送訊息到 client b成功,不經http伺服器中轉
總結:換句話說就是http伺服器啟動了「和事老」的功能。為不信任的兩個人發
出命令從而使他們達到了一種互相承認而此建立鏈結關係
其中最主要的是server 的乙個方法就是傳送訊息到被打洞的客戶端
客戶端傳送訊息需要判斷該訊息是否傳送成功,不成功則要求請求打洞.若成功則不需要要求打洞!
客戶端在接收到伺服器的打洞指令後,則作出udp傳送響應
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,...