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

正文內(nèi)容

網(wǎng)絡(luò)抓包與協(xié)議分析軟件的設(shè)計(jì)與開發(fā)_畢業(yè)設(shè)計(jì)論文(已改無錯(cuò)字)

2022-10-08 09:17:59 本頁(yè)面
  

【正文】 也就是說,相對(duì)用戶數(shù)據(jù)字段的起點(diǎn),該片從何處開始。片偏移以 8個(gè)字節(jié)為偏移單位,這就是說,每個(gè)分片的長(zhǎng)度一定是 8 字節(jié)( 64 位)的整數(shù)倍。 12 生存時(shí)間: 8 位,生存時(shí)間字段常用的的英文縮寫是 TTL( Time To Live),表明是數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的壽命。由發(fā)出數(shù)據(jù)報(bào)的源點(diǎn)設(shè)置這個(gè)字段,其目的是防止無法交付的數(shù)據(jù)報(bào)無限制地在因特網(wǎng)中兜圈子,因而白白消耗網(wǎng)絡(luò)資源。最初的設(shè)計(jì)是以秒作為TTL 的單位。每經(jīng)過一個(gè)路由器時(shí),就把 TTL 減去數(shù)據(jù)報(bào)在路由器消耗掉的一段時(shí)間。若數(shù)據(jù)報(bào)在路由器消耗的時(shí)間小于 1 秒,就把 TTL 值減 1。當(dāng) TTL 值為 0時(shí),就丟棄這個(gè)數(shù)據(jù)報(bào)。一般可以理解為經(jīng)過路由器的最大數(shù)目。 協(xié)議: 8位。協(xié)議字段指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)是使用何種協(xié)議(上層協(xié)議),以便使目的主機(jī)的 IP層知道應(yīng)將數(shù)據(jù)部分上交給哪個(gè)處理過程。協(xié)議可包括 TCP、 UDP、TELNET 等, 1=ICMP,6=TCP,17=UDP。 首部校驗(yàn)和: 16 位,首部檢驗(yàn)和字段是根據(jù) IP 首部計(jì)算的檢驗(yàn)和碼,它不對(duì)首部后面的數(shù)據(jù)進(jìn)行計(jì)算。 ICMP, UDP, TCP在它們各自的首部中均含有同時(shí)覆蓋首部和數(shù)據(jù)檢驗(yàn)和碼。為了計(jì)算一份數(shù)據(jù)報(bào)的 IP 檢驗(yàn)和,首先把檢驗(yàn)和字段置為 0,然 后對(duì)首部中每個(gè) 16bit 進(jìn)行二進(jìn)制反碼求和(整個(gè)首部看成是由一串 16 bit 的字組成),結(jié)果存在檢驗(yàn)和字段中。當(dāng)收到一份 IP 數(shù)據(jù)報(bào)后,同樣對(duì)首部中每個(gè) 16 bit 進(jìn)行二進(jìn)制反碼的求和。由于接收方在計(jì)算過程中包含了發(fā)送方存在首部中的檢驗(yàn)和,因此,如果首部在傳輸過程中沒有發(fā)生任何差錯(cuò),那么接收方計(jì)算的結(jié)果應(yīng)該為全 1,如果結(jié)果不是全 1(即檢驗(yàn)和錯(cuò)誤),那么 IP就丟棄收到的數(shù)據(jù)報(bào),但是不生成差錯(cuò)報(bào)文,由上層去發(fā)現(xiàn)丟失的數(shù)據(jù)報(bào)并進(jìn)行重傳。 源 IP 地址: 32位,發(fā)送 IP 的主機(jī)地址 。 目的 IP 地址: 32 位,數(shù)據(jù)發(fā)往的 IP 主機(jī)地址。 UDP 數(shù)據(jù)包的封裝 UDP 是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議 [8],進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè) UDP 數(shù)據(jù)報(bào),并組裝成一份待發(fā)送的 IP 數(shù)據(jù)報(bào)。 UDP 數(shù)據(jù)報(bào)格式有首部和數(shù)據(jù)兩個(gè)部分 ,如圖 32: 13 圖 32 UDP數(shù)據(jù)報(bào)格式 首部很簡(jiǎn)單,共 8字節(jié) ,如圖 33: 圖 33 UDP首部 包括: 源端口( Source Port): 2字節(jié),源端口號(hào)。 目的端口( Destination Port ): 2 字節(jié),目的端口號(hào)。 長(zhǎng)度( Length): 2字節(jié), UDP 用戶數(shù)據(jù)報(bào)的總長(zhǎng)度,以字 節(jié)為單位。 檢驗(yàn)和( Checksum): 2字節(jié),用于校驗(yàn) UDP數(shù)據(jù)報(bào)的數(shù)字段和包含 UDP 數(shù)據(jù)報(bào)首部的“偽首部”。盡管 UDP 校驗(yàn)和的基本計(jì)算方法與 IP 首部校驗(yàn)和的計(jì)算方法類似( 16bit字的二進(jìn)制反碼和),但是它們之間存在不同的地方, UDP 數(shù)據(jù)報(bào)長(zhǎng)度可以為奇數(shù)字節(jié),但是校驗(yàn)和的算法是把若干個(gè) 16bit字相加。解決方法是必要時(shí)在最后增加填充字節(jié) 0,這只是為了校驗(yàn)和的計(jì)算(也就是說,可能增加的填充字節(jié)不被傳送)。 UDP 數(shù)據(jù)報(bào)和 TCP 段都包含一個(gè) 12字節(jié)長(zhǎng)的偽首部,它是為了計(jì)算校驗(yàn)和而設(shè)置的。偽首部包含 IP首部一 些字段,其目的是讓 UDP 兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地(例如, IP 有沒有接受地址不是本主機(jī)的數(shù)據(jù)報(bào),以及 IP有沒有把應(yīng)傳給另一高層的數(shù)據(jù)報(bào)傳送給 UDP)。 UDP 數(shù)據(jù)報(bào)中的偽首部格式如圖 34所示: 14 圖 34 UDP數(shù)據(jù)報(bào)的偽首部格式 TCP 數(shù)據(jù)包的封裝 TCP 數(shù)據(jù)被封裝在一個(gè) IP數(shù)據(jù)報(bào)中 [8],如圖 35所示: 圖 35 TCP數(shù)據(jù)在 IP數(shù)據(jù)報(bào)中的封裝 圖 36 顯示 TCP 首部的數(shù)據(jù)格式。如果不計(jì)任選字段,它通常是 20個(gè)字節(jié)。 圖 36 TCP 包首部 15 ICMP 數(shù)據(jù)包的封 裝 IP 協(xié)議提供的是面向無連接的服務(wù),不存在關(guān)于網(wǎng)絡(luò)連接的建立和維護(hù)過程,也不包括流量控制與差錯(cuò)控制功能 ,但需要對(duì)網(wǎng)絡(luò)的狀態(tài)有一些了解,因此在網(wǎng)際層提供了因特網(wǎng)控制消息協(xié)議( Inter control message protocol,簡(jiǎn)稱 ICMP)來檢測(cè)網(wǎng)絡(luò),包括路由、擁塞、服務(wù)質(zhì)量等問題。在網(wǎng)絡(luò)中, ICMP 報(bào)文將作為 IP 層數(shù)據(jù)報(bào)的數(shù)據(jù),封裝在 IP 數(shù)據(jù)報(bào)中進(jìn)行傳輸,如圖 37所示 ,但 ICMP 并不是高層協(xié)議,而仍被視為網(wǎng)絡(luò)層協(xié)議。 圖 37 ICMP數(shù)據(jù)在 IP數(shù)據(jù)報(bào)中的封裝 ICMP 報(bào)文的類型很多 ,且各自又有各自的代碼,因此, ICMP 并沒有一個(gè)統(tǒng)一的報(bào)文格式,不同的 ICMP 類別分別有不同的報(bào)文字段。 ICMP 報(bào)文只是在前 4個(gè)字節(jié)有統(tǒng)一的格式,共有類型、代碼和校驗(yàn)和 3 個(gè)字段。如圖 38 所示。 圖 38 ICMP報(bào)文的格式 其中類型字段表示 ICMP 報(bào)文的類型;代碼字段是為了進(jìn)一步區(qū)分某種類型的幾種不同情況;校驗(yàn)和字段用來檢驗(yàn)整個(gè) ICMP 報(bào)文,接著的 4個(gè)字節(jié)的內(nèi)容與 ICMP 的類型有關(guān),再后面是數(shù)據(jù)字段,其長(zhǎng)度取決于 ICMP 的類型。 16 4 實(shí)現(xiàn)與分析 WinPcap 環(huán)境配置 WinPcap 下載 從 下載 winpcap 的開發(fā)庫(kù) 從 下載 winpcap 驅(qū)動(dòng) WinPcap 配置 1) 安裝 WinPcap 驅(qū)動(dòng),安裝完成后重啟電腦。 2) 解壓下載的 WinPcap 開發(fā)包,將 Include 文件夾里的文件全部復(fù)制到 VC 目錄下的 Include 文件夾中,同理復(fù)制開發(fā)包中 Lib 文件夾中的文件到 VC 目錄下的 Lib 文件夾中。 3) 把 WinPcap 的靜態(tài)鏈接庫(kù) 添加到 VC++中,步驟如下:進(jìn)入 VC++中,選取“工程”按鈕,選取“設(shè)置”,點(diǎn)擊“ LINK”標(biāo)簽,在“對(duì)象 /庫(kù)模塊”下添加 。至此 WinPcap 的環(huán)境配置完成。 程序的實(shí)現(xiàn) 網(wǎng)絡(luò)數(shù)據(jù)捕獲的基本流程 一個(gè)完整的基于 WinPcap 的網(wǎng)絡(luò)數(shù)據(jù)捕獲程序應(yīng)由兩部分組成 [9]:內(nèi)核部分和用戶分析部分。其中內(nèi)核部分負(fù)責(zé)從網(wǎng)絡(luò)中捕獲和過濾數(shù)據(jù),這可以通過調(diào)用 WinPcap 豐富的接口函數(shù)實(shí)現(xiàn)。用戶分析部分主要負(fù)責(zé)界面、數(shù)據(jù)轉(zhuǎn)化與處理、格式化、協(xié)議分析等。實(shí)現(xiàn)流程如圖 41所示。 17 圖 41 基于 WinPcap的網(wǎng)絡(luò)數(shù)據(jù)捕獲基本流程 簡(jiǎn)單地說來就是打開網(wǎng)卡 ,抓包 ,分析包 。 獲取網(wǎng)卡信息 include void main() { pcap_if_t *alldevs。 pcap_if_t *d。 int i=0。 char errbuf[PCAP_ERRBUF_SIZE]。 /*未獲取網(wǎng)卡,返回網(wǎng)卡列表, alldevs 指向表頭 */ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, amp。alldevs, errbuf) == 1) { fprintf(stderr,Error in pcap_findalldevs: %s\n, errbuf)。 exit(1)。 } 18 /*打印列表 */ for(d=alldevs。d。d=dnext) { printf(%d. %s, ++i, dname)。 if (ddescription) printf( (%s)\n, ddescription)。 else printf( (No description available)\n)。 } if(i==0) { printf(\nNo interfaces found! Make sure WinPcap is installed.\n)。 return。 } /*不需要網(wǎng)卡列表,釋放空間 */ pcap_freealldevs(alldevs)。 } 捕獲數(shù)據(jù)包 /*打開設(shè)備 */ if((adhandle=pcap_open (dname, // 設(shè)備名 65536,//保證能捕獲到數(shù)據(jù)鏈 路層上的每個(gè)數(shù)據(jù)包的全部?jī)?nèi)容 PCAP_OPENFLAG_PROMISCUOUS, // 混雜模式 1000, // 讀取超時(shí)時(shí)間 NULL, // 遠(yuǎn)程機(jī)器驗(yàn)證 errbuf // 錯(cuò)誤緩沖池 ))==NULL) /* 開始捕獲 */ pcap_loop(adhandle, 0, packet_handler, NULL)。 19 return 0。 void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) { struct tm *ltime。 char timestr[16]。 ip_header *ih。 udp_header *uh。 tcp_header *th。 icmp_header *ich。 u_int ip_len。 u_short totallen。 (pkt_data)。 //把收到的包放到一個(gè)向量 myvector 里面 ltime=localtime(amp。header)。 strftime( timestr, sizeof timestr, %H:%M:%S, ltime)。 ih = (ip_header *) (pkt_data +14)。 //從包中解開 IP 頭并將其賦給 ih ip_len = (ihver_ihl amp。 0xf) * 4。 totallen = ntohs(ihtlen)。 totallen += 18。 (totallen)。//將整個(gè)包 的大小值放到一個(gè)向量 mycount 里面 PACKET *pkt = new PACKET。 strcpy(pkttimestr, timestr)。 memcpy(amp。(pktIpHead), ih, sizeof(ip_header))。 if(int(ihproto) == 17) //如果是 UDP 包就從解開 UDP 頭并將其賦給 uh { uh = (udp_header *) ((u_char*)ih + ip_len)。 memcpy(amp。(pktUdpHead), uh, sizeof(udp_header))。 } if(int(ihproto) == 6) //如果是 TCP 包就從解開 TCP 頭并將其賦給 th 20 { th = (tcp_header *)((u_char*)ih + ip_len)。 memcpy(amp。(pktTcpHead), th, sizeof(tcp_header))。 } if(int(ihproto) == 1) //如果是 ICMP 包就從解開 ICMP 頭并將其賦給 ich { ich = (icmp_header *)((u_char*)ih + ip_len)。 memcpy(amp。(pktIcmpHead), ich, sizeof(icmp_header))。 } } 分析數(shù)據(jù)包 這里列舉 UDP 包的分析實(shí)現(xiàn)代碼: char ip_len[8] = 。 //IP 頭長(zhǎng), 8bits char szLen[8] = 。 //總長(zhǎng), 8bits char identifier[16] = 。 //標(biāo)識(shí), 16bits char offset[12] = 。 //分段偏移, 12bits char live[8] = 。 //生命周期, 8bits char proto[8] = 。 //協(xié)議, 8bits char checksum[16] = 。 //首部檢驗(yàn)和, 16bits char srcIP[16] = 。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1