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

正文內(nèi)容

畢業(yè)設(shè)計-嵌入式tcpip協(xié)議研究(文件)

2024-12-27 18:58 上一頁面

下一頁面
 

【正文】 層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這種通信又叫端到端通信。還要根據(jù)需要發(fā)出和接收 ICMP (Inter 控制報文協(xié)議 )差錯和 控制報文。數(shù)據(jù)在不同的層添加了不同的信息,有不同的稱呼,如 TCP 傳遞給 IP 的數(shù)據(jù)單元稱作 TCP報文段或 TCP 段 (TCP segment ), IP 傳遞給網(wǎng)絡(luò)接口層的叫 IP 數(shù)據(jù)報 (IP datagram ),通過以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀 ( Frame )。 TCP/IP 是一個網(wǎng)絡(luò)協(xié)議族,協(xié)議按上面所述不同的網(wǎng)絡(luò)層次進(jìn)行開發(fā),每一層分別負(fù)責(zé)不同的通信功能,相應(yīng)的有不同的協(xié)議。但由于網(wǎng)絡(luò)協(xié)議的復(fù)雜性與嵌入式系統(tǒng)的 MCU 相對簡單之間的矛盾,極大的制約了嵌入式系統(tǒng)實現(xiàn)網(wǎng)絡(luò)化的進(jìn)程。嵌入式系統(tǒng)要求應(yīng)用簡單,以滿足應(yīng)用為目的,并不要求功能十分齊全。對此我們先要了解 IP 和物理地址兩種編址形式 : IP 地址 :互聯(lián)網(wǎng)上的每個接口必須有一個唯一的 Inter 地址 (也稱 IP 地址 ), IP 地址長32bit。以太網(wǎng)中所說的目的地址和源地址都是指物理地址。 0 8 16 24 31 圖 2 4 ARP 的報文格式 硬件類型字段表示硬件地址的類型,它的值為 1 即表示以太網(wǎng)地址;協(xié)議類 型字段表示要映射的協(xié)議地址類型,如 0x0800 即表示 IP 地址;硬件地址長度和協(xié)議地址長度以字節(jié)為單位,對于以太網(wǎng)上的 IP 地址的 ARP 請求或應(yīng)答來說,它們的值分別為 6 和 4; 操作字段指出四種操作類型,它們是 ARP 請求 (值為 1)ARP 應(yīng)答 (值為 2 )、 RARP 請求 (值為3 )、 RARP 應(yīng)答 (值為 4),這個字段是必需的,因為 ARP 請求和應(yīng)答的幀類型字段是相同的。 根據(jù)我們前面提到關(guān)于 ARP 的知識,如果 IP 地址目標(biāo)為本地地址時, IP 將數(shù)據(jù)包直接傳給那個主機(jī);如果目標(biāo)地址為遠(yuǎn)程地址的話, IP 在本地的路由表中查找遠(yuǎn)程主機(jī)的路由。要是它降到 0 的話,包就會被拋棄。 (5)IP 獲取一個路由的目標(biāo)硬件地址。直到包到達(dá)最終目的地。盡管每個 ICMP報文有自己的格式,但它們都以相同的三個字段開始:一個 8 比特整數(shù)的報文類型 (TYP)字段用來標(biāo)識報文,一個 8 比特的代碼字段提供有關(guān)報文類型的進(jìn)一步信息,以及一個 16比特校驗和 (CHECKSUM)字段。二者都使用端口號作為送往主機(jī)的解碼地址。 圖 2 7 UDP 數(shù)據(jù)報的字段格式 端口號表示發(fā)送進(jìn)程和接收進(jìn)程。 UDP 的校驗和覆蓋它們的首部以及數(shù)據(jù)部分,回顧 IP 的校驗和只覆蓋首部。 TCP/IP 協(xié)議棧與 Socket APIs 一起以系統(tǒng)軟組件的形式提供給用戶,用戶使用 Sockets APIs 編寫應(yīng)用代碼,然后與該系統(tǒng)組件的代碼庫鏈接在一起。然后將封裝好的 TCP 報文段或 UDP 數(shù)據(jù)報交給 IP 協(xié)議模塊, IP 模塊在 TCP 報文段或 UDP 數(shù)據(jù)報上添加 IP 首部,并封裝 成 IP 數(shù)據(jù)包,然后根據(jù)路由表為 IP 數(shù)據(jù)包確定路由,如果找不到相應(yīng)路由,則向 ICMP 協(xié)議發(fā)送出錯報文,由 ICMP 協(xié)議模塊進(jìn)行處理;找到了路由則將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)接口層,網(wǎng)絡(luò)接口層判斷發(fā)送的數(shù)據(jù)是從以太網(wǎng)接口還是從異步串口發(fā)出,如果是從以太網(wǎng)接口發(fā)出,則要利用 ARP 協(xié)議找到目的 IP 地址對應(yīng)的物理地址,然后封裝成以太網(wǎng)幀,由網(wǎng)卡驅(qū)動程序?qū)⒁蕴W(wǎng)幀發(fā)送出去;如果是從串口發(fā)出,則直接利用下層的 PPP 協(xié)議將數(shù)據(jù)包封裝成 PPP 幀,然后由異步串口驅(qū)動程序?qū)?PPP 幀發(fā)送出去。一個可互聯(lián)的設(shè)備本質(zhì)上就比一個不可互聯(lián)的設(shè)備更有價值。 TCP/IP 最先是在 UNIX 系統(tǒng)里實現(xiàn)的,后來的 LINUX, DOS, WINDOWS 也實現(xiàn)了TCP/IP,隨后 TCP/IP 協(xié)議也被移植到其它嵌入式的處理器上,例如 8 位的 MCS51 單片機(jī)、AVR 單片機(jī), 16 位的 ARM, C166 以及 32 位的 MIPS,ARM 等芯片上。再加上本設(shè)計方案沒有采用操作系統(tǒng),所以不能夠直接移植 UNIX 上實現(xiàn)的 TCP/IP 協(xié)議源代碼。嵌入式系統(tǒng)應(yīng)用針對性非常強,只需要實現(xiàn)與需求相關(guān)的部分協(xié)議。 發(fā)送普通數(shù)據(jù)時,本層的 網(wǎng)絡(luò)接口層發(fā)送函數(shù) ni_send()負(fù)責(zé)接收上層協(xié)議產(chǎn)生的數(shù)據(jù),然后判斷發(fā)送的數(shù)據(jù)是從以太網(wǎng)接口發(fā)出還是從異步串口發(fā)出。 初始化函數(shù) ni_init()負(fù)責(zé)實現(xiàn)網(wǎng)絡(luò)接口層、 ARP 協(xié)議以及下層的物理設(shè)備驅(qū)動程序的初始化,包括任務(wù)的創(chuàng)建、數(shù)據(jù)結(jié)構(gòu)的初始化。 ARP 協(xié)議是某些網(wǎng)絡(luò)接口 (如以太 網(wǎng)和令牌環(huán)網(wǎng) )使用的特殊協(xié)議 ,ARP 的地址解析功能是為 IP 地址和數(shù)據(jù)鏈路層使用的硬件地址提供動態(tài)地址映射。它在內(nèi)存中是連續(xù)線性存儲的 ,查找速度快。鑒于這種情況 ,ARP協(xié)議中選擇對 ARP 應(yīng)答部分進(jìn)行實現(xiàn)。其中,有一個定時器任務(wù) timer_task()負(fù)責(zé)對 ARP 表項的更新工作。arp_init()被網(wǎng)絡(luò)接口層的初始化函數(shù) ni_init()調(diào)用。 IP 協(xié)議是 TCP/IP 的基礎(chǔ),為不同網(wǎng)絡(luò)的主機(jī)之間發(fā)送數(shù)據(jù)報的操作序列提供無連接服務(wù)。發(fā)送 IP 包時,將緩沖區(qū)內(nèi)的源地址與目的地址互換,設(shè)置校驗和,然后交給下層協(xié)議處理。 一般情況下 ,數(shù)據(jù)包要經(jīng)過不同的物理網(wǎng)絡(luò) ,則 IP 層必須支持?jǐn)?shù)據(jù)包的分片和重裝。因此可以裁減掉 IP 的分片和重組功能。 接收數(shù)據(jù)時,函數(shù) ip_recv()被下層的網(wǎng)絡(luò)接口層接收函 數(shù) ni_recv()調(diào)用以接收 IP 數(shù)據(jù)報。 ICMP 的報文類型很多 ,不同類型的報文由類型和代碼字段共同決定。為了能夠使用戶了解設(shè)備是否可達(dá) ,應(yīng)當(dāng)能夠?qū)?Ping 的回顯請求給予應(yīng)答。 、 ICMP 報文 IP 數(shù)據(jù)包 圖 3 6 ICMP 報文的封裝 ICMP 協(xié)議實現(xiàn)比較單一,由兩個函數(shù)組成 :icmp_proc()函數(shù)、 icmp_send()函數(shù)。 ICMP 報頭 ICMP 數(shù)據(jù) IP 數(shù)據(jù)段 IP 數(shù)據(jù)報頭 類 型 代 碼 檢 驗 和 數(shù) 據(jù) 段 17 ICMP 報文 ICMP 報文 圖 3 7 ICMP 協(xié)議函數(shù)關(guān)系圖 TCP協(xié)議實現(xiàn) 功能概述 為上層提供面向連接的數(shù)據(jù)傳輸服務(wù)。 數(shù)據(jù)的接收由 TCP 接收函數(shù) tcp_recv()與 TCP 連接建立好以后的處理函數(shù) estab()完成。與此同時,專門由一個定時器任務(wù) timer_task 負(fù)責(zé)管理該定時事件鏈。 函數(shù)關(guān)系圖 TCP 協(xié)議主要函數(shù)關(guān)系如圖 38 所示,虛線框內(nèi)為 TCP 協(xié)議實現(xiàn)。 TCP 提供面向鏈接的、可靠的服務(wù) ,而 UDP 是無面向鏈接的。 發(fā)送數(shù)據(jù)時,上層調(diào)用本層的數(shù)據(jù)發(fā)送函數(shù) udp_send(),在 udp_send 中再調(diào)用下層的ip_send()函數(shù)實現(xiàn)發(fā)送。 函數(shù)關(guān)系圖 UDP 協(xié)議的函數(shù)關(guān)系如圖 39 所示,虛線框中為 UDP 協(xié)議實現(xiàn)。實驗表明,由于多數(shù)網(wǎng)絡(luò)通訊都需要持續(xù)發(fā)送多個報文,所以高速緩存大大提高了 ARP 的效率。 設(shè)計流程如圖 41 所示: 21 圖 41 ARP 初始化流程圖 (2) arp_req(接口函數(shù),可被上層調(diào)用 ) 發(fā) ARP 請求報文,要求解析對方的物理地址 (不等待響應(yīng) )。 圖 43 發(fā)送 ARP 應(yīng)答報文流程圖 (4) arp_pro(接口函數(shù),被上層調(diào)用 ) 對輸入的 ARP 報文進(jìn)行分析,判斷是否為請求報文或者為應(yīng)答報文。 (6) cachelook(接口函數(shù),被上層調(diào)用 ) 對 ARP 映射表進(jìn)行查找,若找到相應(yīng)的表項,則返回該表項的代碼號,否則返回空指針。事實上,由于嵌入式系統(tǒng)生成的數(shù)據(jù)報足夠小,能夠直接通過網(wǎng)絡(luò)傳輸,因此,嵌入式系統(tǒng)并不需要將輸出數(shù)據(jù)報進(jìn)行分片。一旦重組成功, IP 將其送給上層協(xié)議,或者繼續(xù)路由。算法流程圖如圖 46 所示。若檢查未通過,則丟棄。 函數(shù)設(shè)計實現(xiàn) (1) ip_route(unsigned char*packet, unsigned short length, unsigned char source[4], unsigned char dest[4]) ; 參數(shù)說明 :packet??需路由的數(shù)據(jù)報首指針; length??需路由的數(shù)據(jù) 報長度; source??需路由的數(shù)據(jù)報源地址; dest??需路由的數(shù)據(jù)報的目的地址; 分片表 圖 45 數(shù)據(jù)報分片重組數(shù)據(jù)結(jié)構(gòu) 函數(shù)功能說明 :以輸入?yún)?shù)中的目的 IP 地址為索引,查找路由表。為了簡化代碼,提高效率,本設(shè)計不對輸出數(shù)據(jù)報進(jìn)行分片,只實現(xiàn)了對輸入數(shù)據(jù)報片的重組。 (8) arp_qsend 獲得物理地址后,將等待隊列鏈表中的 IP 數(shù) 據(jù)報發(fā)送出去。 算法設(shè)計流程如圖 44 所示。 開 始 以太網(wǎng)幀頭的初始化: copydata(,6); copydata(,6); =sizeof(arp)14; 硬件類型初始化 協(xié)議類型初始化 地址長度的初始化: =EADDR_LEN; =IPLEN; ARP 操作碼的初始化: =ARP_ REQUEST; 源硬件地址初始化; 源 IP 地址初始化; 目的硬件地址初始 化; 目的 IP 地址初始化; ARP 映射表的初始化: For(I=1; IArp_MaxItem。 ,令其主動廣播自己的地址編聯(lián),以免其它主機(jī)對它運行 ARP。一收到 ARP 應(yīng)答,主機(jī)就將信宿機(jī)的網(wǎng)間網(wǎng)地址和物理地址存入緩存。 函數(shù) udp_init()負(fù)責(zé) UDP 協(xié)議的初始化,包括任務(wù)的創(chuàng)建、數(shù)據(jù)結(jié)構(gòu)的初始化等工作。又因為 UDP 沒有點對點接入的要求 ,可以實現(xiàn) “一對多點 ”,“多對多點 ”的廣播和多點播發(fā)信息。相對 IP 協(xié)議而言,唯一增加的功能是提供協(xié)議端口以實現(xiàn)進(jìn)程間的通 信。 函數(shù) tcp_init()負(fù)責(zé) TCP 協(xié)議的初始化,包括任務(wù)的創(chuàng)建、數(shù)據(jù)結(jié)構(gòu)的初始化等工作。 由于 TCP 協(xié)議要求 發(fā)送每一個數(shù)據(jù)都必須收到確認(rèn)后才能肯定數(shù)據(jù)己正確發(fā)到目的地,如果在規(guī)定時間內(nèi)仍未收到確認(rèn),則要重發(fā)該數(shù)據(jù)。 TCP 有限狀態(tài)自動機(jī)由函數(shù) tcp_fsm()實現(xiàn)。 ICMP 報文格式如下 : 1 byte 1 byte 2 byte 2 byte 其中類型字段用來標(biāo)識報文;代碼字段提供有關(guān)報文類型的進(jìn)一步信息。 ICMP 報文主要有兩種功能 :報告出錯信息、傳送控制信息。該程序發(fā)送 ICMP 回顯請求報文給目的主機(jī) ,并等待 ICMP 回顯應(yīng)答。 初始化函數(shù) ip_init()負(fù)責(zé) IP 協(xié)議以及 ICMP 協(xié)議的初始化,完成如靜態(tài)路由表的安裝等工作,該函數(shù)在應(yīng)用初始化時被函數(shù) _init()調(diào)用。 發(fā)送數(shù)據(jù)時,上層的 TCP 發(fā)送函數(shù) tcp_send(),UDP 發(fā)送函數(shù) udp_send()以及同層的ICMP 協(xié)議中的 icmp_send()函數(shù)把所發(fā)數(shù)據(jù)交給 ip_send()函數(shù)。因此數(shù)據(jù)報都不會超過協(xié)議所限制的 1500 字節(jié)。 IP 包最大可以為 65KB,可以分段傳輸,而在嵌入式系統(tǒng)里根本無法容納如此大的數(shù)據(jù)包, 因此一般不支持分段傳輸。嵌入式系統(tǒng)只把 IP作為傳輸工具,進(jìn)行簡化以完成主要的操作。 圖 34 ARP 協(xié)議函數(shù)關(guān)系圖 IP協(xié)議實現(xiàn) 功能概述 IP 協(xié)議實現(xiàn)對無連接的 IP 數(shù)據(jù)包的尋徑、傳送。每當(dāng)收到一個 ARP 報文后,首先以該報文中的有用信息更新 ARP映射表中的表項。當(dāng)進(jìn)行以太網(wǎng)幀封裝時,如果不知道目的物理地址,則調(diào)用 arp_req()函數(shù)發(fā)出 ARP 請求報文; ARP 報文處理函數(shù) arp_proc()負(fù)責(zé)對輸入 arp 報文進(jìn)行處理,如果收到 ARP 請求報文,且請求解析的物理地址正是自己的物理地址,則調(diào)用函數(shù) arp_reply()發(fā)出 ARP 應(yīng)答報文;如果收到 ARP 應(yīng)答報文,則調(diào)用函數(shù) arp_send()把等候地址解
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1