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

正文內(nèi)容

解析ip數(shù)據(jù)包課程設(shè)計(jì)-其他專業(yè)-文庫(kù)吧資料

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

【正文】 } } void ipparse(FILE * file,char *buffer) { IP_HEADER ip=*(IP_HEADER *)buffer。 case 46: return OSPF。 case 17: return UPD。 case 6: return TCP。 case 2: return IGMP。0x1ffff。 } void getFragoff(WORD w,WORD amp。 MF=(w13)amp。 MF) { DF=(w14)amp。 } } void getFlags(WORD w,BYTE amp。 break。 break。 break。 break。 break。 break。0x0f。 break。 break。 break。 break。 break。 break。 break。 break。 0x0f) *4。 } void getIHL(BYTE b,BYTE amp。 void getVersion(BYTE b,BYTE amp。 BYTE Options。 DWORD SrcAddr。 BYTE Protocol。 }。 union { WORD Flags。 WORD TotalLen。 }。 五.實(shí)現(xiàn)過程 include include include include typedef struct _IP_HEADER { union { BYTE Version。)。 /*解析源 IP 地址字段 */ i_ntoa(*(in_addr*)amp。 /*獲取協(xié)議字段 */ 。0x1fff。0X01。0x01。 /*獲取標(biāo)識(shí)字段 */ 。0X0F。 /*獲取服務(wù)類型字段中的優(yōu)先級(jí)子域 */ 5。 /*獲取頭部長(zhǎng)度字段 */ amp。下面給出了通過 IP_HEADER 解析 IP頭各個(gè)字段的代碼。針對(duì)長(zhǎng)度為 8 位、 16 位和 32 位的字段 (或子字段)時(shí),可以利用 IP_HEADER 的成員指教獲取。 IP_HEADER ip = *( IP_HEADER *)buffer。 這是我們只考慮 IP 頭部結(jié)構(gòu),不考慮數(shù)據(jù)部分。 //源地址 DWORD DstAddr: //目的地址 BYTE Options。 //協(xié)議 WORD HdrChksum。 BYTE TimeToLive。 //標(biāo)志 Word FragOff。 //總長(zhǎng)度 WORD ID。 //報(bào)頭標(biāo)長(zhǎng)(后四位), IP 頭長(zhǎng)度 }; BYTE ServiceType。這個(gè)數(shù)據(jù)結(jié)構(gòu)應(yīng)該和圖 71吻合,其代碼如下: typedef struct _IP_HEADER //定義 IP 頭 { union { BYTE Version。 //設(shè)置緩沖區(qū) While(true) {recv(sock,buffer,BUFFER_SIZE,0)。因?yàn)?IP 數(shù)據(jù)包的最大長(zhǎng)度是 65536B,因此緩沖區(qū)的大小不能小于 65535B。 在程序中可使用 RECV()函數(shù)接收經(jīng)過的 IP 包。 如果接收的數(shù)據(jù) 包中的協(xié)議類型和定義的原始套接字匹配,那么接收到的數(shù)據(jù)就拷貝到套接字中。dwBufferLen,Sizeof(dwBufferLen),amp。 WSAIoctl(SnifferSocket,IORCVALL,amp。 DWORD dwBufferInLen=1。最后使用 bind()函數(shù)將 socket 綁定到本地網(wǎng)卡上。 填寫 sockaddr_in 的內(nèi)容時(shí),其地址值應(yīng)填寫為本機(jī) IP 地址可以通過 gethostbyname()函數(shù)獲??;端口號(hào)可以隨便填寫,但不能與系統(tǒng)沖突;協(xié)議族應(yīng)填寫為 AF_INET。 /* 綁定 socket */ bind(sock, (POSCKADDR)amp。 =AF_TNET。 /* 填充 SOCKADDR_IN 的結(jié)構(gòu)內(nèi)容 */ sockaddr_in addr_in。 /*獲取 IP 地址 */ hostent *pHostIP。 之后,使用如下代碼完成對(duì) socket 的初始化工作 /*獲取主機(jī)名 */ char hostname[128]。 沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 6 setsockopt (sock,IPPROTO_IP,IP_HDRINCL,(char*)amp。其中 flag 設(shè)置為 TRUE,并設(shè)定 IP_HDRINCL 選項(xiàng),表明用戶可以親自對(duì) IP 頭進(jìn)行處理。 創(chuàng)建原始套接字后, IP 頭就會(huì)包含在接收的數(shù)據(jù)中。第四個(gè)參數(shù)為 WSAPROTOCOL_INFO位,該位可以置空,永遠(yuǎn)置 0。在這里,我們?cè)O(shè)置為SOCK_RAW,表示我們聲明的是一個(gè)原始套接字類型。 在 WSASoccet函數(shù)中,第一個(gè)參數(shù)指定通信發(fā)生的區(qū)字段, AF_INET 是針對(duì) Inter的,允許在遠(yuǎn)程主機(jī)之間通信。創(chuàng)建原始套接字的代碼如下: SOCKET sock。 1. 使用原始套接字 套接字分為三種,即流套接字( Stream Socket)、數(shù)據(jù)報(bào)套接字( Datagram Socket)和原始套接字( Raw Socket)。 本程序主要由三部分構(gòu)成:初始化原始套接字,反復(fù)監(jiān)聽捕獲數(shù)據(jù)包和解析數(shù)據(jù)包。對(duì)于其他形式 的數(shù)據(jù)包,如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)送到此地址的數(shù)據(jù)包,網(wǎng)絡(luò)接口在驗(yàn)證投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無(wú)法收取與自己無(wú)關(guān)的數(shù)據(jù)包。 四.課程設(shè)計(jì)分析 為了獲取網(wǎng)絡(luò)中的 IP 數(shù)據(jù)包,必須對(duì)網(wǎng)卡進(jìn)行編程,在這里我們使用套接字( socket)進(jìn)行編程。在使用選項(xiàng)字段的過程中,有可能出現(xiàn)報(bào)頭部分的長(zhǎng)度不是 32 位的整數(shù)倍的情況。源地址和目的地址的長(zhǎng)度都是 32 位,分別表示發(fā)送數(shù)據(jù)包的源主機(jī)和目的主機(jī)的 IP 地址。 當(dāng)收到一個(gè) IP 包時(shí),要檢查報(bào)頭是否出錯(cuò),就把報(bào)頭中的所有數(shù)據(jù)以 16 位為單位進(jìn)行累加,若累加的結(jié)果為 0,則報(bào)文沒有出錯(cuò)。 2)將報(bào)頭部分的所有數(shù)據(jù)以 16 位為單位進(jìn)行累加,累加方式是求異或。檢驗(yàn)的范圍是整個(gè) IP 包的報(bào)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1