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

正文內(nèi)容

解析ip數(shù)據(jù)包課程設(shè)計(jì)-其他專業(yè)(編輯修改稿)

2025-02-24 02:28 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 RCVALL,amp。dwBufferInLen,sizeof(dwBufferInLen),amp。dwBufferLen,Sizeof(dwBufferLen),amp。dwByteReturned,NULL,NULL)。 如果接收的數(shù)據(jù) 包中的協(xié)議類型和定義的原始套接字匹配,那么接收到的數(shù)據(jù)就拷貝到套接字中。因此,網(wǎng)卡就可以接收所有經(jīng)過(guò)的 IP 包。 在程序中可使用 RECV()函數(shù)接收經(jīng)過(guò)的 IP 包。該函數(shù)有四個(gè)參數(shù),第一個(gè)參數(shù)接收操作所用的套接字描述符;第二個(gè)參數(shù)接收到緩沖區(qū)的地址;第二個(gè)參數(shù)接收緩沖區(qū)的地址;第三個(gè)參數(shù)接收緩沖區(qū)的大小,也就是所要接收的字節(jié)數(shù);第四個(gè)參數(shù)是一個(gè)附加標(biāo)志,如果對(duì)所發(fā)送的數(shù)據(jù)沒(méi)特殊要求,直接設(shè)為 0。因?yàn)?IP 數(shù)據(jù)包的最大長(zhǎng)度是 65536B,因此緩沖區(qū)的大小不能小于 65535B。設(shè)置緩沖區(qū)后,可利用 循環(huán)來(lái)反復(fù)監(jiān)聽(tīng)接收 IP 包,用recv()函數(shù)接收功能的代碼如下: dedine BUFFER_SIZE 65535 Char buffer[BUFFER_SIZE]。 //設(shè)置緩沖區(qū) While(true) {recv(sock,buffer,BUFFER_SIZE,0)。 //j 接收數(shù)據(jù)包 …….. 沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 7 IP 頭部的數(shù)據(jù)結(jié)構(gòu) 程序需要定義一個(gè)數(shù)據(jù)結(jié)構(gòu)表示 IP 頭部。這個(gè)數(shù)據(jù)結(jié)構(gòu)應(yīng)該和圖 71吻合,其代碼如下: typedef struct _IP_HEADER //定義 IP 頭 { union { BYTE Version。 //版本前 4 位 BYTE HdrLen。 //報(bào)頭標(biāo)長(zhǎng)(后四位), IP 頭長(zhǎng)度 }; BYTE ServiceType。//服務(wù)類型 WORD TotalLen。 //總長(zhǎng)度 WORD ID。 //標(biāo)識(shí) union { WORD Flags。 //標(biāo)志 Word FragOff。 //分段偏移 }。 BYTE TimeToLive。 //生命期 BYTE Protiocol。 //協(xié)議 WORD HdrChksum。 //頭校驗(yàn)和 DWORD SrcAddr。 //源地址 DWORD DstAddr: //目的地址 BYTE Options。 //選項(xiàng) }IP_HEADER。 這是我們只考慮 IP 頭部結(jié)構(gòu),不考慮數(shù)據(jù)部分。在捕獲 IP 數(shù)據(jù)包后,可以通過(guò)指針把緩沖區(qū)的內(nèi)容強(qiáng)制轉(zhuǎn)化為 IP_HEADER 數(shù)據(jù)結(jié)構(gòu)。 IP_HEADER ip = *( IP_HEADER *)buffer。 包的解析 解析 IP 包的字段有兩種策略。針對(duì)長(zhǎng)度為 8 位、 16 位和 32 位的字段 (或子字段)時(shí),可以利用 IP_HEADER 的成員指教獲取。要解析長(zhǎng)度不是 9位倍數(shù)的字段(或子 字段)時(shí),可以利用 C語(yǔ)言中的位移以及與、或操作完成。下面給出了通過(guò) IP_HEADER 解析 IP頭各個(gè)字段的代碼。 /*獲取版本字段 */ 4。 /*獲取頭部長(zhǎng)度字段 */ amp。 0x0f。 /*獲取服務(wù)類型字段中的優(yōu)先級(jí)子域 */ 5。 /*獲取服務(wù)類型字段中的 TOS 子域 */ (1)amp。0X0F。 /*獲取總長(zhǎng)度字段 */ 沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 8 。 /*獲取標(biāo)識(shí)字段 */ 。 /*解析標(biāo)識(shí)字段 */ DF=(14) amp。0x01。 MF=(13) amp。0X01。 /*獲取分段偏移字段 */ amp。0x1fff。 /*獲取生存時(shí)間字段 */ 。 /*獲取協(xié)議字段 */ 。 /*獲取頭校驗(yàn)和字段 */ 。 /*解析源 IP 地址字段 */ i_ntoa(*(in_addr*)amp。 /*解析目的的 IP 地址字段 */ i_ntoa(*(in_addr*)amp。)。 圖 74 給出一個(gè)供參考的程序流程圖。 五.實(shí)現(xiàn)過(guò)程 include include include include typedef struct _IP_HEADER { union { BYTE Version。 BYTE HdrLen。 }。 BYTE ServiceType。 WORD TotalLen。 WORD ID。 union { WORD Flags。 WORD Fragoff。 }。 沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 9 BYTE TimeToLive。 BYTE Protocol。 WORD HdrChksum。 DWORD SrcAddr。 DWORD DstAddr。 BYTE Options。 }IP_HEADER。 void getVersion(BYTE b,BYTE amp。 version) { version =b4。 } void getIHL(BYTE b,BYTE amp。 result) { result = (b amp。 0x0f) *4。 } char * parseServiceType_getProcedence(BYTE b) { switch(b5) { case 7: return Network Control。 break。 case 6: return Inter work Control。 break。 case 5: return CRITIC/ECP。 break。 case 4: return Flash Override。 break。 case 3: return Falsh。 break。 case 2: return Immediate。 break。 case 1: return Priority。 break。 case 0: return Routine。 break。 沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 10 default : return Unknown } } char * parseServiceType_getTOS(BYTE b) {
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1