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

正文內(nèi)容

解析ip數(shù)據(jù)包課程設(shè)計-其他專業(yè)-在線瀏覽

2025-03-24 02:28本頁面
  

【正文】 普通服務(wù) 總長度字段為 2B,它定義了以字節(jié)為單位的數(shù)據(jù)包的總長度 .IP 數(shù)據(jù)包的最大長度為65535B. 標(biāo)識字段的長度為 16 位 ,用于識別 IP 數(shù)據(jù)包的編號 .每批數(shù)據(jù)都要有一個標(biāo)識值 ,用于讓目的主機(jī)判斷新來的數(shù)據(jù)屬于哪個分組 . 報頭中的標(biāo)志字段如圖 73所示 .標(biāo)志字段共 3 位 ,最高位是 DF(do not fragment)字段的值若為 1,表示不能對數(shù)據(jù)包分片 。若 MF值為 0,表示接收到的是最后一個分片 . 片偏移字段共 13 位 ,說明分片在整個數(shù)據(jù)包中的相對位置 .片偏移值是以 8B 為單位來記數(shù)的 ,因此選擇的分片長度應(yīng)該是 8B 的整數(shù)倍 . 生存時間 (TTL)字段為 8位 ,用來設(shè)置數(shù)據(jù)包在互聯(lián)網(wǎng)絡(luò)的傳輸過程的壽命 ,通常是用一個數(shù)據(jù)包可以經(jīng)過的最多的路由器跳步數(shù)來限定的 . 協(xié)議字段為 8 位 ,表示使用此 IP 數(shù)據(jù)包的高層協(xié)議類型 ,常用的協(xié)議號如表 73 所示 . 序號 協(xié)議名稱 序號 協(xié)議名稱 1 2 4 6 8 ICMP IGMP IP inIP TCP EGP 17 41 46 89 UDP IPV6 RSVP OSPFA 沈陽理工大學(xué)課程設(shè)計專用紙 5 表 73 典型的協(xié)議號 頭校驗和字段為 16位,用于存放檢查報頭錯誤的校驗碼。校驗和按如下方法計算: 1)將頭校驗和的字段置為 0。 3)將累加的結(jié)果取反碼,就是頭校驗和。 地址字段包括源地址 和目的地址。 選項字段的長度范圍為 0~40B,主要用于控制和測試。如果出現(xiàn)這種情況,就需要通過填充位來湊齊。但是,在通常情況下,網(wǎng)絡(luò)通信的套接字程序只能響應(yīng)與自己硬件地址相匹配的數(shù)據(jù)包或是以廣播形式出發(fā)的數(shù)據(jù)包。我們要想獲取流經(jīng)網(wǎng)絡(luò)設(shè)備的所有數(shù)據(jù)包,就需要將網(wǎng)卡設(shè)置為混雜模式。下面就結(jié)合核心代碼對程序的具體實現(xiàn)進(jìn)行講解,同時使程序流程更加清晰,去掉了錯誤檢查等保護(hù)性代碼。要進(jìn)行 IP 數(shù)據(jù)包的接受與發(fā)送,應(yīng)使用原始套接字。 Sock=WSASoccet(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERRLAPPED)。第二個參數(shù)是套接字的類型, AF_INET 地址族下,有SOCK_STREAM、 SOCK_DGRAM、 SOCK_RAW 三種套接字類型。第三個參數(shù)依賴于第二個參數(shù),用于指定套接字所用的特定協(xié)議,這里使用 IP 協(xié)議。第六個參數(shù)是標(biāo)志位, WSA_FLAG_OVERRLAPPED 表明可以使用發(fā)送接收超時設(shè)置,本課程設(shè)計也可以把這個標(biāo)志位設(shè)置為 NULL,因為本設(shè)計不用考慮超時情況。然后,我們可以設(shè)置 IP 頭操作選項,調(diào)用 sotscockpot 函數(shù)。 BOOL flag=true。flag,sizeof(flag))。 gethostname(hostname, 100)。 pHostIP=gethostbyname(hostname)。 = *(in_addr*)pHostIPh_addr_list[0]。 =htons(6000)。addr_in,sizeof(addr_in))。注意,sockaddr_in 結(jié)構(gòu)的值必須是以網(wǎng)絡(luò)字節(jié)順序表示的值,而不能直接使用本機(jī)字節(jié)順序的值,使用 htoms()函數(shù)可以將無符號短整型的主機(jī)數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)的順序的數(shù)據(jù)。 綁定網(wǎng)卡后,需要 WSAIoctl()函數(shù)把網(wǎng)卡設(shè)置為混雜模式,使網(wǎng)卡能夠接收所有網(wǎng)絡(luò)數(shù)據(jù),其關(guān)鍵代 碼如下: define SIO_RCVALL_WSAIOW(IOC_VENDOR,1) DWORD dwBufferLen[10]。 DWORD dwBytesReturned=0。dwBufferInLen,sizeof(dwBufferInLen),amp。dwByteReturned,NULL,NULL)。因此,網(wǎng)卡就可以接收所有經(jīng)過的 IP 包。該函數(shù)有四個參數(shù),第一個參數(shù)接收操作所用的套接字描述符;第二個參數(shù)接收到緩沖區(qū)的地址;第二個參數(shù)接收緩沖區(qū)的地址;第三個參數(shù)接收緩沖區(qū)的大小,也就是所要接收的字節(jié)數(shù);第四個參數(shù)是一個附加標(biāo)志,如果對所發(fā)送的數(shù)據(jù)沒特殊要求,直接設(shè)為 0。設(shè)置緩沖區(qū)后,可利用 循環(huán)來反復(fù)監(jiān)聽接收 IP 包,用recv()函數(shù)接收功能的代碼如下: dedine BUFFER_SIZE 65535 Char buffer[BUFFER_SIZE]。 //j 接收數(shù)據(jù)包 …….. 沈陽理工大學(xué)課程設(shè)計專用紙 7 IP 頭部的數(shù)據(jù)結(jié)構(gòu) 程序需要定義一個數(shù)據(jù)結(jié)構(gòu)表示 IP 頭部。 //版本前 4 位 BYTE HdrLen。//服務(wù)類型 WORD TotalLen。 //標(biāo)識 union { WORD Flags。 //分段偏移 }。 //生命期 BYTE Protiocol。 //頭校驗和 DWORD SrcAddr。 //選項 }IP_HEADER。在捕獲 IP 數(shù)據(jù)包后,可以通過指針把緩沖區(qū)的內(nèi)容強(qiáng)制轉(zhuǎn)化為 IP_HEADER 數(shù)據(jù)結(jié)構(gòu)。 包的解析 解析 IP 包的字段有兩種策略。要解析長度不是 9位倍數(shù)的字段(或子 字段)時,可以利用 C語言中的位移以及與、或操作完成。 /*獲取版本字段 */ 4。 0x0f。 /*獲取服務(wù)類型字段中的 TOS 子域 */ (1)amp。 /*獲取總長度字段 */ 沈陽理工大學(xué)課程設(shè)計專用紙 8 。 /*解析標(biāo)識字段 */ DF=(14) amp。 MF=(13) amp。 /*獲取分段偏移字段 */ amp。 /*獲取生存時間字段 */ 。 /*獲取頭校驗和字段 */ 。 /*解析目的的 IP 地址字段 */ i_ntoa(*(in_addr*)amp。 圖 74 給出一個供參考的程序流程圖。 BYTE HdrLen。 BYTE ServiceType。 WORD ID。 WORD Fragoff。 沈陽理工大學(xué)課程設(shè)計專用紙 9 BYTE TimeToLive。 WORD HdrChksum。 DWORD DstAddr。 }IP_HEADER。 version) { version =b4。 result) { result = (b amp。 } char * parseServiceType_getProce
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1