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

正文內(nèi)容

基于dm9000a的tcp通信設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2025-06-18 15:28本頁(yè)面
  

【正文】 8 16 24 31發(fā)送端端口號(hào)接收端端口號(hào) 序 列 號(hào) 確 認(rèn) 序 號(hào)數(shù)據(jù)偏移 保留 URGACRPSHRSTSYSFIN窗 口檢 驗(yàn) 和緊 急 指 針選項(xiàng)(長(zhǎng)度可改變)填 充 前兩個(gè)為發(fā)送端端口號(hào)和接收端端口號(hào)各占兩個(gè)字節(jié)端口是運(yùn)輸層與高層的服務(wù)接口,16bit 的端口,32bit的IP地址,構(gòu)成了相當(dāng)于運(yùn)輸層服務(wù)訪問點(diǎn)TSAP的地址(總共是48bit)。 序列號(hào)占四個(gè)字節(jié),表示所發(fā)送的數(shù)據(jù)的位置,是本報(bào)文段所發(fā)送的數(shù)據(jù)部分第一個(gè)字節(jié)的序號(hào),在 TCP傳送的數(shù)據(jù)流中每一個(gè)字節(jié)都有一個(gè)序號(hào)。從0開始,到2321為止,共232個(gè)序列號(hào)。確認(rèn)序號(hào)占四個(gè)字節(jié),是期望收到對(duì)方下次發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào),也就是期望收到的下一個(gè)報(bào)文段的首部中的序號(hào)。由于序號(hào)字段有32bit長(zhǎng),可對(duì)4GB的數(shù)據(jù)進(jìn)行編號(hào),這樣就可以保證序號(hào)重復(fù)使用時(shí)就序號(hào)的數(shù)據(jù)早已在網(wǎng)絡(luò)中消失了。數(shù)據(jù)偏移量占4bit,這是TCP報(bào)文段首部的長(zhǎng)度,用于指出TCP報(bào)文段的數(shù)據(jù)開始處離TCP報(bào)文段的起始處有多遠(yuǎn),“數(shù)據(jù)偏移”的單位是32bit字。保留位6bit,為了將來(lái)的擴(kuò)展而準(zhǔn)備的域,目前應(yīng)置為0。控制標(biāo)志位共占6bit,它由1bit來(lái)確定其含義,按照順序分別賦予名字:URG、ACK、PSH、RST、SYN、FIN。各比特意義如下:緊急比特URG,當(dāng)URG=1時(shí),表明此報(bào)文段應(yīng)盡快發(fā)送而不要按原來(lái)的排隊(duì)來(lái)傳送,應(yīng)與緊急指針字段配合使用;確認(rèn)比特ACK,當(dāng)ACK=1時(shí)確認(rèn)序號(hào)字段才有意義,除了最初的一個(gè)SYN段之外,它必須為1;急迫比特PSH,當(dāng)PSH=1時(shí),表明請(qǐng)求遠(yuǎn)地TCP將本報(bào)文段立即傳送給其應(yīng)用層,而不等到整個(gè)緩沖區(qū)滿后再向上交付;重建比特RST,當(dāng)RST=1時(shí),表明出現(xiàn)嚴(yán)重錯(cuò)誤,必須釋放連接,然后重新建立運(yùn)輸連接;同步比特SYN,當(dāng)SYN=1而ACK=0時(shí),表明這是一個(gè)連接請(qǐng)求報(bào)文段,若對(duì)方同意建立連接,則應(yīng)在發(fā)回的報(bào)文段中使SYN=1且ACK=1;終止比特FIN,當(dāng)FIN=1時(shí),表明發(fā)送的字節(jié)串已經(jīng)發(fā)送完畢,并要求釋放運(yùn)輸連接[15]。窗口占兩字節(jié),是報(bào)文段接收方的接收緩沖區(qū)的空閑區(qū)域的大小,發(fā)送數(shù)據(jù)一方只能發(fā)送比這個(gè)域所表示的數(shù)據(jù)量小的數(shù)據(jù),單位為字節(jié)。 檢驗(yàn)和占兩字節(jié),檢驗(yàn)的范圍包括首部和數(shù)據(jù)兩部分,在計(jì)算檢驗(yàn)和時(shí),首先要在TCP報(bào)文段的前面加上一個(gè)12字節(jié)的偽首部,然后接收端在計(jì)算檢驗(yàn)和時(shí)仍然要加上偽首部。緊急指針域在控制標(biāo)志URG為1時(shí)有效,它所存儲(chǔ)的值,作為表示需要緊急數(shù)據(jù)的存儲(chǔ)單元來(lái)處理。選項(xiàng)長(zhǎng)度可變,TCP規(guī)定一種選項(xiàng)即最長(zhǎng)報(bào)文段MSS用于告訴對(duì)方的TCP:本地的緩沖區(qū)所能接收的報(bào)文段的最大長(zhǎng)度。填充不定長(zhǎng),填充的內(nèi)容必須為0,它是為了保證包頭的結(jié)合和數(shù)據(jù)的開始處偏移量能夠被32整除。在軟件編程時(shí),為了實(shí)現(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; } 在這個(gè)結(jié)構(gòu)體里,定義了:sport為發(fā)送端端口號(hào),dport為接收端端口號(hào),seqno為包的序列號(hào),ackno為確認(rèn)應(yīng)答號(hào),hlen flags為控制標(biāo)志,window為窗口,checksum為檢驗(yàn)和,urgent為緊急指針,opt[MAX_TCP_OPTLEN + 1]為可選字段,buf_index為存區(qū)起始地址。 TCP協(xié)議端口及套接字端口是應(yīng)用層與運(yùn)輸實(shí)體進(jìn)行交互的接口。端口號(hào)是一個(gè)16bit的地址,不同的應(yīng)用進(jìn)程用不同的端口號(hào)來(lái)標(biāo)識(shí)。端口號(hào)分為兩類,一類是專門分配給一些最常用的應(yīng)用程序,這叫熟知端口;另外一類則是一般的端口號(hào),用來(lái)隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。套接字即是IP地址與端口號(hào)的組合,TCP的一個(gè)連接就是以一對(duì)套接字來(lái)標(biāo)識(shí)的,所以在運(yùn)輸層通信的一對(duì)套接字必須是唯一的。 TCP協(xié)議的通訊過程在TCP 通訊中主要有連接的建立、數(shù)據(jù)的傳輸、連接的關(guān)閉三個(gè)過程!每個(gè)過程完成不同的工作,而且序列號(hào)和確認(rèn)號(hào)在每個(gè)過程中的變化都是不同的。以客戶端與服務(wù)器之間建立的通信來(lái)說(shuō)明, TCP通訊傳輸過程客戶端 序號(hào) 確認(rèn)號(hào) 標(biāo)志 數(shù)據(jù) 服務(wù)端 建立連接過程:第一次握手: 隨機(jī)C1 不考慮 SYN 第二次握手: 隨機(jī)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 建立連接運(yùn)輸連接的建立和釋放是每一次面向連接通信中必不可少的過程,在連接建立的過程中要解決以下三個(gè)問題:(1)要使每一方都知道對(duì)方的存在;(2)要允許雙方協(xié)商一些參數(shù)(如,最大報(bào)文段長(zhǎng)度,最大窗口的大等); (3)能夠運(yùn)輸實(shí)體資源(如緩沖區(qū)大小,連接表中的項(xiàng)目等)進(jìn)行分配。TCP 建立連接,也就是我們常說(shuō)的三次握手,它需要三步完成。在TCP 的三次握手中,發(fā)送第一個(gè)SYN 的一端執(zhí)行的是主動(dòng)打開,而接收這個(gè)SYN 并發(fā)回下一個(gè)SYN 的另一端執(zhí)行的是被動(dòng)打開。這里以客戶端向服務(wù)器發(fā)起連接來(lái)說(shuō)明。1) 第 1 步:客戶端向服務(wù)器發(fā)送一個(gè)同步數(shù)據(jù)包請(qǐng)求建立連接,該數(shù)據(jù)包中,初始序列號(hào)(ISN)是客戶端隨機(jī)產(chǎn)生的一個(gè)值,確認(rèn)號(hào)是0;2) 第 2 步:服務(wù)器收到這個(gè)同步請(qǐng)求數(shù)據(jù)包后,會(huì)對(duì)客戶端進(jìn)行一個(gè)同步確認(rèn)。這個(gè)數(shù)據(jù)包中,序列號(hào)(ISN)是服務(wù)器隨機(jī)產(chǎn)生的一個(gè)值,確認(rèn)號(hào)是客戶端的初始序列號(hào)+1;3) 第 3 步:客戶端收到這個(gè)同步確認(rèn)數(shù)據(jù)包后,再對(duì)服務(wù)器進(jìn)行一個(gè)確認(rèn)。該數(shù)據(jù)包中,序列號(hào)是上一個(gè)同步請(qǐng)求數(shù)據(jù)包中的確認(rèn)號(hào)值,確認(rèn)號(hào)是服務(wù)器的初始序列號(hào)+1。2. TCP 傳輸數(shù)據(jù)在 TCP 建立連接后,就可以開始傳輸數(shù)據(jù)了,TCP 工作在全雙工模式,它可以同時(shí)進(jìn)行雙向數(shù)據(jù)傳輸。這里為了簡(jiǎn)化,只使用客戶端向服務(wù)器發(fā)送數(shù)據(jù)的情況。服務(wù)器向客戶端發(fā)送數(shù)據(jù)的原理,它們是類似的工作過程,這里不再重復(fù)說(shuō)明。服務(wù)器向客戶端發(fā)送一個(gè)數(shù)據(jù)包后,客戶端收到這個(gè)數(shù)據(jù)包后,會(huì)向服務(wù)器發(fā)送一個(gè)確認(rèn)數(shù)據(jù)包。TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)(即收到的數(shù)據(jù)流中的最后一個(gè)序號(hào))表示確認(rèn)。但返回的確認(rèn)序號(hào)是已收到的數(shù)據(jù)的最高序加1,也就是說(shuō),確認(rèn)序號(hào)表示期望下次上到的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)[16]。傳輸數(shù)據(jù)的簡(jiǎn)要過程如下:(1)發(fā)送數(shù)據(jù):客戶端向服務(wù)器端發(fā)送第一個(gè)帶有數(shù)據(jù)的數(shù)據(jù)包,該數(shù)據(jù)包中的序列號(hào)和確認(rèn)號(hào)與建立連接第三步的數(shù)據(jù)包中的序列號(hào)和確認(rèn)號(hào)相同;為提高網(wǎng)絡(luò)傳送效率,發(fā)送端可以連續(xù)發(fā)送多個(gè)數(shù)據(jù)包。序列號(hào)為上一個(gè)數(shù)據(jù)包序列號(hào)值+數(shù)據(jù)包大小;確認(rèn)號(hào)為上一個(gè)數(shù)據(jù)包確認(rèn)序列號(hào)??蛻舳耸盏椒?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ù)包。該確認(rèn)數(shù)據(jù)包中,序列號(hào)是為上一個(gè)數(shù)據(jù)包中的確認(rèn)號(hào)值,確認(rèn)號(hào)為服務(wù)器發(fā)送的上一個(gè)數(shù)據(jù)包中的序列號(hào)+該數(shù)據(jù)包中所帶數(shù)據(jù)的大小。3. TCP 關(guān)閉連接關(guān)閉一個(gè)連接需要經(jīng)過4 個(gè)步驟,因?yàn)門CP 連接是全雙工的工作模式,所以每個(gè)方向上需要單獨(dú)關(guān)閉。在TCP 關(guān)閉連接時(shí),首先關(guān)閉的一方(即發(fā)送第一個(gè)終止數(shù)據(jù)包的)將執(zhí)行主動(dòng)關(guān)閉,而另一方(收到這個(gè)終止數(shù)據(jù)包的)再執(zhí)行被動(dòng)關(guān)閉。 (1)第 1 步:客戶端完成它的數(shù)據(jù)發(fā)送任務(wù)后,會(huì)主動(dòng)向服務(wù)器發(fā)送一個(gè)終止數(shù)據(jù)包,以關(guān)閉在這個(gè)方向上的TCP 連接。該數(shù)據(jù)包中,序列號(hào)為客戶端發(fā)送的上一個(gè)數(shù)據(jù)包中的確認(rèn)號(hào)值,而確認(rèn)號(hào)為服務(wù)器發(fā)送的上一個(gè)數(shù)據(jù)包中的序列號(hào)+該數(shù)據(jù)包所帶的數(shù)據(jù)的大??; (2)第 2 步:服務(wù)器收到客戶端發(fā)送的終止數(shù)據(jù)包后,將對(duì)客戶端發(fā)送確認(rèn)信息,以關(guān)閉該方向上的TCP 連接。這時(shí)的數(shù)據(jù)包中,序列號(hào)為第1 步中的確認(rèn)號(hào)值,而確認(rèn)號(hào)為第1 步的數(shù)據(jù)包中的序列號(hào)+1;(3)第 3 步:同理,服務(wù)器完成它的數(shù)據(jù)發(fā)送任務(wù)后,就也會(huì)向客戶端發(fā)送一個(gè)終止數(shù)據(jù)包,以關(guān)閉在這個(gè)方向上的TCP 連接,該數(shù)據(jù)包中,序列號(hào)為客戶端發(fā)送的上一個(gè)數(shù)據(jù)包中的確認(rèn)號(hào)值,而確認(rèn)號(hào)為服務(wù)器發(fā)送的上一個(gè)數(shù)據(jù)包中的序列號(hào)+該數(shù)據(jù)包所帶數(shù)據(jù)的大?。唬?)第 4 步:客戶端收到服務(wù)器發(fā)送的終止數(shù)據(jù)包后,將對(duì)服務(wù)器發(fā)送確認(rèn)信息,以關(guān)閉該方向上的TCP 連接。這時(shí)在數(shù)據(jù)包中,序列號(hào)為第3 步中的確認(rèn)號(hào)值,而確認(rèn)號(hào)為第3 步數(shù)據(jù)包中的序列號(hào)+1。 TCP協(xié)議的實(shí)現(xiàn)1. TCP協(xié)議輸入處理設(shè)計(jì) :開始重新判斷是否 TCP? 獲取TCP首部信息套接字是否打開?驗(yàn)證校驗(yàn)和?調(diào)用TCP套接字偵聽事件報(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套接字是否打開、并找到處理數(shù)據(jù)報(bào)要用到的SOCKET,進(jìn)一步驗(yàn)證檢驗(yàn)和的正確性,當(dāng)套接字未打開,就不做任何處理;當(dāng)檢驗(yàn)和也正確無(wú)誤,最后調(diào)用TCP套接字偵聽事件,完成應(yīng)用層的處理。2. TCP協(xié)議輸出處理設(shè)計(jì),在發(fā)送過程中,首先要判斷實(shí)際數(shù)據(jù)長(zhǎng)度不超過緩存區(qū)長(zhǎng)度,套接字要求處于打開狀態(tài),然后填入TCP協(xié)議頭,并計(jì)算校驗(yàn)和正確之后保存校驗(yàn)和,使數(shù)據(jù)緩存區(qū)buf指向TCP協(xié)議頭,然后傳給IP層,進(jìn)行IP封裝,然后等待發(fā)送。在發(fā)送過程中,調(diào)用DM9000A的驅(qū)動(dòng)函數(shù),完成數(shù)據(jù)的發(fā)送。填入TCP協(xié)議頭計(jì)算校驗(yàn)和保存校驗(yàn)和數(shù)據(jù)緩存指向TCP協(xié)議頭進(jìn)行IP封裝發(fā)送數(shù)據(jù)開始結(jié)束套接字打開?YN TCP協(xié)議的輸出流程4 應(yīng)用層的實(shí)現(xiàn)使用TCP協(xié)議,在應(yīng)用層實(shí)現(xiàn)數(shù)據(jù)的上傳,具體來(lái)說(shuō)在應(yīng)用層,我們要完成數(shù)據(jù)的接收和應(yīng)答和發(fā)送。在應(yīng)用層實(shí)現(xiàn)EM客戶端與PC服務(wù)端之間的通信,首先在應(yīng)用層定義了一個(gè)網(wǎng)絡(luò)通信協(xié)議,它分為一個(gè)字節(jié)的機(jī)器類型;一個(gè)字節(jié)的協(xié)議號(hào)0x01;八個(gè)字節(jié)的機(jī)器號(hào),如99999999;兩個(gè)字節(jié)的備用;兩個(gè)字節(jié)的總幀號(hào);兩個(gè)字節(jié)的幀號(hào);一個(gè)字節(jié)的命令;一個(gè)字節(jié)的檢驗(yàn)和(所有的累加為0xAC)和兩個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度(本幀DATA部分長(zhǎng)度),還有數(shù)據(jù)部分。協(xié)議的具體工作過程可表示為(1)EM客戶端向PC服務(wù)端發(fā)起點(diǎn)對(duì)點(diǎn)的連接,設(shè)置客戶端機(jī)器類型為0x03JL206A,它的TCP端口固定為11018,PC服務(wù)器端的端口號(hào)默認(rèn)為10323。本設(shè)計(jì)中協(xié)議號(hào)為0x01。(2)EM客戶端向PC服務(wù)端發(fā)起注冊(cè),此時(shí)命令字為0x01,PC服務(wù)器端回應(yīng)注冊(cè),設(shè)置命令字為0x02。(3)注冊(cè)成功后,在整個(gè)通訊中,通過設(shè)置不同的命令字實(shí)現(xiàn)發(fā)送應(yīng)答接收。若客戶端向服務(wù)端上傳數(shù)據(jù),設(shè)置命令字為0x33;服務(wù)器讀取客戶端的參數(shù),置命令字為0x30;客戶端向服務(wù)端返回參數(shù),設(shè)命令字為0x31 ;PC服務(wù)器端下載程序,設(shè)置命令字為0x32。1. 本地網(wǎng)絡(luò)的初始化 開 始ARP初始化設(shè)置IP地址,默認(rèn)網(wǎng)關(guān),子網(wǎng)掩碼TCP初始化TCP應(yīng)用層初始化DM9000A初始化結(jié)束 本地網(wǎng)絡(luò)初始化通信過程中首先要對(duì)本地網(wǎng)絡(luò)進(jìn)行初始化。2. TCP協(xié)議應(yīng)用層偵聽事件回調(diào),我們?cè)榻B過TCP協(xié)議的實(shí)現(xiàn),在輸入設(shè)計(jì)中介紹了調(diào)用TCP套接字偵聽事件,本小節(jié)要實(shí)現(xiàn)TCP協(xié)議應(yīng)用層偵聽事件回調(diào)的功能。:開 始判斷是否是該TCP套接字判
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1