一種nat網絡類型檢測方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及NAT檢測領域,特別涉及一種NAT網絡類型檢測方法及裝置。
【背景技術】
[0002]在對等計算P2P網絡中由于網絡地址轉換NAT設備的存在,P2P節(jié)點一般需要先檢測NAT網絡類型,從而選擇有效的NAT穿透技術。
[0003]現有技術中,國際互聯網工程任務組IETF推薦使用RFC3489中描述的STUN(SimpleTraversal of UDP over NATs,NAT的UDP簡單穿越)協議,在RFC3489文檔中描述了STUN協議的詳細規(guī)格,它定義的捆綁請求包含會話ID、消息類型、消息碼、置換地址和消息屬性,它定義的捆綁應答包含會話ID、消息類型、消息碼、置換地址、映射地址和消息屬性,根據消息類型和消息屬性的不同,捆綁請求和捆綁應答包含的字節(jié)由28變化到60個字節(jié)不等。這些STUN消息格式的定義在實際業(yè)務處理中占用系統(tǒng)資源多,使得網絡開銷較大。
【發(fā)明內容】
[0004]本發(fā)明實施例的目的在于提供一種NAT網絡類型檢測方法及裝置,以簡化STUN協議,從而減小網絡開銷。具體技術方案如下:
[0005]本發(fā)明提供了一種NAT網絡類型檢測方法,應用于客戶端,所述方法包括:
[0006]在預定網絡類型檢測時刻,向P2P網絡中的服務器的第一地址的第一端口發(fā)送第一捆綁請求消息要求所述服務器從第一地址的第一端口反饋第一捆綁應答消息,并監(jiān)聽所述服務器的第一地址的第一端口反饋的第一捆綁應答消息,其中,所述服務器包括第一地址、第二地址、第一端口和第二端口,所述第一捆綁請求中攜帶消息碼,所述第一捆綁應答消息中攜帶映射地址Mapped-Address和置換地址Changed-Address ;
[0007]當第一預設捆綁響應時間段監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息時,如果所監(jiān)聽到的第一捆綁應答消息所攜帶的Mapped-Address與自身的網絡地址不相同,則確定存在NAT設備,并且,向所述服務器的第一地址的第一端口發(fā)送第二捆綁請求消息要求所述服務器從第二地址的第二端口反饋第二捆綁應答消息;
[0008]獲得在第二預設捆綁響應時間段內的監(jiān)聽結果,基于所述監(jiān)聽結果,確定自身的NAT網絡類型。
[0009]可選的,所述方法還包括:
[0010]向所述服務器的第一地址的第一端口發(fā)送所述第一捆綁請求消息之后,當所述第一預設捆綁響應時間段未監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息時,重新向所述服務器的第一地址的第一端口發(fā)送所述第一捆綁請求消息要求所述服務器從第一地址的第一端口反饋第一捆綁應答消息;
[0011]在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息,則確定自身的NAT網絡類型為BLOCKED類型。
[0012]可選的,所述獲得在第二預設捆綁響應時間段內的監(jiān)聽結果,基于所述監(jiān)聽結果,確定自身的NAT網絡類型,包括:
[0013]當所述第二預設捆綁響應時間段監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息時,則確定自身的NAT網絡類型為FULLC0NE類型。
[0014]可選的,所述方法還包括:
[0015]當第二預設捆綁響應時間段未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息時,重新向所述服務器的第一地址的第一端口發(fā)送第二捆綁請求消息要求所述服務器從第二地址的第二端口反饋第二捆綁應答,在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息,則向所述第一捆綁應答消息中攜帶的Changed-Address發(fā)送第三捆綁請求消息要求所述服務器從第二地址的第二端口反饋第三捆綁應答消息;
[0016]當第三預設捆綁響應時間段監(jiān)聽到所述服務器的第二地址的第二端口反饋的第三捆綁應答消息,基于所監(jiān)聽到的該第三捆綁應答消息,確定自身的NAT網絡類型。
[0017]可選的,所述基于所監(jiān)聽到的該第三捆綁應答消息,確定自身的NAT網絡類型,包括:
[0018]判斷第一捆綁應答消息和第三捆綁應答消息中所攜帶的Mapped-Address是否相同,如果是,則向所述服務器的第一地址的第一端口發(fā)送第四捆綁請求消息要求所述服務器從第一地址的第二端口反饋第四捆綁應答消息,如果否,則確定自身的NAT網絡類型為SYMMETRIC 類型;
[0019]在第四預設捆綁響應時間段內,判斷是否監(jiān)聽到所述服務器的第一地址的第二端口反饋的第四捆綁應答消息,如果是,確定自身的NAT網絡類型為RESTRICTED類型,如果否,重新向所述服務器的第一地址的第一端口發(fā)送第四捆綁請求消息要求所述服務器從第一地址的第二端口反饋第四捆綁應答消息;
[0020]在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第一地址的第二端口反饋的第四捆綁應答消息,則確定自身的NAT網絡類型為PORTRESTRICTED類型。
[0021]可選的,所述方法還包括:
[0022]當所述第一預設捆綁響應時間段監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息時,如果所監(jiān)聽到的所述第一捆綁應答消息所攜帶的映射地址Mapped-Address與自身的網絡地址相同,則確定不存在NAT設備,并且,向所述服務器的第一地址的第一端口發(fā)送第五捆綁請求消息要求所述服務器從第二地址的第二端口反饋第五捆綁應答消息;
[0023]當第五預設捆綁響應時間段監(jiān)聽到所述服務器的第二地址的第二端口反饋的第五捆綁應答消息,則確定自身的NAT網絡類型為PUBLIC類型。
[0024]可選的,所述方法還包括:
[0025]向所述服務器的第一地址的第一端口發(fā)送第五捆綁請求消息之后,當第五預設捆綁響應時間段未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第五捆綁應答消息時,重新向所述服務器的第一地址的第一端口發(fā)送第五捆綁請求消息要求所述服務器從第二地址的第二端口反饋第五捆綁應答消息;
[0026]在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第五捆綁應答消息,則確定自身的NAT網絡類型為FIREWALL類型。
[0027]本發(fā)明實施例提供了一種NAT網絡類型檢測裝置,應用于客戶端,所述裝置包括:
[0028]消息發(fā)送模塊,用于在預定網絡類型檢測時刻,向P2P網絡中的服務器的第一地址的第一端口發(fā)送第一捆綁請求消息要求所述服務器從第一地址的第一端口反饋第一捆綁應答消息,并監(jiān)聽所述服務器的第一地址的第一端口反饋的第一捆綁應答消息,其中,所述服務器包括第一地址、第二地址、第一端口和第二端口,所述第一捆綁請求中攜帶消息碼,所述第一捆綁應答消息中攜帶映射地址Mapped-Address和置換地址Changed-Address ;
[0029]第一消息分析模塊,用于當第一預設捆綁響應時間段監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息時,如果所監(jiān)聽到的第一捆綁應答消息所攜帶的Mapped-Address與自身的網絡地址不相同,則確定存在NAT設備,并且,向所述服務器的第一地址的第一端口發(fā)送第二捆綁請求消息要求所述服務器從第二地址的第二端口反饋第二捆綁應答消息;
[0030]第一確定模塊,用于獲得在第二預設捆綁響應時間段內的監(jiān)聽結果,基于所述監(jiān)聽結果,確定自身的NAT網絡類型。
[0031]可選的,所述裝置還包括:
[0032]第一消息重發(fā)模塊,用于所述消息發(fā)送模塊向所述服務器的第一地址的第一端口發(fā)送所述第一捆綁請求消息之后,當所述第一預設捆綁響應時間段未監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息時,重新向所述服務器的第一地址的第一端口發(fā)送所述第一捆綁請求消息要求所述服務器從第一地址的第一端口反饋第一捆綁應答消息;
[0033]第二確定模塊,用于在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第一地址的第一端口反饋的第一捆綁應答消息,則確定自身的NAT網絡類型為BLOCKED 類型。
[0034]可選的,所述第一確定模塊,包括:
[0035]網絡類型確定單元,用于當所述第二預設捆綁響應時間段監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息時,則確定自身的NAT網絡類型為FULIX0NE類型。
[0036]可選的,所述裝置還包括:
[0037]第二消息重發(fā)模塊,用于當第二預設捆綁響應時間段未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息時,重新向所述服務器的第一地址的第一端口發(fā)送第二捆綁請求消息要求所述服務器從第二地址的第二端口反饋第二捆綁應答,在重發(fā)發(fā)送的次數達到預定次數閾值后,如果未監(jiān)聽到所述服務器的第二地址的第二端口反饋的第二捆綁應答消息,則向所述第一捆綁應答消息中攜帶的Changed-Address發(fā)送第三捆綁請求消息要求所述服務器從第二地址的第二端