新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SX單片機實現WebServer和網絡協議棧

        基于SX單片機實現WebServer和網絡協議棧

        作者: 時間:2012-03-14 來源:網絡 收藏

        首部長度指的是首部占32bit字的數目。由于它是一個4位字段,因此首部最長為60個字節。在這里,IP數據報字段的值是5。

        服務類型字段包括一個3位的優先權子字段(現在已被忽略)、4位的TOS子字段和1位未用位但必須置0。4bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4bit中只能置其中1bit 。如果所有4bit 均為0,那么就意味著是一般服務。

        總長度字段是指整個I P 數據報的長度,以字節為單位。利用首部長度字段和總長度字段,就可以知道I P 數據報中數據內容的起始位置和長度。

        標識字段唯一地標識主機發送的每一份數據報。

        標志字段用來指定目的地址是一個完整的主機地址還是一個地址。

        生存時間字段設置了數據報可以經過的最多路由器數。

        首部檢驗和字段是根據IP首部計算的檢驗和碼。

        源地址和目的地址都是32位的數據。

        可選項定義安全和處理限制、記錄路徑、時間戳、寬松的源站選路、嚴格的源站選路等信息。

        (2)棧對IP層的

        52BD100的棧中,IP層的就是把要發送出去的消息進行IP打包,即加上IP包頭,使之符合IP數據包的格式發送到物理層;將接收到的來自物理層的數據包進行IP解包,即去掉包頭,送到TCP層。應注意,棧不接收分片的IP包,因為它并不對接收到的數據進行重新打包。

        2. 傳輸層

        (1)TCP 協議

        TCP提供一種面向連接的、可靠的字節流傳送服務。TCP數據包的結構如圖5所示。

        37.jpg

        每個TCP段都包含源端和目的端的端口號,用于尋找發端和收端應用進程。這兩個值加上IP包頭中的源端IP地址和目的端IP地址,唯一確定一個TCP連接。

        序號用來標識從T C P 發端向T C P 收端發送的數據字節流。它表示在這個報文段中的第一個數據字節。

        確認序號包含發送確認的一端所期望收到的下一個序號。

        首部長度給出首部中32bit字的數目。

        緊急指針是一個正的偏移量,與序號字段中的值相加表示緊急數據最后一個字節的序號。其余字段的意義和IP包中的差不多。

        為了保證TCP層的數據能有效地傳輸,在建立TCP連接時,用到了三向握手機制。具體過程如下(假設在A、B間通信,A、B的初始化序號為X、Y):

          ① 由A向B發出SYN信號,告訴B,A的初始化序號為X。

          ② 由B向A發出ACK和SYN信號,告訴A,B知道A的初始化序號為X,B的是Y。

          ③ 由A向B發出ACK信號,告訴B,A知道B的初始化序號是Y。

        經過這樣的初始化后,TCP連接的建立就完成了,A與B之間的數據傳輸也可靠了。

        (2) 協議棧對TCP層的

        在SX52BD100的協議棧中,對TCP層的實現是通過提供的TCP API(應用程序接口)來實現。TCP的API主要包括下面的函數和變量:

        TCPApp1Init():建立第一個TCP連接的初始化函數;
        TCPApp2Init():建立第二個TCP連接的初始化函數;
        TCPAppTxBytes():TCP連接中發送數據的字節數;
        TCPAppRxBytes():TCP連接中接收數據的字節數;
        TCPAppTxData():發送數據;
        TCPAppRxData():接收數據;
        TCPAppTxDone():發送完畢;
        TCPAppRxDone():接收完畢;
        TCPAppPassiveOpen():被動TCP連接;
        TCPAppActiveOpen():主動TCP連接;
        Sock1RomoteIP、Sock2RomoteIP:TCP連接的遠程主機的IP地址;
        MyIP:本機的IP地址;
        tcb1LocalPortMSB、tcb1LocalPortLSB、tcb2LocalPortMSB、tcb2LocalPortLSB:本機的TCP連接端口;
        tcb1RemotePortMSB、tcb1RemotePortLSB、tcb2RemotePortMSB、tcb2RemotePortLSB:遠程主機的TCP連接端口;



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东至县| 固镇县| 北碚区| 临漳县| 任丘市| 长丰县| 尉犁县| 阳原县| 柘荣县| 从化市| 剑阁县| 中宁县| 城固县| 和田市| 勐海县| 洪雅县| 湘乡市| 泰兴市| 清河县| 定日县| 广河县| 钟祥市| 东丽区| 博湖县| 株洲县| 台湾省| 凤凰县| 邢台市| 简阳市| 曲阳县| 兴宁市| 馆陶县| 宝兴县| 阿拉尔市| 海阳市| 三穗县| 特克斯县| 花垣县| 宜宾县| 波密县| 玉林市|