基于SF0020芯片的嵌入式TCP/IP協(xié)議族設計與實現(xiàn)
發(fā)送數(shù)據(jù)報時采用大緩沖區(qū)方案:即將緩沖區(qū)劃分的足夠大(1514字節(jié)),提前留出協(xié)議首部字節(jié)的大小,能夠存儲最長的分組。接收數(shù)據(jù)報時采用鏈表方案:為了避免內存碎片的產生該緩沖區(qū)采用固定大小。鏈表的特點是允許快速封裝而無需數(shù)據(jù)的復制,也就是說當接收到遞交上來的數(shù)據(jù)報后,就分配一個新緩沖區(qū),填寫其中的內容后將新緩沖區(qū)插入保存此信息的鏈接列表中,這樣就可以很容易的在某個信息的前面插入附加字節(jié),而無需移動已經(jīng)存在的數(shù)據(jù)。采用此方法可以優(yōu)化TCP數(shù)據(jù)報的重組。
采用以上兩種方法可以最大限度實現(xiàn)TCP/IP協(xié)議族內數(shù)據(jù)公用,無需額外數(shù)據(jù)搬移。
3.3 協(xié)議族數(shù)據(jù)流程
如下圖3所示,用戶待發(fā)送的數(shù)據(jù)首先通過socket接口程序進入TCP/IP協(xié)議族,分別進行TCP與IP的數(shù)據(jù)封裝后查詢ARP高速緩存,如果存在當前目的IP與硬件地址的映射則填充以太網(wǎng)幀頭部信息后拷貝至以太網(wǎng)驅動程序空間立即發(fā)送,否則發(fā)出ARP查詢報文,將當前用戶數(shù)據(jù)拷貝至發(fā)送等待緩沖,進入接收狀態(tài)等待ARP查詢報文的應答。
由于輸入操作發(fā)生在中斷期間,此時設備驅動程序是不能調用任何過程來處理分組,也就是說中斷服務程序并不直接調用IP,而是使用了消息傳遞的方式。當一個IP分組到達之后用消息通知主循環(huán),由主循環(huán)調用協(xié)議族進行數(shù)據(jù)處理。如下圖4所示,首先通過以太網(wǎng)子層分路到達幀,如果是ARP報文則檢查更新ARP緩沖,收到ARP請求立即應答,若是應答報文則檢查本地發(fā)送等待隊列如有數(shù)據(jù)立即發(fā)送;如果是IP報文首先判定其協(xié)議類型,ICMP報文中的ping命令請求回顯則立即應答,源站抑制報文交給TCP處理;若是TCP協(xié)議進入有限狀態(tài)機進行解析最后將有效數(shù)據(jù)通過socket接口遞交上層。
圖3 協(xié)議族數(shù)據(jù)發(fā)送處理框圖 圖4 協(xié)議族數(shù)據(jù)接收處理框圖
4、 結論
經(jīng)過裁剪的嵌入式TCP/IP協(xié)議族,結構精簡,實時性強,可以在SF0020芯片上穩(wěn)定運行,基于該協(xié)議族的網(wǎng)絡監(jiān)控系統(tǒng)控制終端通過了專項測試達到期望的要求。本文引用地址:http://www.ex-cimer.com/article/195759.htm
tcp/ip相關文章:tcp/ip是什么
評論