freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-嵌入式tcpip協(xié)議研究-閱讀頁

2024-12-23 18:58本頁面
  

【正文】 基本協(xié)議框架設(shè)計(jì) 網(wǎng)絡(luò)接口層實(shí)現(xiàn) 功能概述 該層是 TCP/IP 協(xié)議棧與下層物理設(shè)備的驅(qū)動程序之間的接口。如果是從以太網(wǎng)接口發(fā)出,則 ni_send()以待發(fā) IP數(shù)據(jù)報(bào)的目的 IP 地址為索引查找 ARP 地址映射表,如果查到對應(yīng)的目的物理地址,則以此封裝成以太網(wǎng)幀,在調(diào)用下層的 ne_transmit()數(shù)實(shí)現(xiàn)發(fā)送;如果沒有相應(yīng)的目的物理地址,則調(diào)用 ARP 協(xié)議實(shí)現(xiàn)中的 arp_req()函數(shù)發(fā) ARP 請求;如果是從串口發(fā)出,則直接調(diào)用下層 PPP 協(xié)議中的 ppp_send()函數(shù)發(fā)送。 ni_recv()首先判斷接收數(shù)據(jù)類型,如果是 IP 數(shù)據(jù)報(bào),則調(diào)用上層IP 協(xié)議中的 ip_recv()函數(shù);如果是 ARP 數(shù)據(jù)報(bào),則調(diào)用 ARP 報(bào)文處理函數(shù) arp_proc()。該函數(shù)被上層的 IP 協(xié)議初始化函數(shù) ni_init()調(diào)用。 ARP 報(bào)文 IP 報(bào)文 IP 報(bào)文 接收數(shù)據(jù) 驅(qū)動程序 圖 3 3 網(wǎng)絡(luò)接口層函數(shù)關(guān)系 ARP協(xié)議實(shí)現(xiàn) 功能概述 ARP 協(xié)議實(shí)現(xiàn)對 ARP 報(bào)文的解釋、處理,同時管理 ARP 映射表。通用計(jì)算機(jī)系統(tǒng)中 ,ARP高速緩存一般設(shè)計(jì)成雙向數(shù)據(jù)鏈的形式 ,這樣整個緩存可以方便地動態(tài)增減。因此ARP 的地址緩存采用了線性數(shù)組形式的結(jié)構(gòu)。嵌入式應(yīng)用中節(jié)點(diǎn)不是很多 ,即 ARP 緩存容量不需要很大 ,因此將 ARP 高速緩存設(shè)計(jì)成固定大小。既然如此始終處于被動狀態(tài)的服務(wù)器完全不需要向任何調(diào)用 arp_proc() 接收函數(shù) ni_recv() 發(fā)送函數(shù) ni_send() 15 主機(jī)發(fā)送 ARP 請求 ,設(shè)備只要能處理 ARP 請求并返回 ARP 應(yīng)答即可。 ARP 報(bào)文分為 ARP 請求報(bào)文和 ARP 應(yīng)答報(bào)文。 管理 ARP 映射表的工作主要包括 :ARP 表的查找, ARP 表項(xiàng)的添加、刪除以及 ARP表項(xiàng)的更新。 ARP 映射表的每個表項(xiàng)有一個生存時間域 (time to live, ttl)以表明該項(xiàng)是否己過時, ttl 域在表項(xiàng)建立時根據(jù)刷新頻率置初值,定時器任務(wù)每隔一段時間就把各表項(xiàng)的 ttl 域減一,如果該域?yàn)樨?fù)值,則把 該表項(xiàng)刪除。 函數(shù) arp_init()負(fù)責(zé) ARP 協(xié)議的初始化,包括任務(wù)的創(chuàng)建、數(shù)據(jù)結(jié)構(gòu)的初始化等工作。 函數(shù)關(guān)系圖 ARP 協(xié)議的函數(shù)關(guān)系如圖 3 4 所示,其中虛線框內(nèi)為 ARP 協(xié)議實(shí)現(xiàn)。其中,數(shù)據(jù)報(bào)的尋徑采用靜態(tài)路由表 的方式實(shí)現(xiàn)。通過在數(shù)據(jù)報(bào)前添加 IP 協(xié)議頭,使每個數(shù)據(jù)報(bào)具有尋址能力。得到 IP 包后,檢驗(yàn) IP 頭部的版本、目的地址、校驗(yàn)和正確否,解析出協(xié)議類型字段,由此交給相應(yīng)的高層協(xié)議處理。不符合要求,則將此包丟棄。所以限制 MCU 發(fā)送和接收數(shù)據(jù)包的方式以避免分段傳輸,從而減少程序復(fù)雜度。但I(xiàn)P 的分片和重組所需的開銷比較大 ,而現(xiàn)有的網(wǎng)絡(luò)一般都支持以太網(wǎng) ,并且在此次應(yīng)用的 16 8/16 位嵌入式系統(tǒng)中 ,傳輸?shù)臄?shù)據(jù)都是一些數(shù)據(jù)量比較小的狀態(tài)信息或者控制信息。如果極少數(shù)數(shù)據(jù)實(shí)在比較大 ,可以在程序中進(jìn)行處理 ,分批次進(jìn)行傳輸。而 IP 數(shù)據(jù)包的 路由功能則交給默認(rèn)網(wǎng)關(guān)執(zhí)行 。在 ip_send()函數(shù)中,調(diào)用ip_route()函數(shù),查找靜態(tài)路由表,如果找到相應(yīng)的路由,則調(diào)用網(wǎng)絡(luò)接口層發(fā)送函數(shù)ni_send()實(shí)現(xiàn)發(fā)送;如果沒有找到相應(yīng)的路由,則調(diào)用 ICMP 協(xié)議實(shí)現(xiàn)中的函數(shù) icmp_send()發(fā)送 icmp 出錯報(bào)文。在 ip_recv()中,檢查數(shù)據(jù)報(bào)的目的 IP 地址,如果不是自己的 IP 地址,則調(diào)用 ip_route(),為其路由;如果為自己的 IP 地址,則再檢查該數(shù)據(jù)報(bào)的類型,如果是 TCP 報(bào)文,則調(diào)用上層的 TCP 數(shù)據(jù)接收函數(shù) tcp recv();如果是 UDP 報(bào)文,則調(diào)用上層的 UDP 數(shù)據(jù)接收函數(shù) udp_recv();如果是 ICMP 報(bào)文,則調(diào)用 ICMP 協(xié)議實(shí)現(xiàn)中的接收處理函數(shù) icmp_proc()。 ICMP協(xié)議實(shí)現(xiàn) 功能概述 ICMP 協(xié)議是 IP 網(wǎng)絡(luò)內(nèi)為控制、測試、管理功能而設(shè)計(jì)的協(xié)議。為了了解設(shè)備是否可達(dá) , Simplified TCP/IP 協(xié)議棧中主要實(shí)現(xiàn)了回顯請求和應(yīng)答報(bào)文的功能。對于處于被動狀態(tài)設(shè)備而言 ,不需要主動發(fā)送回顯請求 ,只要能夠識別來自其他客戶的回顯請求并發(fā)送回顯應(yīng) 答就可以了。 ICMP 協(xié)議位于 IP 層,負(fù)責(zé)接收、解釋、發(fā)送 ICMP 報(bào)文。盡管與 IP 協(xié)議處于同一層次,但 ICMP 報(bào)文卻是封裝在 IP 數(shù)據(jù)包的數(shù)據(jù)段部分進(jìn)行傳送的,具體如圖 3 6 所示。其中,icmp_proc()函數(shù)負(fù)責(zé)解釋、處理收到的 ICMP 報(bào)文; icmp_send()函數(shù)負(fù)責(zé)構(gòu)成 ICMP 報(bào)文并發(fā)送該報(bào)文。 函數(shù)關(guān)系圖 ICMP 協(xié)議的函數(shù)關(guān)系圖如圖 37 所示,虛線框內(nèi)為 ICMP 協(xié)議實(shí)現(xiàn)。在上層有數(shù)據(jù)傳輸要求時,首先建立 TCP 的連接,建立連接時通過有限自動機(jī)以三次握手法完成。在連接建立好之后,當(dāng)上層有數(shù)據(jù)需要發(fā)送時,調(diào)用 TCP 層的數(shù)據(jù)發(fā)送函數(shù)tcp_send(),再 調(diào)用下層的 ip_send()函數(shù)實(shí)現(xiàn)發(fā)送。用于建立連接的握手包也由接收函數(shù) tcp_recv()接收,當(dāng) tcp_recv()接收到建立連接的握手包后,調(diào)用有限狀態(tài)自動機(jī)函數(shù) tcp_fsm()轉(zhuǎn)動有限自動機(jī),并發(fā)相應(yīng)的確認(rèn)包;在有限狀態(tài)自動機(jī)的狀態(tài)達(dá)到 OPEN 后,如果收到用戶的數(shù)據(jù),則調(diào)用函數(shù) estab()放入用戶接收任務(wù) user_rec_task()的接收緩沖區(qū),然后喚醒該任務(wù)。在本設(shè)計(jì)中,有一個重傳隊(duì)列,當(dāng)發(fā)送了一個 TCP 數(shù)據(jù)段后,就把該數(shù)據(jù)段放入重傳隊(duì)列中,同時設(shè)置一個重傳定時事件放入定時事件鏈 TimerEvent_List 上。如果重傳的規(guī)定時間到達(dá)仍未收到確認(rèn),則 timer_task()將會根據(jù)定時事件鏈上的定時事件從重傳隊(duì)列上取下需重傳的數(shù)據(jù)發(fā)送,并再次放入重傳隊(duì)列,重新設(shè)置重傳定時時間;如果在規(guī)定 時間內(nèi),收到確認(rèn),則 TCP 數(shù)據(jù)接收函數(shù)將把該數(shù)據(jù)從重傳隊(duì)列中取出并把定時事件鏈上的定時事件去掉。tcp_init()應(yīng)用初始化時被函數(shù) _init()調(diào)用。 IP 協(xié)議實(shí)現(xiàn) 執(zhí)行 icmp_proc()函數(shù) 執(zhí)行 icmp_send()函數(shù) 18 用戶數(shù)據(jù) 用戶數(shù)據(jù) OPEN 狀態(tài) 非 OPEN 狀態(tài) TCP 數(shù)據(jù)報(bào)文 IP 數(shù)據(jù)報(bào)文 圖 38 TCP 協(xié)議主要函數(shù)關(guān)系圖 UDP協(xié)議實(shí)現(xiàn) 功能概述 UDP 協(xié)議建立在 IP 協(xié)議之上,同 IP 協(xié)議一樣提供無連接的數(shù)據(jù)報(bào)傳輸。 從理論上看 ,TCP 的可靠性是以許多復(fù)雜措施及由此而增加的開銷為代價換來的。由于 UDP 沒有可靠性的保證機(jī)制 ,因此能全速地進(jìn)行數(shù)據(jù)通信 (即充分發(fā)揮物理通信設(shè)備的速度 )。 UDP 的不可靠傳輸?shù)娜毕?,可以在使用 UDP 時 ,在應(yīng)用層增加提高 UDP 可靠性的代碼來彌補(bǔ)。 當(dāng)下層接收到數(shù)據(jù)時,調(diào)用本層的數(shù)據(jù)接收函數(shù) udp_recv(),在 udp_recv()中通知用戶接收任務(wù)有 UDP 數(shù)據(jù)報(bào)到達(dá)。udp_init()在應(yīng)用初始化時被 _ init()調(diào)用。 estab ()函數(shù) 有限狀態(tài)自動機(jī) tcp_fsm() 接收函數(shù) tcp_recv() 發(fā)送 ack 函數(shù) tcp_ack() 檢查 ack 域函數(shù) ackcheck() 發(fā)送函數(shù) tcp_send() 窗口探測函數(shù) winprobe() 19 用戶數(shù)據(jù) 用戶數(shù) 據(jù) UDP 數(shù)據(jù)報(bào)文 UDP 數(shù)據(jù)報(bào)文 圖 39 UDP 函數(shù)關(guān)系圖 udp_recv()函數(shù) udp_send()函數(shù) 20 4 嵌入式 TCP/IP 協(xié)議研究設(shè)計(jì) 地址解析協(xié)議 ARP 詳細(xì)設(shè)計(jì) 概述 ARP 效率 :在每臺使用 ARP 的主機(jī)中,都保留了一個專用的內(nèi)存區(qū) (即高速緩存 ),存放最近獲得的網(wǎng)間網(wǎng) 物理地址編聯(lián)。欲發(fā)送報(bào)文 時,首先去緩存中查相應(yīng)編聯(lián),若找不到,再利用 ARP進(jìn)行地址解析。 ARP 改進(jìn):為進(jìn)一步提高效率, ARP 還采取了以下措施: ARP 請求報(bào)文中放入信源機(jī)的網(wǎng)間網(wǎng)地址 物理地址編聯(lián),以防止信源機(jī)緊接著為解析信源機(jī)的物理地址而再來一次動態(tài)解析; ,網(wǎng)上所有主機(jī)都可以將它存入自己的高速緩存。 函數(shù)詳細(xì)設(shè)計(jì) (1) arp_init(接口函數(shù),可被上層調(diào)用 ) 實(shí)現(xiàn)對 ARP 數(shù)據(jù)報(bào)文結(jié)構(gòu)的初始化及對 ARP 映射表的初始化。 設(shè)計(jì)流程如圖 42 所示。I++) arptable[I].item_state=FREE; 結(jié) 束 22 圖 42 發(fā)送 ARP 請求報(bào)文流程圖 (3) 發(fā)送 ARP 應(yīng)答報(bào)文,設(shè)計(jì)流程如圖 43 所示 (定義一局部變量 struct arpkt arp;定義一中間變量 unsigned char * data 用于交換數(shù)據(jù)時轉(zhuǎn)移數(shù)據(jù) ) 。若為請求報(bào)文,發(fā)回響應(yīng);若為響應(yīng)報(bào)文,將等待隊(duì)列 上等待解析該物理地址的 IP 數(shù)據(jù)報(bào)依次發(fā)送出去。 開 始 給定參數(shù),為存放 ARP 報(bào)文中請一緩沖區(qū) 根據(jù)參數(shù)填寫 ARP 報(bào)文 發(fā)送 ARP 請求報(bào)文 ne_transmit(dev,(unsigned char *)arp); 設(shè)置定時器事件 return (SUCCEED); 開 始 交換源和目的域?yàn)榘l(fā)送響應(yīng)做準(zhǔn)備 發(fā)送 ARP 應(yīng)答報(bào)文 ne_transmit(dev,(unsigned char *)arp); 返回成功信息 :return (SUCCEED); 23 圖 44 ARP 報(bào)文處理算法流程 (5) cacheupdate 更新 ARP 映射表的相應(yīng)表項(xiàng)。 (7) pend_ipkt(接口函數(shù),被上層調(diào)用 ) 把為解析信宿物理地址的 IP 數(shù)據(jù)報(bào)掛到相應(yīng)的等待隊(duì)列中。 24 網(wǎng)際協(xié)議 IP 協(xié)議詳細(xì)設(shè)計(jì) 概述 協(xié)議標(biāo)準(zhǔn)規(guī)定,任何實(shí)現(xiàn) IP 的程序都必須能夠?qū)?shù)據(jù)報(bào)分片及重組。但是嵌入式系統(tǒng)有可能接收到分片的數(shù)據(jù)報(bào),因此嵌入式 TCP/IP 必須具有負(fù)責(zé)重組的程序代碼,否則,它就不能與互聯(lián)網(wǎng)上所有的計(jì)算機(jī)通信。 重組數(shù)據(jù)報(bào)時, IP 協(xié)議在能夠成功地重組完整的數(shù)據(jù)報(bào) 之前,不斷積累輸入的數(shù)據(jù)報(bào)片。由于 IP 并不保證順序投遞,因此要求 IP 能夠接收順序混亂的或延遲的數(shù)據(jù)報(bào)片。 若找到相應(yīng)路由表項(xiàng),則按照路由表項(xiàng)所示調(diào)用函數(shù) ip_send();若沒有找到相應(yīng)路由表項(xiàng),則丟失該報(bào)文。 找到路由 沒有該路由 圖 46 IP 路由算法流程圖 0 1 2 3 分片指針 0 分片指針 1 分片指針 9 Buffer Buffer Buffer Buffer 開 始 取輸入數(shù)據(jù)報(bào)文的目的 IP 地址 以該 IP 地址為索引查找路由表 是否有該路由 丟棄該報(bào)文 出錯返回 得到該路由的下一個網(wǎng)關(guān) IP地址及發(fā)送的網(wǎng)絡(luò)接口 調(diào)用函數(shù) ip_send () 25 (2) ip_recv(unsigned char*ipp, unsigned short length); 參數(shù)說明 : ipp??接收的 1P 數(shù)據(jù)報(bào)首指針; length??接收的 IP 數(shù)據(jù)報(bào)長度; 函數(shù)功能說明 :首先調(diào)用函數(shù) ip_hdrcheck()檢查輸入 IP 數(shù)據(jù)報(bào)的頭標(biāo)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1