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

正文內(nèi)容

基于avr單片機(jī)的網(wǎng)絡(luò)智能家居系統(tǒng)-資料下載頁

2025-06-22 00:46本頁面
  

【正文】 是由底層的IP協(xié)議和TCP協(xié)議組成的。TCP/IP協(xié)議的開發(fā)工作始于70年代,是用于互聯(lián)網(wǎng)的第一套協(xié)議。TCP/IP協(xié)議的開發(fā)研制人員將Internet分為五個層次,以便于理解,它也稱為互聯(lián)網(wǎng)分層模型或互聯(lián)網(wǎng)分層參考模型,如下圖: TCP/IP協(xié)議層次圖1. 物理層:對應(yīng)于網(wǎng)絡(luò)的基本硬件,這也是Internet物理構(gòu)成,即我們可以看得見的硬件設(shè)備,如PC機(jī)、互連網(wǎng)服務(wù)器、網(wǎng)絡(luò)設(shè)備等,必須對這些硬件設(shè)備的電氣特性作一個規(guī)范,使這些設(shè)備都能夠互相連接并兼容使用。2. 網(wǎng)絡(luò)接口層:模型的基層是網(wǎng)絡(luò)接口層。負(fù)責(zé)數(shù)據(jù)幀的發(fā)送和接收,幀是獨立的網(wǎng)絡(luò)信息傳輸單元。網(wǎng)絡(luò)接口層將幀放在網(wǎng)上,或從網(wǎng)上把幀取下來。3. 互聯(lián)網(wǎng)層:互聯(lián)協(xié)議將數(shù)據(jù)包封裝成internet數(shù)據(jù)報,并運(yùn)行必要的路由算法。這里有四個互聯(lián)協(xié)議:1. 網(wǎng)際協(xié)議IP:負(fù)責(zé)在主機(jī)和網(wǎng)絡(luò)之間尋址和路由數(shù)據(jù)包。2. 地址解析協(xié)議ARP:獲得同一物理網(wǎng)絡(luò)中的硬件主機(jī)地址。3. 網(wǎng)際控制消息協(xié)議ICMP:發(fā)送消息,并報告有關(guān)數(shù)據(jù)包的傳送錯誤。4. 互聯(lián)組管理協(xié)議IGMP:被IP主機(jī)拿來向本地多路廣播路由器報告主機(jī)組成員。4. 傳輸層:傳輸協(xié)議在計算機(jī)之間提供通信會話。傳輸協(xié)議的選擇根據(jù)數(shù)據(jù)傳輸方式而定。 兩個傳輸協(xié)議: 5. 傳輸控制協(xié)議TCP:為應(yīng)用程序提供可靠的通信連接。適合于一次傳輸大批數(shù)據(jù)的情況。并適用于要求得到響應(yīng)的應(yīng)用程序。 6. 用戶數(shù)據(jù)報協(xié)議UDP:提供了無連接通信,且不對傳送包進(jìn)行可靠的保證。適合于一次傳輸小量數(shù)據(jù),可靠性則由應(yīng)用層來負(fù)責(zé)。7. 應(yīng)用層:它定義了應(yīng)用程序使用互聯(lián)網(wǎng)的規(guī)程。 網(wǎng)絡(luò)接口層設(shè)計由于ENC28J60芯片本身就是提供了物理層,所以用戶可以從網(wǎng)絡(luò)接口層開始設(shè)計應(yīng)用程序。如上文所述,ENC28J60提供了MAC幀的收發(fā)功能,上層接口在調(diào)用時必須遵照ENC28J60的規(guī)范來填充MAC幀。ENC28J60的MAC幀規(guī)范如下圖: ENC28J60的MAC幀規(guī)范圖符合IEEE 標(biāo)準(zhǔn)的以太網(wǎng)幀的長度一般介于64 字節(jié)與1518 字節(jié)之間。它們由五個或六個不同的字段組成,這些字段分別是:目標(biāo)MAC 地址、源MAC 地址、類型/ 長度字段、數(shù)據(jù)有效負(fù)載、可選的填充字段和循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)字段。另外,當(dāng)通過以太網(wǎng)介質(zhì)發(fā)送數(shù)據(jù)包時,一個7 字節(jié)的前導(dǎo)字段和一個字節(jié)的幀起始定界符將被附加到以太網(wǎng)數(shù)據(jù)包的開頭。前導(dǎo)字段/ 幀起始定界符:當(dāng)使用ENC28J60 發(fā)送數(shù)據(jù)時,將自動生成前導(dǎo)字段和幀起始定界符字節(jié);當(dāng)使用ENC28J60 接收數(shù)據(jù)時,將自動從數(shù)據(jù)包剝離前導(dǎo)字段和幀起始定界符字節(jié)。主控制器無需介入對它們的處理。通常,主控制器也無需介入對填充和CRC 的處理,因為ENC28J6 也將在發(fā)送數(shù)據(jù)時自動生成它們,在接收數(shù)據(jù)時對它們進(jìn)行自動校驗。然而,當(dāng)數(shù)據(jù)包到達(dá)時,填充和CRC 字段將被寫入接收緩沖器,所以必要時主控制器可以對它們進(jìn)行評估。目標(biāo)地址:目標(biāo)地址字段是一個六字節(jié)的字段,裝有數(shù)據(jù)包發(fā)往的設(shè)備的MAC 地址。如果MAC 地址中第一個字節(jié)的最低有效位為1,則該地址是組播目標(biāo)地址。例如,01000000F000 和33456789ABCD 是組播地址,而00000000F000 和32456789ABCD 不是組播地址。帶有組播目標(biāo)地址的數(shù)據(jù)包將被送達(dá)一組選定的以太網(wǎng)節(jié)點。如果目標(biāo)地址字段是保留的組播地址FFFFFFFFFFFF,則該數(shù)據(jù)包是廣播數(shù)據(jù)包,它將被發(fā)送給共享該網(wǎng)絡(luò)的每一個節(jié)點。如果MAC 地址中第一個字節(jié)的最低有效位為0,則該地址是單播地址,數(shù)據(jù)包將僅供具有該地址的節(jié)點使用。ENC28J60 具有一個接收過濾器,它可以用來丟棄或接收具有組播、廣播和/ 或單播目標(biāo)地址的數(shù)據(jù)包。發(fā)送數(shù)據(jù)包時,主控制器負(fù)責(zé)將所需的目標(biāo)地址寫入發(fā)送緩沖器。源地址:源地址字段是一個六字節(jié)的字段,裝有創(chuàng)建該以太網(wǎng)數(shù)據(jù)包的節(jié)點的MAC 地址。ENC28J60 的用戶必須為每個控制器生成一個惟一的MAC 地址。MAC地址由兩個部分組成。前三個字節(jié)稱為組織惟一標(biāo)識符(Organizationally Unique Identifier,OUI)。OUI由IEEE 分配。后三個字節(jié)是由購買該OUI 的公司定義的地址字節(jié)。發(fā)送數(shù)據(jù)包時,主控制器必須將分配的源MAC 地址寫入發(fā)送緩沖器。ENC28J60 將不會自動發(fā)送MAADR 寄存器的內(nèi)容,MAADR 寄存器供單播接收過濾器和單播WOL 過濾器使用。類型/長度:類型/ 長度字段是一個兩字節(jié)的字段,它定義其后的數(shù)據(jù)包屬于何種協(xié)議。另外,如果該字段被填充的數(shù)值小于等于05DCh (1500),則該字段將被視為一個長度字段,它指定數(shù)據(jù)字段中非填充數(shù)據(jù)的長度。實現(xiàn)專用網(wǎng)絡(luò)的用戶可以選擇將此字段用作長度字段,而使用諸如Internet 協(xié)議(Internet Protocol,IP)或地址解析協(xié)議(Address Resolution Protocol, ARP)的應(yīng)用在發(fā)送數(shù)據(jù)包時,需將此字段編程為由協(xié)議規(guī)范所定義的相應(yīng)類型。數(shù)據(jù):數(shù)據(jù)字段的長度可在0 與1500 字節(jié)之間變化。超過這個范圍的數(shù)據(jù)包是違反以太網(wǎng)標(biāo)準(zhǔn)的,它將被大多數(shù)以太網(wǎng)節(jié)點丟棄。然而,當(dāng)巨大幀使能位被置1( = 1)時,ENC28J60 能夠發(fā)送和接收超大規(guī)格的數(shù)據(jù)包。填充:這一部分由芯片本身生成,用戶可以不必理會。CRC:CRC 字段是一個四字節(jié)字段,它包含一個行業(yè)標(biāo)準(zhǔn)的32 位CRC 值,該CRC 值是通過對目標(biāo)、源、類型、數(shù)據(jù)和填充字段中的數(shù)據(jù)進(jìn)行計算得出的。當(dāng)接收數(shù)據(jù)包時,ENC28J60 將檢查每個傳入數(shù)據(jù)包的CRC。 位置1,將自動丟棄具有無效CRC 的數(shù)據(jù)。如果CRCEN 清零并且該數(shù)據(jù)包符合除CRC 外所有其他的接收過濾條件,則該數(shù)據(jù)包將被寫入接收緩沖器,主控制器將通過讀取接收狀態(tài)向量來確定該CRC 是否有效。當(dāng)發(fā)送數(shù)據(jù)包時, ENC28J60 將自動生成一個有效的CRC 并發(fā)送它。否則,必須由主控制器生成CRC,并將它放在發(fā)送緩沖器中。鑒于計算CRC 的復(fù)雜性,強(qiáng)烈建議對PADCFG 位進(jìn)行配置從而使ENC28J60 自動生成CRC 字段。MAC幀的編程接口如下://初始化ENC28J60extern void ENC28J60_Init(unsigned char *macAddr)。//發(fā)包extern void ENC28J60_PacketSend(unsigned char *packet, unsigned short len)。//收包extern unsigned short ENC28J60_PacketReceive(unsigned char *packet, unsigned short maxLen)。要在網(wǎng)絡(luò)上通信,主機(jī)就必須知道對方主機(jī)的硬件地址。地址解析就是將主機(jī)IP地址映射為硬件地址的過程。地址解析協(xié)議ARP用于獲得在同一物理網(wǎng)絡(luò)中的主機(jī)的硬件地址。解釋本地IP地址主機(jī)IP地址解析為硬件地址: 1) 當(dāng)一臺主機(jī)要與別的主機(jī)通信時,初始化ARP請求。當(dāng)該IP斷定IP地址是本地時,源主機(jī)在ARP緩存中查找目標(biāo)主機(jī)的硬件地址。2) 要是找不到映射的話,ARP建立一個請求,源主機(jī)IP地址和硬件地址會被包括在請求中,該請求通過廣播,使所有本地主機(jī)均能接收并處理。3) 本地網(wǎng)上的每個主機(jī)都收到廣播并尋找相符的IP地址。4) 當(dāng)目標(biāo)主機(jī)斷定請求中的IP地址與自己的相符時,直接發(fā)送一個ARP答復(fù),將自己的硬件地址傳給源主機(jī)。以源主機(jī)的IP地址和硬件地址更新它的ARP緩存。源主機(jī)收到回答后便建立起了通信。解析遠(yuǎn)程IP地址 不同網(wǎng)絡(luò)中的主機(jī)互相通信,ARP廣播的是源主機(jī)的缺省網(wǎng)關(guān)。目標(biāo)IP地址是一個遠(yuǎn)程網(wǎng)絡(luò)主機(jī)的話,ARP將廣播一個路由器的地址。1) 通信請求初始化時,得知目標(biāo)IP地址為遠(yuǎn)程地址。源主機(jī)在本地路由表中查找,若無,源主機(jī)認(rèn)為是缺省網(wǎng)關(guān)的IP地址。在ARP緩存中查找符合該網(wǎng)關(guān)記錄的IP地址(硬件地址)。2) 若沒找到該網(wǎng)關(guān)的記錄,ARP將廣播請求網(wǎng)關(guān)地址而不是目標(biāo)主機(jī)的地址。路由器用自己的硬件地址響應(yīng)源主機(jī)的ARP請求。源主機(jī)則將數(shù)據(jù)包送到路由器以傳送到目標(biāo)主機(jī)的網(wǎng)絡(luò),最終達(dá)到目標(biāo)主機(jī)。3) 在路由器上,由IP決定目標(biāo)IP地址是本地還是遠(yuǎn)程。如果是本地,路由器用ARP(緩存或廣播)獲得硬件地址。如果是遠(yuǎn)程,路由器在其路由表中查找該網(wǎng)關(guān),然后運(yùn)用ARP獲得此網(wǎng)關(guān)的硬件地址。數(shù)據(jù)包被直接發(fā)送到下一個目標(biāo)主機(jī)。4) 目標(biāo)主機(jī)收到請求后,形成ICMP響應(yīng)。因源主機(jī)在遠(yuǎn)程網(wǎng)上,將在本地路由表中查找源主機(jī)網(wǎng)的網(wǎng)關(guān)。找到網(wǎng)關(guān)后,ARP即獲取它的硬件地址。5) 如果此網(wǎng)關(guān)的硬件地址不在ARP緩存中,通過ARP廣播獲得。一旦它獲得硬件地址,ICMP響應(yīng)就送到路由器上,然后傳到源主機(jī)。ARP緩存 為減少廣播量,ARP在緩存中保存地址映射以備用。ARP緩存保存有動態(tài)項和靜態(tài)項。動態(tài)項是自動添加和刪除的,靜態(tài)項則保留在CACHE中直到單片機(jī)重新啟動。ARP緩存總是為本地子網(wǎng)保留硬件廣播地址(0xffffffffffffh)作為一個永久項。此項使主機(jī)能夠接受ARP廣播。當(dāng)查看緩存時,該項不會顯示。每條ARP緩存記錄的生命周期為255,每個運(yùn)行周期自動減少生存周期1。緩存容量滿時,刪除最老的記錄。加入靜態(tài)(永久)記錄 通過添加靜態(tài)ARP項可減少ARP請求訪問主機(jī)的次數(shù)。 ARP包的結(jié)構(gòu) ARP結(jié)構(gòu)的字段如下: 硬件類型使用的硬件(網(wǎng)絡(luò)訪問層)類型。 協(xié)議類型解析過程中的協(xié)議使用以太類型的值。 硬件地址長度硬件地址的字節(jié)長度,對于以太網(wǎng)和令牌環(huán)來說,其長度為6字節(jié)。 協(xié)議地址長度協(xié)議地址字節(jié)的長度,IP的長度是4字節(jié)。 操作號指定當(dāng)前執(zhí)行操作的字段。 發(fā)送者的硬件地址發(fā)送者的硬件地址。 發(fā)送者的協(xié)議地址發(fā)送者的協(xié)議地址。 目的站硬件地址目標(biāo)者的硬件地址。 目的站協(xié)議地址目標(biāo)者的協(xié)議地址。ARP層的編程接口如下://初始化ARPextern void ARP_Init(void)。//ARP請求extern void ARP_Request(unsigned char *dstIpAddr)。//處理ARP請求extern void ARP_Process(void)。//ARP響應(yīng)extern void ARP_Reply(void)。//搜索ARP表,成功則返回MAC地址,pos返回該項在ARP表中的索引,失敗返回NULLextern unsigned char *ARP_FindArpTable(unsigned char *ip, unsigned char *pos)。//更新ARP表生存周期extern void ARP_UpdateArpTable(void)?;ヂ?lián)網(wǎng)層還包括IP協(xié)議的規(guī)范,之后上層所有協(xié)議的收發(fā)實質(zhì)上都是調(diào)用IP包的收發(fā)方法。IP是一個無連接的協(xié)議,主要就是負(fù)責(zé)在主機(jī)間尋址并為數(shù)據(jù)包設(shè)定路由,在交換數(shù)據(jù)前它并不建立會話。因為它不保證正確傳遞,另一方面,數(shù)據(jù)在被收到時,IP不需要收到確認(rèn),所以它是不可靠的。 有一些字段,在當(dāng)數(shù)據(jù)從傳輸層傳下來時,會被附加在數(shù)據(jù)包中,我們來看一下這些字段: 源IP地址:用IP地址確定數(shù)據(jù)報發(fā)送者。 目標(biāo)IP地址:用IP地址確定數(shù)據(jù)報目標(biāo)。 協(xié)議:告知目的機(jī)的IP是否將包傳給TCP或UDP。 檢查和:一個簡單的數(shù)學(xué)計算,用來證實收到的包的完整性。 TTL生存有效時間:指定一個數(shù)據(jù)報被丟棄之前,在網(wǎng)絡(luò)上能停留多少時間(以秒計)。它避免了包在網(wǎng)絡(luò)中無休止循環(huán)。路由器會根據(jù)數(shù)據(jù)在路由器中駐留的時間來遞減TTL。其中數(shù)據(jù)報通過一次路由器,TTL至少減少一秒。 根據(jù)我們前面提到關(guān)于ARP的知識,如果IP地址目標(biāo)為本地地址時,IP將數(shù)據(jù)包直接傳給那個主機(jī);如果目標(biāo)地址為遠(yuǎn)程地址的話,IP在本地的路由表中查找遠(yuǎn)程主機(jī)的路由(看來好象我們平時撥114一樣)。如果找到一個路由,IP用它傳送數(shù)據(jù)包。如果沒找到呢,就會將數(shù)據(jù)包發(fā)送到源主機(jī)的缺省網(wǎng)關(guān),也稱之為路由器。 這樣當(dāng)路由器收到一個包后,該包向上傳給IP: 1) 如果交通阻塞,包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會被拋棄。 2) 如果對于下一網(wǎng)絡(luò)來說包太大的話,IP會將它分割成若干個小包。 3) 如果包被分解,IP為每個新包制造一個新頭,其中包括:一個標(biāo)志,用來顯示其它小包在其后;一個小包ID,用來確定所有小包是一起的;一個小包偏移,用來告訴接收主機(jī)怎么重新組合它們。 4) IP計算一個新的檢驗和。 5) IP獲取一個路由的目標(biāo)硬件地址。 6) IP轉(zhuǎn)發(fā)包。 在下一主機(jī),包被發(fā)送到TCP或UDP。每個路由器都要重復(fù)該過程。直到包到達(dá)最終目的地。當(dāng)包到達(dá)最終目的地后,IP將小包組裝成原來的包。IP包的編程接口如下://IP層校驗和extern unsigned short IP_Chksum(unsigned char *buf, unsigned short len, unsigned char pro)。//填充IP包頭extern void IP_FillIpHead(unsigned char *srcIp, unsigned char *dstIp, unsigned short packetLen, unsigned char pro)。首先說明幾個問題:1) 由于AVR單片機(jī)的存儲空間比較小,所以不適合把整個TCP/IP協(xié)議棧全部放入單片機(jī)。即便是ARM處理器的系統(tǒng),也需要酌情處理,一般也不會把完整的TCP/IP棧全部放入。所以本系統(tǒng)中,只是用最簡練的方法收編了UDP數(shù)據(jù)報協(xié)議。2) 本系統(tǒng)中也可以很方便地移植一個HTTP服務(wù)器,用來做簡單的Web服
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1