新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > UDP數(shù)據報與TCP傳輸應用系統(tǒng)的層間接口設計

        UDP數(shù)據報與TCP傳輸應用系統(tǒng)的層間接口設計

        作者: 時間:2011-12-08 來源:網絡 收藏
        TCP/IP協(xié)議大致可以分為以下的層次:應用層、TCP/IP協(xié)議層、網卡驅動。這些協(xié)議層之間的接口如圖 1所示,其中輸出是數(shù)據流向對方,輸入是數(shù)據流向本地應用層。

          (1)應用層和rap層的接口

          如果是作為客戶端,則包含:

          ·bind:使用bind綁定本地端口;

          ·cONnect:需要使用connect進行連接,當應用層調用connect函數(shù)時,TCP層負責建立連接,返回值指 示是否連接成功;

          ·send:使用send發(fā)送一個應用層的數(shù)據;

          ·recelve:當rap層有數(shù)據到達時,rap層將觸發(fā)OnReceive函數(shù),用戶可以在OnReceive函數(shù)中做接收 處理;

          ·close:需要使用close函數(shù)主動和對方斷開連接,連接斷開以后返回真,如果斷開操作超時,則返回假。


         圖1 TCP/IP

          如果是作為服務器,則包含:

          ·bind綁定;

          ·listen:在綁定的本地端口監(jiān)聽;

          ·對方發(fā)來連接;

          ·send發(fā)送;

          ·recelve接收;

          ·close斷開連接。

          總的來說,rap層要提供給應用層以上的一些函數(shù)。

          (2)協(xié)議和網卡驅動的接口

          發(fā)送時,網卡提供send函數(shù),當協(xié)議調用send函數(shù)時,網卡驅動負責發(fā)送這個包。

          接收時,當網卡接收到一個數(shù)據包以后,產生一個中斷,系統(tǒng)提供一個中斷處理函數(shù),在這個中斷函 數(shù)中將這個包提交給TCP/IP層。

          (3)TCP/IP內部的

          發(fā)送流程如下:應用層調用send,要求rap層發(fā)送,TOP層填寫好TCP頭部信息以后,要求IP層發(fā)送,IP 層檢查是否能在ARP緩存中找到IP對應的物理地址,如果沒有則要ARP協(xié)議發(fā)送一個ARP請求,如果有則填 寫IP頭。再設置一個網絡接口層,這一層負責填寫MAC層頭部,這一層的另外一個功能是將接收網絡數(shù)據 流分流(也就是對IP包和ARP交給不同的函數(shù)處理)。

          對網卡的接收和TCP/IP協(xié)議的接口來說,直接在驅動程序的接收中斷處理函數(shù)中處理P頭、TCP頭,然 后把數(shù)據送給應用層。

          (4)實現(xiàn)隊列

          ·中斷處理函數(shù)過大,可能會帶來問題;

          ·各個層的界面不清晰;

          ·越向底層所要發(fā)送的包數(shù)目越多。如果發(fā)送時也是從應用層一直運行到網卡驅動,

          那么就比較難解決底層的多佘數(shù)據包發(fā)送的問題。

          所以將在層次之間設一個隊列,程序循環(huán)檢測各個層間隊列中是否有元素,如果有元素則提取后處理 。構建的一個隊列結構體如下。

          這個隊列提供隊列的初始化、隊列的寫入、隊列的讀出等函數(shù),以及完成隊列的操作。但是隊列多也 會占用資源和查詢時間,所以在沒有必要設置隊列的地方將苴接采用函數(shù)調用的方法。

          (5)模塊和模塊之間的接口

          各個模塊之中有三種類型的子模塊:一般函數(shù)、中斷函數(shù)和進程。

          ·一般函數(shù)只有在被進程調用時才運行。

          ·中斷函數(shù)一般由中斷觸發(fā)而運行,這里主要有網卡驅動的接收處理函數(shù)和定時器模

          塊中的定時器。

          由于這里采用隊列的方式作為模塊或層間的接口,所以必須反復查詢各個模塊的輸入隊列,所有含有 輸入隊列的模塊都必須有一個反復被調用的函數(shù),稱之為進程。在主進程maln函數(shù)中反復地調用這些進程。

        tcp/ip相關文章:tcp/ip是什么




        關鍵詞: UDP TCP傳輸 層間接口

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 新昌县| 蓬安县| 惠州市| 志丹县| 福安市| 鞍山市| 江津市| 康平县| 尼木县| 黄山市| 五常市| 长垣县| 云龙县| 临沧市| 吴旗县| 洪雅县| 清丰县| 威远县| 嘉祥县| 凤城市| 哈密市| 钟祥市| 新建县| 谢通门县| 宜春市| 满洲里市| 汉中市| 齐齐哈尔市| 科技| 岫岩| 忻城县| 井冈山市| 六盘水市| 崇义县| 苍溪县| 凭祥市| 长宁县| 花垣县| 三台县| 永顺县| 宜黄县|