一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于數(shù)字電視技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法和裝置。
【背景技術(shù)】
[0002]目前的CA/DRM客戶端或其他第三方客戶端一般是基于標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口進(jìn)行開發(fā),都是基于設(shè)備(機(jī)頂盒、主機(jī)或條件接收卡)具有真實(shí)網(wǎng)卡應(yīng)用開發(fā)的,如果設(shè)備沒有自帶網(wǎng)卡,在實(shí)現(xiàn)這些基本應(yīng)用上就會(huì)出現(xiàn)網(wǎng)絡(luò)調(diào)用出錯(cuò),需要這些客戶端提供商逐一說明每個(gè)網(wǎng)絡(luò)調(diào)用函數(shù)的定義,集成商重新構(gòu)造函數(shù),對(duì)于Linux的網(wǎng)絡(luò)操作來說,至少有四方面的函數(shù)需要實(shí)現(xiàn):
[0003]I)特定的網(wǎng)絡(luò)函數(shù),例如socket, send ,recv, getaddrinfo ,gethostbyname等,不同的客戶端調(diào)用的函數(shù)不同,需要定制化封裝,系統(tǒng)平臺(tái)增加就意味著增加編寫封裝函數(shù);
[0004]2)Linux對(duì)于設(shè)備都有通用的接口,open,read,write ,close , 1ctl都是通用的,修改網(wǎng)絡(luò)的10處理就同時(shí)要實(shí)現(xiàn)所有的其他10的處理;
[0005]3)Poll ,select的10復(fù)用函數(shù)雖然不是和網(wǎng)絡(luò)直接相關(guān),但是往往和網(wǎng)絡(luò)調(diào)用函數(shù)組合使用,也需要附帶封裝實(shí)現(xiàn);
[0006]4)不同平臺(tái)調(diào)用的函數(shù)雖然類似,但是定義不同,移植不同操作系統(tǒng)平臺(tái)時(shí)需要修改。
[0007]現(xiàn)有技術(shù)的缺點(diǎn)主要表現(xiàn)在以下幾個(gè)方面:
[0008]I)網(wǎng)絡(luò)相關(guān)的函數(shù)個(gè)數(shù)眾多,即使是客戶端提供商也難以完全列出所有相關(guān)函數(shù),例如函數(shù)gethostbyname和gethostbyname_r,函數(shù)名相近但是功能有差異,客戶端提供商也有遺漏說明的,定制的工作量大;
[0009]2)Linux的所有的設(shè)備驅(qū)動(dòng)都可以以文件方式進(jìn)行處理,網(wǎng)絡(luò)函數(shù)封裝也包含了文件處理函數(shù)封裝的工作,如果系統(tǒng)平臺(tái)更改就需要重現(xiàn)編寫,實(shí)現(xiàn)的難度大工作量大;
[0010]3)10復(fù)用函數(shù)雖然不是和網(wǎng)絡(luò)直接相關(guān),卻是有效處理多個(gè)設(shè)備常用方法,往往和網(wǎng)絡(luò)調(diào)用函數(shù)組合使用,也需要附帶封裝實(shí)現(xiàn),這些函數(shù)是服務(wù)于所有10設(shè)備的,涉及到系統(tǒng)內(nèi)核的調(diào)用策略,修改難度大;
[0011]4)迀移平臺(tái)都要封裝函數(shù),不同客戶端使用的函數(shù)不一樣不能一次性包括所有函數(shù),不同平臺(tái)的集成都需要定制集成,工作量大。
【發(fā)明內(nèi)容】
[0012]本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)接口在條件接收卡(簡(jiǎn)稱CAM)中的實(shí)現(xiàn)方法和裝置,旨在解決現(xiàn)有技術(shù)中沒有真實(shí)網(wǎng)卡的設(shè)備網(wǎng)絡(luò)接口實(shí)現(xiàn)困難的問題。
[0013]本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法,該方法包括:
[0014]通過虛擬網(wǎng)卡獲取網(wǎng)絡(luò)數(shù)據(jù)包;
[0015]解析網(wǎng)絡(luò)數(shù)據(jù)包中的IP地址以及端口;
[0016]將網(wǎng)絡(luò)數(shù)據(jù)包按照端口對(duì)應(yīng)的協(xié)議類型重新封裝;
[0017]將重新封裝后的網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送給IP地址對(duì)應(yīng)設(shè)備的對(duì)應(yīng)端口。
[0018]本發(fā)明實(shí)施例還提供一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)裝置,該裝置包括:
[0019]網(wǎng)絡(luò)數(shù)據(jù)包獲取模塊,用于通過虛擬網(wǎng)卡獲取網(wǎng)絡(luò)數(shù)據(jù)包;
[0020]解析模塊,用于解析網(wǎng)絡(luò)數(shù)據(jù)包中的IP地址以及端口;
[0021 ]封裝模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包按照端口對(duì)應(yīng)的協(xié)議類型重新封裝;
[0022]網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送模塊,用于將重新封裝后的網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送給IP地址對(duì)應(yīng)設(shè)備的對(duì)應(yīng)端口。
[0023]本發(fā)明通過利用虛擬網(wǎng)卡在條件接收卡中實(shí)現(xiàn)實(shí)體網(wǎng)卡的功能,使得能夠?yàn)椴煌腃A/DRM和網(wǎng)絡(luò)應(yīng)用客戶端提供一個(gè)統(tǒng)一標(biāo)準(zhǔn)的接口,相對(duì)于重新封裝系統(tǒng)函數(shù)gI ibe,本發(fā)明提供的方法只需要封裝UDP/TCP/ARP包,既免除了標(biāo)準(zhǔn)1函數(shù)/10復(fù)用函數(shù)的重新封裝,又免除了 CA/DRM客戶端為集成商定制接口或由于集成商重新封裝函數(shù)難以實(shí)現(xiàn)而修改流程的問題。本發(fā)明提供的網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法具有普遍適應(yīng)性,能夠廣泛應(yīng)用于不同客戶端的移植,特別是對(duì)于不同條件接收產(chǎn)品來說,移植不同CA客戶端能共用一套成熟的虛擬網(wǎng)卡驅(qū)動(dòng),對(duì)于系統(tǒng)眾多的網(wǎng)絡(luò)函數(shù)都能夠處理,一次實(shí)現(xiàn)可以在不用應(yīng)用客戶端使用,不需要應(yīng)用客戶端更改接口,減少了實(shí)現(xiàn)難度,且虛擬網(wǎng)卡的驅(qū)動(dòng)處理能夠在應(yīng)用層開發(fā),方便對(duì)接應(yīng)用層的調(diào)試。
【附圖說明】
[0024]圖1是本發(fā)明實(shí)施例一提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖;
[0025]圖2是本發(fā)明實(shí)施例二提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖;
[0026]圖3是本發(fā)明實(shí)施例三提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖;
[0027]圖4是本發(fā)明實(shí)施例四提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖;
[0028]圖5是本發(fā)明實(shí)施例五提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖;
[0029]圖6是本發(fā)明實(shí)施例六提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0030]圖7是本發(fā)明的一個(gè)示例提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0031 ]圖8為本發(fā)明實(shí)施例的虛擬網(wǎng)卡的工作原理示意圖。
【具體實(shí)施方式】
[0032]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0033]由于目前的CA/DRM客戶端或其他第三方客戶端一般都是基于設(shè)備具有真實(shí)網(wǎng)卡的標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口應(yīng)用開發(fā)的,如果設(shè)備沒有自帶網(wǎng)卡,在實(shí)現(xiàn)這些基本應(yīng)用上就會(huì)出現(xiàn)網(wǎng)絡(luò)調(diào)用出錯(cuò),需要這些客戶端提供商逐一說明每個(gè)網(wǎng)絡(luò)調(diào)用函數(shù)的定義,需要集成商重新構(gòu)造函數(shù),逐個(gè)驅(qū)動(dòng)集成,本發(fā)明正是針對(duì)目前這一現(xiàn)狀帶來的接口實(shí)現(xiàn)難度大、工作量大提供的一種解決方案。
[0034]實(shí)施例一
[0035]圖1是本發(fā)明實(shí)施例一提供的一種網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法的流程圖,下面結(jié)合圖1來具體描述根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)絡(luò)接口在條件接收卡中的實(shí)現(xiàn)方法,如圖1所示,該方法包括以下步驟:
[0036]SlOl、通過虛擬網(wǎng)卡獲取網(wǎng)絡(luò)數(shù)據(jù)包。
[0037]其中,該網(wǎng)絡(luò)數(shù)據(jù)包等同于IP數(shù)據(jù)包,虛擬網(wǎng)卡(S卩TUN/TAP設(shè)備)是軟件的接口,它替代了真實(shí)網(wǎng)卡的功能,可以將TCP/IP協(xié)議棧處理好的網(wǎng)絡(luò)分包傳給任何一個(gè)使用TUN/TAP設(shè)備驅(qū)動(dòng)的進(jìn)程,由進(jìn)程重新處理后再發(fā)到物理鏈路中。它承接著TCP/IP協(xié)議棧發(fā)送的命令,同時(shí)回應(yīng)著TCP/1P協(xié)議棧的命令,當(dāng)然對(duì)這些命令的處理都只是轉(zhuǎn)接到真實(shí)網(wǎng)卡,都是內(nèi)核層之間的操作。
[0038]S102、解析網(wǎng)絡(luò)數(shù)據(jù)包中的IP地址以及端口 ;
[0039 ] SI 03、將網(wǎng)絡(luò)數(shù)據(jù)包按照端口對(duì)應(yīng)的協(xié)議類型重新封裝。
[0040]其中,封裝的內(nèi)容包括但不限于會(huì)話號(hào)(包括IP地址以及端口)、負(fù)載數(shù)據(jù)、協(xié)議命令等等。會(huì)話號(hào)是條件接收和主機(jī)之間通訊的ID號(hào),虛擬網(wǎng)卡根據(jù)端口對(duì)應(yīng)的會(huì)話號(hào)與目標(biāo)設(shè)備建立連接。
[0041]協(xié)議類型主要包括:TCP協(xié)議(用6表示),UDP協(xié)議(用17表示)。
[0042]S104、將重新封裝后的網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送給IP地址對(duì)應(yīng)設(shè)備的對(duì)應(yīng)端口。
[0043]為了更好的理解本實(shí)施例現(xiàn)提供圖8,圖8為本發(fā)明實(shí)施例的虛擬網(wǎng)卡的工作原理示意圖,如圖8所示,其中的數(shù)字標(biāo)注表示接口,具體的對(duì)應(yīng)關(guān)系如下:
[0044]①表示網(wǎng)絡(luò)應(yīng)用客戶端和TCP/IP協(xié)議棧的接口;②表示TCP/IP協(xié)議棧和TUN/TAP設(shè)備