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

正文內(nèi)容

基于dm9000a的tcp通信設(shè)計(jì)畢業(yè)論文-免費(fèi)閱讀

  

【正文】 (3)注冊(cè)成功后,在整個(gè)通訊中,通過(guò)設(shè)置不同的命令字實(shí)現(xiàn)發(fā)送應(yīng)答接收。 TCP協(xié)議的實(shí)現(xiàn)1. TCP協(xié)議輸入處理設(shè)計(jì) :開(kāi)始重新判斷是否 TCP? 獲取TCP首部信息套接字是否打開(kāi)?驗(yàn)證校驗(yàn)和?調(diào)用TCP套接字偵聽(tīng)事件報(bào)錯(cuò) 獲取TCP首部信息不處理理理報(bào)錯(cuò)返回1NYNNYY TCP協(xié)議的輸入流程首先要重新判斷接收到的是否是TCP數(shù)據(jù)報(bào),這樣做是為了再次確定數(shù)據(jù)報(bào)判斷的準(zhǔn)確,如果是,就獲取TCP的首部信息,否則報(bào)錯(cuò);然后判斷該TCP套接字是否打開(kāi)、并找到處理數(shù)據(jù)報(bào)要用到的SOCKET,進(jìn)一步驗(yàn)證檢驗(yàn)和的正確性,當(dāng)套接字未打開(kāi),就不做任何處理;當(dāng)檢驗(yàn)和也正確無(wú)誤,最后調(diào)用TCP套接字偵聽(tīng)事件,完成應(yīng)用層的處理??蛻舳耸盏椒?wù)器端確認(rèn)數(shù)據(jù)包后,再次向服務(wù)器端發(fā)送帶有數(shù)據(jù)的數(shù)據(jù)包,該數(shù)據(jù)包中的序列號(hào)為上一個(gè)回復(fù)數(shù)據(jù)包中的確認(rèn)號(hào)值,確認(rèn)號(hào)為建立連接第三步的數(shù)據(jù)包中的確認(rèn)號(hào)值;(2)確認(rèn)收到:為提高網(wǎng)絡(luò)傳送效率,接收端不一定在收到一個(gè)數(shù)據(jù)包后就立刻發(fā)送一個(gè)數(shù)據(jù)包回復(fù),而可以根據(jù)實(shí)際情況(如:緩沖區(qū)大小、報(bào)文段大小等),再發(fā)送確認(rèn)回復(fù)數(shù)據(jù)包。2. TCP 傳輸數(shù)據(jù)在 TCP 建立連接后,就可以開(kāi)始傳輸數(shù)據(jù)了,TCP 工作在全雙工模式,它可以同時(shí)進(jìn)行雙向數(shù)據(jù)傳輸。 TCP協(xié)議的通訊過(guò)程在TCP 通訊中主要有連接的建立、數(shù)據(jù)的傳輸、連接的關(guān)閉三個(gè)過(guò)程!每個(gè)過(guò)程完成不同的工作,而且序列號(hào)和確認(rèn)號(hào)在每個(gè)過(guò)程中的變化都是不同的。緊急指針域在控制標(biāo)志URG為1時(shí)有效,它所存儲(chǔ)的值,作為表示需要緊急數(shù)據(jù)的存儲(chǔ)單元來(lái)處理。確認(rèn)序號(hào)占四個(gè)字節(jié),是期望收到對(duì)方下次發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào),也就是期望收到的下一個(gè)報(bào)文段的首部中的序號(hào)。 TCP協(xié)議及其實(shí)現(xiàn) TCP協(xié)議幀數(shù)據(jù)格式 TCP協(xié)議提供的是面向連接服務(wù),是在不可靠的網(wǎng)絡(luò)服務(wù)上提供端到端的可靠字節(jié)流。由于系統(tǒng)很少主動(dòng)進(jìn)行網(wǎng)絡(luò)連接,因此,只實(shí)現(xiàn)ICMP協(xié)議的一部分即可;對(duì)接收到ping請(qǐng)求報(bào)能予應(yīng)答。 開(kāi)始ARP表中能找到MAC地址?是ICMP?是TCP?將IP包存入發(fā)送緩存區(qū)計(jì)算IP首部校驗(yàn)和要發(fā)送的數(shù)據(jù)將各類協(xié)議字段的值填入, 并加上要發(fā)送的數(shù)據(jù) 發(fā)送數(shù)據(jù)結(jié)束結(jié)束將IP包存入ICMP緩存區(qū)返回ARP緩存沒(méi)有準(zhǔn)備好報(bào)錯(cuò)NNNYYY IP協(xié)議輸出處理流程 ICMP協(xié)議及其實(shí)現(xiàn)由于IP協(xié)議提供的是不可靠的,無(wú)連接的分組傳輸,當(dāng)轉(zhuǎn)發(fā)分組出現(xiàn)異常情況時(shí),需要通知源站采取措施避免或糾正問(wèn)題。發(fā)送IP數(shù)據(jù)報(bào)的時(shí)候先得在ARP緩存中找到目的IP地址的硬件地址,如果沒(méi)有找到對(duì)應(yīng)的項(xiàng),就返回一個(gè)ARP緩存沒(méi)有準(zhǔn)備好的信息。當(dāng)確定是IP數(shù)據(jù)報(bào)時(shí),就把IP首部各字段記錄下來(lái),并計(jì)算有沒(méi)有可選項(xiàng),如果有可選字段將長(zhǎng)度記錄下來(lái),這個(gè)長(zhǎng)度在計(jì)算檢驗(yàn)和的時(shí)候要用到。主要參數(shù)如下:Ip_construct_cs()為校驗(yàn)函數(shù),負(fù)責(zé)計(jì)算IP協(xié)議頭檢查和。4個(gè)字節(jié)的32 bit值以下面的次序傳輸:首先是0~7 bit,其次8~15 bit,然后16~23 bit,最后是24~31 bit。然后將本地IP地址和物理地址以及目的IP地址和廣播物理地址寫入數(shù)據(jù)緩存中,組成ARP請(qǐng)求分組幀,廣播的發(fā)送出去。當(dāng)數(shù)據(jù)進(jìn)入ARP處理程序,首先再次判斷是否是ARP協(xié)議,這樣經(jīng)過(guò)兩次判斷,結(jié)果會(huì)更準(zhǔn)確。(2)假如ARP沒(méi)找到一個(gè)匹配的IP地址,它就會(huì)發(fā)送一份稱作ARP請(qǐng)求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個(gè)主機(jī),以太網(wǎng)上所有主機(jī)運(yùn)行的ARP進(jìn)程都收到ARP請(qǐng)求,這個(gè)過(guò)程稱作廣播。當(dāng)ARP請(qǐng)求包時(shí),目的端硬件地址域中存儲(chǔ)0;當(dāng)系統(tǒng)收到一份目的端為本機(jī)的ARP請(qǐng)求報(bào)文后,它就把硬件地址填進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送回去,ARP實(shí)現(xiàn)應(yīng)答[11]。例如,一個(gè)ARP請(qǐng)求分組詢問(wèn)協(xié)議地址(這里是IP地址)對(duì)應(yīng)的硬件地址(這里是以太網(wǎng)地址)。再重新檢測(cè)以太網(wǎng)網(wǎng)卡是否接收新的數(shù)據(jù),如此一直循環(huán)下去,實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送。:以太網(wǎng)首部IP首部TCP首部應(yīng)用數(shù)據(jù)IP首部TCP首部應(yīng)用數(shù)據(jù)以太網(wǎng)驅(qū)動(dòng)程序TCP首部應(yīng)用數(shù)據(jù)APPL用戶數(shù)據(jù)用戶數(shù)據(jù)應(yīng)用程序TCPIP 數(shù)據(jù)報(bào)的封裝 主程序流程 當(dāng)以太網(wǎng)網(wǎng)卡接收到數(shù)據(jù)的時(shí)候,這些數(shù)據(jù)都是經(jīng)過(guò)了哪些協(xié)議?應(yīng)該做怎樣的處理才能被正確的接收呢?應(yīng)該如何編程實(shí)現(xiàn)呢?,展示了本課題設(shè)計(jì)的總體思想。 ,主要為源端口和目的端口的應(yīng)用程序提供端到端的通信。通信的雙方在相同層之間進(jìn)行通話,通話規(guī)則和協(xié)定就是該層的協(xié)議。接收到有效數(shù)據(jù)后,讀取并保存以太網(wǎng)協(xié)議頭,以太網(wǎng)協(xié)議頭長(zhǎng)度14字節(jié),具體包括6個(gè)字節(jié)的以太網(wǎng)目的MAC地址,6個(gè)字節(jié)的以太網(wǎng)源MAC地址和2個(gè)字節(jié)的幀類型 [8]。如果與自己主機(jī)NIC的MAC地址相同,就接著檢查類型的字段,以及是否有自己應(yīng)當(dāng)接受的協(xié)議。第三個(gè)為兩字節(jié)的類型字段,標(biāo)志上一層用的是什么協(xié)議,如上層使用的是IP數(shù)據(jù)報(bào),則該類型字段值為ox0800。 還用到物理地址寄存器(PAR),多點(diǎn)發(fā)送地址寄存器(MAR)。0000為5us,0001為10us,0010為15us,0011為25us,0100為50us,0101為100us,0110為150us,0111為200us,1000為250us,1001為300us,1010為350us,1011為400us,1100為450us,1101為500us,1110為550us,1111為600us。復(fù)位成功后,進(jìn)行進(jìn)一步初始化操作處理。 void DM9000_Init(UINT8* mac){ int i,oft; DM9000_reset(); If (DM9000_probe()==0){ return 1;} If (((DM9000_ior(DM9000_ISR)7)amp。即將寄存器NCR的第0位賦值為1,保持4ms,自動(dòng)清零。本文的設(shè)計(jì)中將CMD引腳與處理器的地址線ADR2相連,網(wǎng)絡(luò)控制器CMD引腳決定了處理器訪問(wèn)的是哪個(gè)端口寄存器:當(dāng)CMD=0時(shí),主機(jī)訪問(wèn)的是INDEX(地址)端口寄存器,它的地址為0X06000000;當(dāng)CMD=1時(shí),訪問(wèn)的是DATA(數(shù)據(jù))端口寄存器,它的地址為0X06000004。該DM9000A支持8位,16位接口訪問(wèn)內(nèi)部存儲(chǔ)器,以支持不同的處理器。LCD接口是連接LCD顯示器的,可以用來(lái)顯示ARM運(yùn)行的結(jié)果,在調(diào)試仿真的時(shí)候很方便、直觀。本課題第四部分為應(yīng)用層的實(shí)現(xiàn)。本課題共分為四部分,內(nèi)容安排如下:本課題第一部分為緒論,介紹了TCP的發(fā)展、應(yīng)用背景及國(guó)內(nèi)外發(fā)展前景,說(shuō)明了TCP/IP應(yīng)用的領(lǐng)域及網(wǎng)絡(luò)通信的可靠性。不久,它應(yīng)用于萬(wàn)維網(wǎng),實(shí)現(xiàn)了圖像和聲音、動(dòng)畫等在內(nèi)的大量可視化信息的訪問(wèn)。在網(wǎng)絡(luò)中,TCP/IP提供了在兩端計(jì)算機(jī)之間數(shù)據(jù)交換的環(huán)境,它的功能取決于兩臺(tái)計(jì)算機(jī)間進(jìn)行的通信內(nèi)容,即通過(guò)在兩端計(jì)算機(jī)上運(yùn)行的程序決定TCP/IP網(wǎng)絡(luò)究竟能做些什么。這就得在這些系統(tǒng)的標(biāo)準(zhǔn)之上,建立一種大家共同都必須遵守的標(biāo)準(zhǔn),讓不同的電腦按照一定的規(guī)則進(jìn)行“談判”,并且在談判之后能“握手”。并利用協(xié)議的接口函數(shù)編寫上層應(yīng)用程序,最后在應(yīng)層實(shí)現(xiàn)EM客戶端與PC服務(wù)器端之間的數(shù)據(jù)傳輸。實(shí)驗(yàn)證明,本課題的設(shè)計(jì)能夠成功的實(shí)現(xiàn)ARM平臺(tái)上的移植,并完成數(shù)據(jù)的準(zhǔn)確傳輸,這將為以后網(wǎng)絡(luò)之間的通信提供了方便。隨著接口信號(hào)處理機(jī)”(IMP)的研試及網(wǎng)絡(luò)測(cè)評(píng)中心的建立,科學(xué)家們又提出用網(wǎng)絡(luò)思想設(shè)計(jì)網(wǎng)絡(luò)布局,網(wǎng)絡(luò)測(cè)評(píng)系統(tǒng)的想法。TCP/IP協(xié)議具有可靠性與面向連接性,能使計(jì)算機(jī)之間直接交換數(shù)據(jù),實(shí)現(xiàn)資源的共享。隨著因特網(wǎng)的的普及與發(fā)展,TCP/IP也廣為人知,應(yīng)用于介紹各種新聞、提供各種服務(wù)中,如傳送影像和聲音的服務(wù),航天飛機(jī)升空實(shí)況轉(zhuǎn)播,音樂(lè)會(huì)實(shí)況傳播,講演活動(dòng)的介紹等。本課題第二部分為以太網(wǎng)接口DM9000A。介紹應(yīng)用層的協(xié)議功能,實(shí)現(xiàn)應(yīng)用層客戶端與服務(wù)器端之間的通信。USB接口用于跟外界交換數(shù)據(jù),如將數(shù)據(jù)從U盤中傳入ARM中。DM9000A物理協(xié)議層接口完全支持使用10MBps下3類、4類、5類非屏蔽雙絞線和100MBps下5類非屏蔽雙絞線。實(shí)際中INDEX端口寄存器保存的是訪問(wèn)DATA端口寄存器的內(nèi)部寄存器的地址,因此對(duì)DM9000A控制或狀態(tài)寄存器訪問(wèn)的命令順序是: (1)將要訪問(wèn)寄存器的地址寫到INDEX端口; 3. DM9000A寄存器讀數(shù)據(jù)__inline UINT8 DM9000_ior(UINT8 reg){ DM9000_outb(reg,DM9000_INDEX_PORT); return DM9000_inb(DM9000_DATA_PORT); } 使用如上函數(shù),實(shí)現(xiàn)DM9000A從寄存器中讀取數(shù)據(jù),首要對(duì)要訪問(wèn)的寄存器正確尋址,再將DM9000A的數(shù)據(jù)端口和地址端口復(fù)用,通過(guò)CMD引腳來(lái)選擇端口。0x01) != DM9000_IO_MODE) { return 1;} DM9000_iow(DM9000_NCR, 0x00); DM9000_iow(DM9000_TCR, 0x00); DM9000_iow(DM9000_SMCR,0x00); DM9000_iow(DM9000_NSR, 0x2C); DM9000_iow(DM9000_ISR, 0x3f); DM9000_iow(DM9000_BPTR,0x3f); DM9000_iow(DM9000_FCTR,0x38); DM9000_iow(DM9000_FCR, 0x29); for (i = 0,oft = DM9000_PAR;i 6;i++,oft++) DM9000_iow(oft,mac[i]); for (i = 0,oft = DM9000_MAR;i 8;i++,oft++) DM9000_iow(oft,0xff); DM9000_iow(DM9000_RCR,0x31); DM9000_iow(DM9000_IMR,17); ifdef ETHERNET_DEBUG DbgPrintf([DM9000 init is succed!]); end if } 對(duì)DM9000A的初始化,即填寫、設(shè)置DM9000A的控制寄存器,首先調(diào)用復(fù)位函數(shù),使GPIO默認(rèn)0位為輸出以激活內(nèi)部PHY,寄存器NCR的第0位賦值為1,軟件復(fù)位清零,以便設(shè)置正常的工作模式。 設(shè)置發(fā)送控制寄存器(TCR),本課題中將其置為0x00。它的4到7位表示背壓門限最高值,當(dāng)接收SRAM空閑空間低于該門限值,則MAC將產(chǎn)生一個(gè)擁擠狀態(tài),默認(rèn)值為3H,即3K字節(jié)空閑空間,不要超過(guò)SRAM(16KB)大小。接收控制寄存器(RCR),Bit[0]表示接收使能;Bit[1]表示混雜模式(Promiscuous Mode);Bit[2]表示忽略不完整的數(shù)據(jù)包;Bit[3]表示忽略所有多點(diǎn)傳送;Bit[4]表示丟棄CRC校驗(yàn)錯(cuò)誤的數(shù)據(jù)包;Bit[5]表示丟棄長(zhǎng)數(shù)據(jù)包,1為丟棄數(shù)據(jù)包長(zhǎng)度超過(guò)1522字節(jié)的數(shù)據(jù)包;Bit[6]表示看門狗定時(shí)器禁止,1禁止,0使能。第四個(gè)是數(shù)據(jù)字段,其長(zhǎng)度為46 ~1500字節(jié)之間。當(dāng)在自己可接受的協(xié)議情況下,就使用在內(nèi)存中的可接納數(shù)據(jù)幀長(zhǎng)度的內(nèi)存緩沖器,把NIC中的數(shù)據(jù)通過(guò)數(shù)據(jù)總線傳送到內(nèi)存,然后再交由上層的軟件作進(jìn)一步的處理。: 讀取接收數(shù)據(jù)包的地址讀取數(shù)據(jù)包第一個(gè)字節(jié) 接收有效數(shù)據(jù)開(kāi)始 01H ?Y N 可接收的協(xié)議 類型?幀頭CRC校驗(yàn) 正確?結(jié)束保存以太網(wǎng)協(xié)議頭讀取16位數(shù)據(jù)內(nèi)部接收數(shù)據(jù)緩存區(qū)Y N YN DM9000A的接收處理的流程圖4. DM9000A發(fā)送數(shù)據(jù)處理DM9000A發(fā)送處理具體實(shí)現(xiàn)函數(shù)為DM9000_SendFrame,首先由DM9000_outb()函數(shù)寫入數(shù)據(jù)命令,再由DM9000_outw()函數(shù)按照以太網(wǎng)協(xié)議的格式將16位數(shù)據(jù)寫入,發(fā)送到DM9000A的數(shù)據(jù)發(fā)送緩存區(qū)中,然后將數(shù)據(jù)長(zhǎng)度等信息填充到DM9000A的相應(yīng)寄存器內(nèi),并寫入發(fā)送數(shù)據(jù)的長(zhǎng)度,發(fā)送使能命令,DM9000A將緩存的數(shù)據(jù)和數(shù)據(jù)幀信息進(jìn)行MAC組幀,并發(fā)送出去,并設(shè)置一個(gè)發(fā)送完成后的清除標(biāo)志。TCP/IP參考模型中的每一層都包含有一個(gè)或多個(gè)協(xié)議,而各個(gè)層次所包含的協(xié)議總和就構(gòu)成了TCP/IP協(xié)議棧[9]。傳輸層定義了兩個(gè)端到端的傳輸層協(xié)議:一個(gè)是TCP傳輸控制協(xié)議,它是一個(gè)面向連接的協(xié)議,允許從一臺(tái)機(jī)器發(fā)出的字節(jié)流無(wú)差錯(cuò)的到達(dá)另一臺(tái)機(jī)器;另一個(gè)協(xié)議是UDP用戶數(shù)據(jù)報(bào)協(xié)議,它是一個(gè)不可靠的、不面向連接的傳輸協(xié)議,用于不需要TCP排序和流量控制的應(yīng)用中。初始化是編程實(shí)現(xiàn)設(shè)計(jì)的必要步驟,如圖所示以初始化設(shè)置為第一步,進(jìn)入本課題的設(shè)計(jì),它包括設(shè)置時(shí)鐘初始化、I/O初始化、存儲(chǔ)器CHCHE配置、使能CACHE及看門狗初始化、中斷初始化和網(wǎng)絡(luò)初始化。以上各種協(xié)議的處理過(guò)程將在后文詳細(xì)地描述。硬件類型字段表示硬件地址的類型,它存儲(chǔ)的是以太網(wǎng)的MAC幀,則值為1。在軟件編程時(shí),為了實(shí)現(xiàn)ARP協(xié)議,本設(shè)計(jì)定義了ARP的結(jié)構(gòu)體,如
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1