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

正文內(nèi)容

基于dm9000a的tcp通信設(shè)計畢業(yè)論文(文件)

2025-07-06 15:28 上一頁面

下一頁面
 

【正文】 。在發(fā)送時,調(diào)用DM9000A的驅(qū)動函數(shù)(DM9000_SendFrame),實現(xiàn)數(shù)據(jù)的發(fā)送。ICMP報文是封裝在IP分組中進(jìn)行傳輸?shù)摹?ICMP 響應(yīng)請求、響應(yīng)應(yīng)答的報文格式 0 8 16 31類型(0或8)代碼(0)檢驗和標(biāo)識符序號選型數(shù)據(jù)圖 : 開始重新判斷是不 是ICMP 檢驗和是否 正確?響應(yīng)請求? 發(fā)送響應(yīng)應(yīng)答結(jié)束響應(yīng)應(yīng)答? 報錯 YNNNNYYY ICMP 處理流程ICMP協(xié)議有兩種報文:請求報文和應(yīng)答報文。設(shè)計思路如下:處理程序接收到ICMP報的IP報頭后,首先對ICMP校驗和驗證,然后根據(jù)ICMP報的類型字段判斷是否是ping請求幀。在發(fā)送過程中,類似于IP協(xié)議的輸出過程,同樣是調(diào)用DM9000A的驅(qū)動函數(shù),完成發(fā)送過程。TCP報文段分為首部和數(shù)據(jù)兩部分,TCP的全部功能都體現(xiàn)在它首部中各字段的作用。從0開始,到2321為止,共232個序列號。保留位6bit,為了將來的擴展而準(zhǔn)備的域,目前應(yīng)置為0。 檢驗和占兩字節(jié),檢驗的范圍包括首部和數(shù)據(jù)兩部分,在計算檢驗和時,首先要在TCP報文段的前面加上一個12字節(jié)的偽首部,然后接收端在計算檢驗和時仍然要加上偽首部。在軟件編程時,為了實現(xiàn)TCP協(xié)議,本課題定義了結(jié)構(gòu)體tcb如下: struct tcp_frame //TCP協(xié)議幀{ UINT16 sport; UINT16 dport; UINT32 seqno; UINT32 ackno; UINT16 hlen_flags; UINT16 window; UINT16 checksum; UINT16 urgent; UINT8 opt[MAX_TCP_OPTLEN + 1]; UINT16 buf_index; } 在這個結(jié)構(gòu)體里,定義了:sport為發(fā)送端端口號,dport為接收端端口號,seqno為包的序列號,ackno為確認(rèn)應(yīng)答號,hlen flags為控制標(biāo)志,window為窗口,checksum為檢驗和,urgent為緊急指針,opt[MAX_TCP_OPTLEN + 1]為可選字段,buf_index為存區(qū)起始地址。套接字即是IP地址與端口號的組合,TCP的一個連接就是以一對套接字來標(biāo)識的,所以在運輸層通信的一對套接字必須是唯一的。在TCP 的三次握手中,發(fā)送第一個SYN 的一端執(zhí)行的是主動打開,而接收這個SYN 并發(fā)回下一個SYN 的另一端執(zhí)行的是被動打開。該數(shù)據(jù)包中,序列號是上一個同步請求數(shù)據(jù)包中的確認(rèn)號值,確認(rèn)號是服務(wù)器的初始序列號+1。服務(wù)器向客戶端發(fā)送一個數(shù)據(jù)包后,客戶端收到這個數(shù)據(jù)包后,會向服務(wù)器發(fā)送一個確認(rèn)數(shù)據(jù)包。序列號為上一個數(shù)據(jù)包序列號值+數(shù)據(jù)包大??;確認(rèn)號為上一個數(shù)據(jù)包確認(rèn)序列號。在TCP 關(guān)閉連接時,首先關(guān)閉的一方(即發(fā)送第一個終止數(shù)據(jù)包的)將執(zhí)行主動關(guān)閉,而另一方(收到這個終止數(shù)據(jù)包的)再執(zhí)行被動關(guān)閉。這時在數(shù)據(jù)包中,序列號為第3 步中的確認(rèn)號值,而確認(rèn)號為第3 步數(shù)據(jù)包中的序列號+1。填入TCP協(xié)議頭計算校驗和保存校驗和數(shù)據(jù)緩存指向TCP協(xié)議頭進(jìn)行IP封裝發(fā)送數(shù)據(jù)開始結(jié)束套接字打開?YN TCP協(xié)議的輸出流程4 應(yīng)用層的實現(xiàn)使用TCP協(xié)議,在應(yīng)用層實現(xiàn)數(shù)據(jù)的上傳,具體來說在應(yīng)用層,我們要完成數(shù)據(jù)的接收和應(yīng)答和發(fā)送。(2)EM客戶端向PC服務(wù)端發(fā)起注冊,此時命令字為0x01,PC服務(wù)器端回應(yīng)注冊,設(shè)置命令字為0x02。2. TCP協(xié)議應(yīng)用層偵聽事件回調(diào),我們曾介紹過TCP協(xié)議的實現(xiàn),在輸入設(shè)計中介紹了調(diào)用TCP套接字偵聽事件,本小節(jié)要實現(xiàn)TCP協(xié)議應(yīng)用層偵聽事件回調(diào)的功能。若客戶端向服務(wù)端上傳數(shù)據(jù),設(shè)置命令字為0x33;服務(wù)器讀取客戶端的參數(shù),置命令字為0x30;客戶端向服務(wù)端返回參數(shù),設(shè)命令字為0x31 ;PC服務(wù)器端下載程序,設(shè)置命令字為0x32。協(xié)議的具體工作過程可表示為(1)EM客戶端向PC服務(wù)端發(fā)起點對點的連接,設(shè)置客戶端機器類型為0x03JL206A,它的TCP端口固定為11018,PC服務(wù)器端的端口號默認(rèn)為10323。2. TCP協(xié)議輸出處理設(shè)計,在發(fā)送過程中,首先要判斷實際數(shù)據(jù)長度不超過緩存區(qū)長度,套接字要求處于打開狀態(tài),然后填入TCP協(xié)議頭,并計算校驗和正確之后保存校驗和,使數(shù)據(jù)緩存區(qū)buf指向TCP協(xié)議頭,然后傳給IP層,進(jìn)行IP封裝,然后等待發(fā)送。該數(shù)據(jù)包中,序列號為客戶端發(fā)送的上一個數(shù)據(jù)包中的確認(rèn)號值,而確認(rèn)號為服務(wù)器發(fā)送的上一個數(shù)據(jù)包中的序列號+該數(shù)據(jù)包所帶的數(shù)據(jù)的大?。?(2)第 2 步:服務(wù)器收到客戶端發(fā)送的終止數(shù)據(jù)包后,將對客戶端發(fā)送確認(rèn)信息,以關(guān)閉該方向上的TCP 連接。該確認(rèn)數(shù)據(jù)包中,序列號是為上一個數(shù)據(jù)包中的確認(rèn)號值,確認(rèn)號為服務(wù)器發(fā)送的上一個數(shù)據(jù)包中的序列號+該數(shù)據(jù)包中所帶數(shù)據(jù)的大小。但返回的確認(rèn)序號是已收到的數(shù)據(jù)的最高序加1,也就是說,確認(rèn)序號表示期望下次上到的第一個數(shù)據(jù)字節(jié)的序號[16]。這里為了簡化,只使用客戶端向服務(wù)器發(fā)送數(shù)據(jù)的情況。1) 第 1 步:客戶端向服務(wù)器發(fā)送一個同步數(shù)據(jù)包請求建立連接,該數(shù)據(jù)包中,初始序列號(ISN)是客戶端隨機產(chǎn)生的一個值,確認(rèn)號是0;2) 第 2 步:服務(wù)器收到這個同步請求數(shù)據(jù)包后,會對客戶端進(jìn)行一個同步確認(rèn)。以客戶端與服務(wù)器之間建立的通信來說明, TCP通訊傳輸過程客戶端 序號 確認(rèn)號 標(biāo)志 數(shù)據(jù) 服務(wù)端 建立連接過程:第一次握手: 隨機C1 不考慮 SYN 第二次握手: 隨機S1 C1+1 SYN+ACK 第三次握手: C1+1 S1+1 ACK 傳送數(shù)據(jù)過程:發(fā)送數(shù)據(jù): C1+1 S1+1 PSH+ACK n字節(jié) 接收確認(rèn): S1+1 C1+1+n ACK 發(fā)送數(shù)據(jù): C1+1+n S1+1 PSH+ACK m字節(jié) 接收確認(rèn): S1+1 C1+1+n+m ACK 關(guān)閉連接過程: 第一次握手: C1 S1 FIN+ACK 第二次握手: S1 C1+1 ACK 第三次握手: S1 C1+1 FIN+ACK 第四次握手: C1+1 S1+1 ACK 1. TCP 建立連接運輸連接的建立和釋放是每一次面向連接通信中必不可少的過程,在連接建立的過程中要解決以下三個問題:(1)要使每一方都知道對方的存在;(2)要允許雙方協(xié)商一些參數(shù)(如,最大報文段長度,最大窗口的大等); (3)能夠運輸實體資源(如緩沖區(qū)大小,連接表中的項目等)進(jìn)行分配。端口號是一個16bit的地址,不同的應(yīng)用進(jìn)程用不同的端口號來標(biāo)識。選項長度可變,TCP規(guī)定一種選項即最長報文段MSS用于告訴對方的TCP:本地的緩沖區(qū)所能接收的報文段的最大長度。各比特意義如下:緊急比特URG,當(dāng)URG=1時,表明此報文段應(yīng)盡快發(fā)送而不要按原來的排隊來傳送,應(yīng)與緊急指針字段配合使用;確認(rèn)比特ACK,當(dāng)ACK=1時確認(rèn)序號字段才有意義,除了最初的一個SYN段之外,它必須為1;急迫比特PSH,當(dāng)PSH=1時,表明請求遠(yuǎn)地TCP將本報文段立即傳送給其應(yīng)用層,而不等到整個緩沖區(qū)滿后再向上交付;重建比特RST,當(dāng)RST=1時,表明出現(xiàn)嚴(yán)重錯誤,必須釋放連接,然后重新建立運輸連接;同步比特SYN,當(dāng)SYN=1而ACK=0時,表明這是一個連接請求報文段,若對方同意建立連接,則應(yīng)在發(fā)回的報文段中使SYN=1且ACK=1;終止比特FIN,當(dāng)FIN=1時,表明發(fā)送的字節(jié)串已經(jīng)發(fā)送完畢,并要求釋放運輸連接[15]。由于序號字段有32bit長,可對4GB的數(shù)據(jù)進(jìn)行編號,這樣就可以保證序號重復(fù)使用時就序號的數(shù)據(jù)早已在網(wǎng)絡(luò)中消失了。 TCP報文段的首部0 8 16 24 31發(fā)送端端口號接收端端口號 序 列 號 確 認(rèn) 序 號數(shù)據(jù)偏移 保留 URGACRPSHRSTSYSFIN窗 口檢 驗 和緊 急 指 針選項(長度可改變)填 充 前兩個為發(fā)送端端口號和接收端端口號各占兩個字節(jié)端口是運輸層與高層的服務(wù)接口,16bit 的端口,32bit的IP地址,構(gòu)成了相當(dāng)于運輸層服務(wù)訪問點TSAP的地址(總共是48bit)。TCP之所以可靠是因為它對發(fā)送數(shù)據(jù)的順序號進(jìn)行了控制,以及進(jìn)行與其對應(yīng)的肯定確認(rèn)應(yīng)答控制;面向連接是因為TCP協(xié)議在傳輸數(shù)據(jù)開始前,通信雙方之間需建立好連接,在通信結(jié)束后切斷連接。本課題只處理響應(yīng)請求。首先確定是IP數(shù)據(jù)報后再判斷是不是ICMP報文,確認(rèn)是ICMP報文后,驗證檢驗和,再判斷是請求報文還是應(yīng)答報文。本課題把ICMP簡化成只有響應(yīng)請求和響應(yīng)應(yīng)答。這時就需要使用網(wǎng)絡(luò)層的ICMP(網(wǎng)絡(luò)控制報文協(xié)議),使主機或路由器報告差錯和異常情況。接下來就是計算出IP首部的檢驗和了,因為發(fā)送的IP數(shù)據(jù)報的時候要填入首部檢驗和字段,在計算校驗和時采用16位二進(jìn)制取反求和。如果在ARP緩存中找到目的地址的硬件地址以后,再判斷是要發(fā)什么協(xié)議的IP數(shù)據(jù)報,判斷的依據(jù)是根據(jù)IP首部的協(xié)議字段進(jìn)行判斷。最后一步是把記錄下來的IP地址和硬件地址,更新到ARP高速緩存當(dāng)中。如果沒有可選項,接下來就是驗證首部檢驗和了。2. IP協(xié)議輸入處理設(shè)計IP協(xié)議的實現(xiàn)包括兩個過程:IP協(xié)議輸入過程和IP協(xié)議輸出過程。Ip_check_cs()函數(shù),負(fù)責(zé)檢查IP協(xié)議頭檢查和。tos為服務(wù)類型;tlen為總長度;id為標(biāo)志;frags為標(biāo)識和片偏移;ttl為生存時間;protocol為協(xié)議;checksum為檢驗和;sip為源IP地址;dip為目的IP地址;opt[MAX_IP_OPTLEN + 1]為可選字段;buf_index為數(shù)據(jù)緩存區(qū);數(shù)據(jù)緩存區(qū)位數(shù)據(jù)部分的偏移量在此設(shè)置,則這部分是為了區(qū)分首部和數(shù)據(jù)部分,提取數(shù)據(jù)時,方便操作。這種傳輸次序稱作big endian字節(jié)序。ARP輸出請求查找ARP高速 緩存表分配表空間將本地IP地址和物理地址以及目的IP地址、廣播物理地址寫入緩存中發(fā)送ARP分組請求結(jié)束NY開始 ARP輸出處理數(shù)據(jù)流程圖 IP協(xié)議及其實現(xiàn) IP協(xié)議幀數(shù)據(jù)結(jié)構(gòu) IP協(xié)議是TCP/IP體系中最主要的協(xié)議之一, 。在發(fā)送時,調(diào)用DM9000A驅(qū)動,完成以太網(wǎng)的數(shù)據(jù)發(fā)送。開始重新判斷是否是ARP是請求?發(fā)送回應(yīng)是否是新的IP地址更新ARP高速緩存是響應(yīng)?Y報錯報錯接受響應(yīng)結(jié)束NYYNYNN ARP協(xié)議輸入處理流程圖(2)ARP協(xié)議輸出處理過程。確認(rèn)是ARP數(shù)據(jù)后,再判斷它是屬于分組請求還是分組響應(yīng),判斷的依據(jù)是看ARP協(xié)議的操作字節(jié)是1還是2,1表示請求,2表示應(yīng)答。(4)收到ARP應(yīng)答后,使ARP進(jìn)行請求——應(yīng)答交換的IP數(shù)據(jù)報現(xiàn)在就可以傳送了。ARP請求數(shù)據(jù)幀中包含目的主機的IP地址,其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址”。高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創(chuàng)建時開始算起。在軟件編程時,為了實現(xiàn)ARP協(xié)議,本設(shè)計定義了ARP的結(jié)構(gòu)體,如下:struct arp_entry { UINT8 state; UINT8 type; UINT8 retries; UINT8 ttl; UINT8 hwadr[MAXHWALEN]; UINT32 pradr; } 在這個結(jié)構(gòu)體中,定義了:狀態(tài)state包括ARP_FREE(空閑)、ARP_RESERVED(保留)、ARP_PENDING(等待回應(yīng))、ARP_RESOLVED(完成)幾種狀態(tài);類型type包括ARP_FIXED_IP(固定IP)、ARP_TEMP_IP(臨時IP);重發(fā)次數(shù)retries為5次;定義生存時間ttl為60秒;hwadr[MAXHWALEN]為物理地址、pradr為緩存表IP地址。對于以太網(wǎng)上IP地址的ARP請求或應(yīng)答來說,它們的值分別為6和4。硬件類型字段表示硬件地址的類型,它存儲的是以太網(wǎng)的MAC幀,則值為1。以太網(wǎng)報頭中的目的地址為全1
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1