基于SF0020芯片的嵌入式TCP/IP協議族設計與實現
發送數據報時采用大緩沖區方案:即將緩沖區劃分的足夠大(1514字節),提前留出協議首部字節的大小,能夠存儲最長的分組。接收數據報時采用鏈表方案:為了避免內存碎片的產生該緩沖區采用固定大小。鏈表的特點是允許快速封裝而無需數據的復制,也就是說當接收到遞交上來的數據報后,就分配一個新緩沖區,填寫其中的內容后將新緩沖區插入保存此信息的鏈接列表中,這樣就可以很容易的在某個信息的前面插入附加字節,而無需移動已經存在的數據。采用此方法可以優化TCP數據報的重組。
采用以上兩種方法可以最大限度實現TCP/IP協議族內數據公用,無需額外數據搬移。
3.3 協議族數據流程
如下圖3所示,用戶待發送的數據首先通過socket接口程序進入TCP/IP協議族,分別進行TCP與IP的數據封裝后查詢ARP高速緩存,如果存在當前目的IP與硬件地址的映射則填充以太網幀頭部信息后拷貝至以太網驅動程序空間立即發送,否則發出ARP查詢報文,將當前用戶數據拷貝至發送等待緩沖,進入接收狀態等待ARP查詢報文的應答。
由于輸入操作發生在中斷期間,此時設備驅動程序是不能調用任何過程來處理分組,也就是說中斷服務程序并不直接調用IP,而是使用了消息傳遞的方式。當一個IP分組到達之后用消息通知主循環,由主循環調用協議族進行數據處理。如下圖4所示,首先通過以太網子層分路到達幀,如果是ARP報文則檢查更新ARP緩沖,收到ARP請求立即應答,若是應答報文則檢查本地發送等待隊列如有數據立即發送;如果是IP報文首先判定其協議類型,ICMP報文中的ping命令請求回顯則立即應答,源站抑制報文交給TCP處理;若是TCP協議進入有限狀態機進行解析最后將有效數據通過socket接口遞交上層。

圖3 協議族數據發送處理框圖 圖4 協議族數據接收處理框圖
4、 結論
經過裁剪的嵌入式TCP/IP協議族,結構精簡,實時性強,可以在SF0020芯片上穩定運行,基于該協議族的網絡監控系統控制終端通過了專項測試達到期望的要求。本文引用地址:http://www.104case.com/article/195759.htm
tcp/ip相關文章:tcp/ip是什么
評論