不同版本互聯網協議客戶端之間的通信方法和系統的制作方法
【技術領域】
[0001] 本發明涉及通信技術,尤其是一種不同版本互聯網協議客戶端之間的通信方法和 系統。
【背景技術】
[0002] 中國電信當前正積極推進用戶、網絡以及互聯網內容從第四版本互聯網協議 (IPv4,簡稱:v4)向第六版本互聯網協議(IPv6,簡稱:v6)演進,目前采用了如輕型雙棧 (DS-Lite)、網絡地址轉換(NAT) 444等過渡技術。但這些技術的引入,主要解決的是如何在 IPv6網絡上傳遞IPv4用戶與傳統互聯網服務器間的通信,如何避免IPv4地址短缺等情況。 其它一些新型的過渡技術,如NAT64, 一般也主要考慮如何實現IPv6用戶訪問IPv4互聯網 服務器上的資源。
[0003] 上述所有過渡技術都沒有考慮如何實現基于客戶端的IPv4用戶與IPv6用戶間的 直接通信。在現有實現IPv4用戶與IPv6用戶通信的一種方式中,內容提供商(CP)只能通 過在其服務器側自行部署實現IPv4與IPv6 (表示為:IPv4/IPv6或v4/v6)協議轉換、流量 中轉的設備來完成上述兩類用戶間的直接通信,IPv4用戶向IPv6用戶發送通信報文時,由 IPv4用戶與該設備的IPv4地址通信,該設備提取IPv4用戶通信報文中的應用層數據,再通 過其IPv6地址與IPv6用戶通信;IPv6用戶向IPv4用戶發送通信報文時的流程同理。該 實現IPv4用戶與IPv6用戶通信的方式至少存在以下問題:由CP來部署這樣的設備,一方 面會因為該設備部署較少或者部署位置不合適造成客戶端與客戶端(C/C)間通信的流量 繞轉,另一方面也需要花費大量精力來處理網絡層面的協議轉換,從而加重了 IPv4向IPv6 演進的成本。
[0004] 在現有實現IPv4用戶與IPv6用戶通信的另一種方式中,基于通過中繼網絡地址 翻譯(NAT)實現的穿透(Traversal UsingRelayNAT,TURN)客戶端(Client)與 TURN 服務 器(Server)之間的通信模型,通過提前獲取通信對端另一協議族的地址來實現IPv4用戶 與IPv6用戶間的直接通信。其中的TURN Client與TURN Server可以表示為TURN Client/ TURN Server間的通信模型。該TURN Client/TURN Server通信模型存在的問題是:沒有考 慮本架構如何被其他CP采用,以協助CP完成v4/v6客戶端之間的通信。
【發明內容】
[0005] 本發明實施例所要解決的技術問題是:提供一種不同版本互聯網協議客戶端之間 的通信方法和系統,以協助CP服務器完成v4/v6客戶端之間的通信,降低IPv4向IPv6演 進的成本和難度。
[0006] 本發明實施例提供的一種不同版本互聯網協議客戶端之間的通信方法,包括:
[0007] 第一主機上的內容提供商CP客戶端向CP服務器發送第一注冊請求,該第一注冊 請求中包括第一用戶的用戶信息和第一主機使用的一個版本互聯網協議IP地址信息;第 二主機上的CP客戶端向所述CP服務器發送第二注冊請求,該第二注冊請求中包括第二用 戶的用戶信息和第二主機使用的另一版本IP地址信息;第一主機和第二主機上的CP客戶 端屬于同一個CP的CP客戶端;
[0008] CP服務器發現第一用戶與第二用戶為好友關系、但第一主機與第二主機使用的 IP地址屬于不同的地址族時,作為通過中繼網絡地址翻譯實現的穿透TURN客戶端向TURN 服務器發送映射請求,該映射請求中包括所述一個版本IP地址信息和所述另一版本IP地 址信息;
[0009] TURN服務器從自身配置的地址池中,向所述第一主機分配另一版本的中繼地址, 向所述第二主機分配一個版本的中繼地址;
[0010] TURN服務器在映射表中建立第一主機使用的一個版本IP地址、端口號和所述另 一版本的中繼地址之間的第一映射表項,建立第二主機使用的另一版本IP地址、端口號和 所述一個版本的中繼地址之間的第二映射表項,并向所述CP服務器返回所述另一版本的 中繼地址和所述一個版本的中繼地址;所述中繼地址包括中繼IP地址和端口號;
[0011] CP服務器將所述另一版本的中繼地址作為第一主機的地址信息發送給第二主機 上的CP客戶端,將所述一個版本的中繼地址作為第二主機的地址信息發送給第一主機上 的CP客戶端;
[0012] TURN服務器接收到第一主機上的CP客戶端基于所述一個版本的中繼地址發送給 第二主機上的CP客戶端的第一數據流時,基于所述第二映射表項對所述第一數據流進行 地址和協議的轉換后轉發給第二主機上的CP客戶端;接收到第二主機上的CP客戶端基于 所述另一版本的中繼地址發送給第一主機上的CP客戶端的第二數據流時,基于所述第一 映射表項對所述第二數據流進行地址和協議的轉換后轉發給第一主機上的CP客戶端。
[0013] 基于上述方法的另一個實施例中,所述一個版本IP地址為第四版本互聯網協議 IPv4地址,所述一個版本的中繼地址包括中繼IPv4地址和端口號;
[0014] 所述另一版本IP地址為第六版本互聯網協議IPv6地址,所述另一版本的中繼地 址包括中繼IPv6地址和端口號。
[0015] 基于上述方法的另一個實施例中,基于所述第二映射表項對所述第一數據流進行 地址和協議的轉換后轉發給第二主機上的CP客戶端包括:
[0016] 將所述第一數據流從IPv4協議轉換為IPv6協議,并查詢第二映射表項,獲取第一 數據流中作為目的地址的中繼IPv4地址和端口號對應的第二主機使用的IPv6地址和端口 號,根據該第二主機使用的IPv6地址和端口號,將IPv6協議的第一數據流轉發給第二主機 上的CP客戶端;
[0017] 基于所述第一映射表項對所述第二數據流進行地址和協議的轉換后轉發給第一 主機上的CP客戶端包括:
[0018] 將所述第二數據流從IPv6協議轉換為IPv4協議,并查詢第一映射表項,獲取第二 數據流中作為目的地址的中繼IPv6地址和端口號對應的第一主機使用的IPv4地址和端口 號,根據該第一主機使用的IPv4地址和端口號,將IPv4協議的第二數據流轉發給第一主機 上的CP客戶端。
[0019] 基于上述方法的另一個實施例中,通信網絡中包括多個TURN服務器時,還包括:
[0020] CP服務器發現第一用戶與第二用戶為好友關系、但第一主機與第二主機使用的 IP地址屬于不同的地址族時,從多個TURN服務器中選擇一個對第一主機與第二主機之間 數據流轉發路徑最短的一個TURN服務器;
[0021 ] 所述作為TURN客戶端向TURN服務器發送映射請求具體為:向選擇的TURN服務器 發送映射請求。
[0022] 基于上述方法的另一個實施例中,選擇一個對第一主機與第二主機之間數據流轉 發路徑最短的一個TURN服務器包括:
[0023] 分別計算第二主機使用的IPv6地址與所述多個TURN服務器中每一個TURN服務 器之間的距離,選擇與第二主機使用的IPv6地址之間距離最小的TURN服務器。
[0024] 基于上述方法的另一個實施例中,分別計算第二主機使用的IPv6地址與所述多 個TURN服務器中每一個TURN服務器之間的距離包括:
[0025] 分別對第二主機使用的IPv6地址與所述多個TURN服務器中每一個TURN服務器 地址進行異或XOR運算。
[0026] 本發明實施例提供的一種不同版本互聯網協議客戶端之間的通信系統,包括TURN 服務器、作為TURN客戶端的CP服務器、使用一個版本IP地址的第一主機和使用另一版本 IP地址的第二主機,第一主機和第二主機上分別耦合設置有同一個CP的CP客戶端;
[0027] 所述第一主機上的CP客戶端,用于向CP服務器發送第一注冊請求,該第一注冊請 求中包括第一用戶的用戶信息和第一主機使用的一個版本IP地址信息;
[0028] 所述第二主機上的CP客戶端,用于向所述CP服務器發送第二注冊請求,該第二注 冊請求中包括第二用戶的用戶信息和第二主機使用的另一版本IP地址信息;
[0029] 所述CP服務器,用于發現第一用戶與第二用戶為好友關系、但第一主機與第二主 機使用的IP地址屬于不同的地址族時,作為TURN客戶端向TURN服務器發送映射請求,該 映射請求中包括所述一個版本IP地址信息和所述另一版本IP地址信息;以及將TURN服務 器返回的另一版本的中繼地址作為第一主機的地址信息發送給第二主機上的CP客戶端, 將TURN服務器返回的一個版本的中繼地址作為第二主機的地址信息發送給第一主機上的 CP客戶端;
[0030] 所述TURN服務器,用于從自身配置的地址池中,向所述第一主機分配另一版本的 中繼地址,向所述第二主機分配一個版本的中繼地址;在映射表中建立第一主機使用的一 個版本IP地址、端口號和所述另一版本的中繼地址之間的第一映射表項,建立第二主機使 用的另一版本IP地址、端口號和所述一個版本的中繼地址