基于SF0020芯片的嵌入式TCP/IP協(xié)議族設(shè)計(jì)與實(shí)現(xiàn)
1、 引言
TCP/IP起源于60年代末美國(guó)政府資助的一個(gè)分組交換網(wǎng)絡(luò)研究項(xiàng)目,到現(xiàn)今已發(fā)展成為計(jì)算機(jī)之間最常應(yīng)用的組網(wǎng)形式。盡管標(biāo)準(zhǔn)的TCP/IP協(xié)議族在數(shù)據(jù)傳輸?shù)目煽啃耘c數(shù)據(jù)流量的控制上作的很好,但是8位微控制器性能的限制下,標(biāo)準(zhǔn)的TCP/IP協(xié)議族的實(shí)現(xiàn)占用大量系統(tǒng)資源是實(shí)際應(yīng)用所不允許的。因此要在不改變TCP/IP協(xié)議族標(biāo)準(zhǔn)的前提下對(duì)其進(jìn)行裁剪,使其實(shí)時(shí)性提高同時(shí)保證可靠性以滿足嵌入式系統(tǒng)的要求。
SF0020是NEC公司推出的兼容80C51的8位微控制器芯片。根據(jù)系統(tǒng)在網(wǎng)絡(luò)監(jiān)控系統(tǒng)控制終端應(yīng)用的需要,外部接25MHz晶體,內(nèi)部倍頻至50MHz。該芯片內(nèi)嵌有10M/100Mbps的MAC模塊并提供MII界面,可與外部的Ethernet PHY芯片方便連接。芯片有256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器,外部可擴(kuò)充至512K字節(jié)。具備的DMA通道實(shí)現(xiàn)了在RAM中和在MAC與RAM之間進(jìn)行快速數(shù)據(jù)傳輸?shù)墓δ?;支持校?yàn)和模塊,在實(shí)現(xiàn)TCP/IP時(shí)可以節(jié)省控制器運(yùn)算開(kāi)銷(xiāo)。指令周期為4個(gè)時(shí)鐘周期(標(biāo)準(zhǔn)80C51為12時(shí)鐘周期/指令周期)。其性能滿足實(shí)現(xiàn)嵌入式TCP/IP協(xié)議族的基本要求。
2、 協(xié)議族總體框架設(shè)計(jì)與裁剪策略
為了實(shí)現(xiàn)在局域網(wǎng)環(huán)境中作為客戶端控制前端監(jiān)控設(shè)備(硬盤(pán)錄像機(jī)、編碼器、解碼、視頻服務(wù)器等)的應(yīng)用要求,必須在有限的硬件資源的條件下保證數(shù)據(jù)傳輸?shù)目煽啃院蛯?shí)時(shí)性。因此數(shù)據(jù)鏈路層采用目前應(yīng)用最為廣泛的以太網(wǎng)協(xié)議;上層利用TCP/IP的實(shí)現(xiàn)采用在運(yùn)輸層直接采用可靠的TCP協(xié)議,然后對(duì)其進(jìn)行適當(dāng)裁剪的方法。這是因?yàn)榭紤]到通用性、兼容性和通信的可靠程度,而沒(méi)有使用在應(yīng)用層加入控制策略運(yùn)輸層使用簡(jiǎn)單UDP協(xié)議的方案。本地?cái)?shù)據(jù)的流動(dòng)要實(shí)現(xiàn)向應(yīng)用程序提供可靠的數(shù)據(jù),與底層以太網(wǎng)驅(qū)動(dòng)程序交互數(shù)據(jù)報(bào)功能。
協(xié)議族系統(tǒng)結(jié)構(gòu)框架如下圖1所示,其中虛線部分是本文所要完成的,包括socket子層、運(yùn)輸層的TCP協(xié)議、網(wǎng)絡(luò)層的IP和ICMP協(xié)議、ARP協(xié)議和以太網(wǎng)子層。
圖1 協(xié)議族系統(tǒng)框架
2.1 接口子層實(shí)現(xiàn)
以太網(wǎng)子層提供了與以太網(wǎng)驅(qū)動(dòng)程序的接口,其實(shí)現(xiàn)驅(qū)動(dòng)程序存儲(chǔ)空間和協(xié)議空間之間數(shù)據(jù)搬移的功能;以及數(shù)據(jù)報(bào)流入的分路和流出的封裝處理。
Socket(插口)子層向上層提供了創(chuàng)建一個(gè)socket描述符,將本地的IP地址與端口號(hào)綁定到一個(gè)socket上,TCP連接的建立、斷開(kāi),數(shù)據(jù)的接收與發(fā)送的功能。
2.2 網(wǎng)絡(luò)層實(shí)現(xiàn)
網(wǎng)絡(luò)層實(shí)現(xiàn)包括IP協(xié)議(Internet Protocol網(wǎng)際協(xié)議)和基于IP協(xié)議的ICMP協(xié)議(Internet Control Messages Protocol控制報(bào)文協(xié)議)。圖1中該層下部的ARP(Address Resolution Protocol 地址解析協(xié)議)為IP提供動(dòng)態(tài)地址解析服務(wù)。
IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的網(wǎng)絡(luò)層和運(yùn)輸層數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。為了減小TCP/IP協(xié)議族的負(fù)擔(dān),接收時(shí)首先要檢查數(shù)據(jù)報(bào)的正確性,其次還要過(guò)濾目的地址不是本機(jī)的報(bào)文;此外如果收到被IP分片的數(shù)據(jù)報(bào)立即丟棄。最后判斷協(xié)議交給TCP或ICMP協(xié)議處理。因?yàn)榻笽P層分片可以提高通信的效率和可靠性,根據(jù)以太網(wǎng)最大傳輸單元(MTU)的限制,socket子層控制了用戶每次傳輸分組的最大字節(jié)數(shù)。同樣服務(wù)端也對(duì)IP分片加以限制使IP無(wú)需把有限的系統(tǒng)資源消耗在IP報(bào)文重裝上,這正是丟棄被分片的IP數(shù)據(jù)報(bào)的原因。
ICMP提供主機(jī)或路由器報(bào)告差錯(cuò)或提供查詢信息的服務(wù)。ICMP報(bào)文可以分成兩類(lèi):差錯(cuò)和查詢。查詢報(bào)文是用一對(duì)請(qǐng)求和回答定義的。ICMP差錯(cuò)報(bào)文通常包含了引起錯(cuò)誤的IP數(shù)據(jù)報(bào)的第一個(gè)分片的IP首部(和選項(xiàng)),加上該分片數(shù)據(jù)部分的前8個(gè)字節(jié)。由于運(yùn)輸層僅僅使用TCP協(xié)議,ICMP也進(jìn)行了裁剪。協(xié)議支持ping命令請(qǐng)求回顯應(yīng)答,用于檢查協(xié)議族的運(yùn)行狀況;差錯(cuò)控制全部交給運(yùn)輸層TCP協(xié)議處理。
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論