




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
原始套接字編程課程設(shè)計(jì)報(bào)告 姓名:王延興 班級:9班 學(xué)號:54110904 原始套接字編程課程設(shè)計(jì)報(bào)告班級:11級9班學(xué)號:54110904姓名:王延興一、 設(shè)計(jì)任務(wù)分析(一)實(shí)驗(yàn)環(huán)境操作系統(tǒng):Windows編程工具及集成開發(fā)環(huán)境:VC+(二)實(shí)驗(yàn)?zāi)康暮鸵髮?shí)驗(yàn)?zāi)康模赫莆赵继捉幼志幊?。?shí)驗(yàn)要求:完成下列功能:(1)利用RAW SOCKET捕獲網(wǎng)絡(luò)數(shù)據(jù)包的程序模型SOCKET_STREAM 流式套接字 SOCKET_DGRAM SOCKET_RAW 原始套接字 IPPROTO_IP IP協(xié)議 IPPROTO_ICMP INTERNET控制消息協(xié)議,配合原始套接字可以實(shí)現(xiàn)ping的功能 IPPROTO_IGMP INTERNET 網(wǎng)關(guān)服務(wù)協(xié)議,在多播中用到在AF_INET地址族下,有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW三種套接字類型。SOCK_STREAM也就是通常所說的TCP,而SOCK_DGRAM則是通常所說的UDP,而SOCK_RAW則是用于提供一些較低級的控制的;第3個(gè)參數(shù)依賴于第2個(gè)參數(shù),用于指定套接字所用的特定協(xié)議,設(shè)為0表示使用默認(rèn)的協(xié)議。 RAW SOCKET能夠?qū)^低層次的協(xié)議直接訪問,網(wǎng)絡(luò)監(jiān)聽技術(shù)很大程度上依賴于它。(2)能夠抓取第二節(jié)課的并發(fā)服務(wù)器程序的服務(wù)器端或客戶端的應(yīng)用層數(shù)據(jù),即:時(shí)間值,打印輸出。2、 設(shè)計(jì)方案同一臺主機(jī)不同進(jìn)程可以用進(jìn)程號來唯一標(biāo)識,但是在網(wǎng)絡(luò)環(huán)境下進(jìn)程號并不能唯一標(biāo)識該進(jìn)程。TCP/IP主要引入了網(wǎng)絡(luò)地址、端口和連接等概念來解決網(wǎng)絡(luò)間進(jìn)程標(biāo)識問題。套接字(Socket)是一個(gè)指向傳輸提供者的句柄,TCP/IP協(xié)議支持3種類型的套接字,分別是流式套接字、數(shù)據(jù)報(bào)式套接字和原始套接字。流式套接字(SOCKET_STREAM)提供了面向連接、雙向可靠的數(shù)據(jù)流傳輸服務(wù)。數(shù)據(jù)報(bào)式套接字(SOCKET_ DGRAM)提供了無連接服務(wù),不提供無錯(cuò)保證。原始套接字(SOCKET_RAW)允許對較低層次的協(xié)議直接訪問,比如IP、 ICMP協(xié)議,它常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn),或者訪問現(xiàn)有服務(wù)中配置的新設(shè)備,因?yàn)镽AW SOCKET可以自如地控制Windows下的多種協(xié)議,能夠?qū)W(wǎng)絡(luò)底層的傳輸機(jī)制進(jìn)行控制,所以可以應(yīng)用原始套接字來操縱網(wǎng)絡(luò)層和傳輸層應(yīng)用。比如,我們可以通過RAW SOCKET來接收發(fā)向本機(jī)的ICMP、IGMP協(xié)議包,或者接收TCP/IP棧不能夠處理的IP包,也可以用來發(fā)送一些自定包頭或自定協(xié)議的IP包。網(wǎng)絡(luò)監(jiān)聽技術(shù)很大程度上依賴于SOCKET_RAW。本實(shí)驗(yàn)采用原始套接字進(jìn)行捕獲通過本主機(jī)的包并對本主機(jī)的包進(jìn)行處理。u 各個(gè)函數(shù)功能: char * GetProtocol(int proto) /獲得協(xié)議類型send(CientSocket, tmp, (int)strlen(tmp), 0);發(fā)送數(shù)據(jù)recv(CientSocket, RecvBuffer, MAX_PATH, 0);接收數(shù)據(jù)WSAStartup(MAKEWORD(2,2), &Ws) 初始化套接字類庫socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 創(chuàng)建套接字bind(ServerSocket, (struct sockaddr*)&LocalAddr, sizeof(LocalAddr);綁定套接字 listen(ServerSocket, 10);偵聽,隊(duì)列大小為10u 設(shè)計(jì)思想: 采用原始套接字進(jìn)行捕獲通過本主機(jī)的包并對本主機(jī)的包進(jìn)行處理。 3、 詳細(xì)設(shè)計(jì)頭文件ip.h:詳細(xì)代碼:/定義標(biāo)準(zhǔn)的的TCP頭和IP頭#define URG 0x20#define ACK 0x10#define PSH 0x08#define RST 0x04#define SYN 0x02#define FIN 0x01typedef struct _iphdr /定義IP首部unsigned char h_verlen; /4位首部長度+4位IP版本號unsigned char tos; /8位服務(wù)類型TOSunsigned short total_len; /16位總長度(字節(jié))unsigned short ident; /16位標(biāo)識unsigned short frag_and_flags; /3位標(biāo)志位unsigned char ttl; /8位生存時(shí)間 TTLunsigned char proto; /8位協(xié)議 (TCP, UDP 或其他)unsigned short checksum; /16位IP首部校驗(yàn)和unsigned int sourceIP; /32位源IP地址unsigned int destIP; /32位目的IP地址IP_HEADER;typedef struct _tcphdr /定義TCP首部USHORT th_sport; /16位源端口USHORT th_dport; /16位目的端口unsigned int th_seq; /32位序列號unsigned int th_ack; /32位確認(rèn)號unsigned char th_lenres; /4位首部長度/6位保留字unsigned char th_flag; /6位標(biāo)志位USHORT th_win; /16位窗口大小USHORT th_sum; /16位校驗(yàn)和USHORT th_urp; /16位緊急數(shù)據(jù)偏移量TCP_HEADER;/ 定義ICMP首部typedef struct icmp_hdrunsigned char i_type; / 類型unsigned char i_code; / 代碼unsigned short i_cksum; / 校驗(yàn)碼unsigned short i_id; / 非標(biāo)準(zhǔn)的ICMP首部 unsigned short i_seq;unsigned long timestamp;ICMP_HEADER;typedef struct udp_hdr / 8 Bytes 定義udp首部unsigned short uh_sport; unsigned short uh_dport;unsigned short uh_len;unsigned short uh_sum;UDP_HEADER;源文件: 詳細(xì)代碼:#include#include#pragma comment(lib,ws2_32)#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)struct ip / 定義IP首部 unsigned char h_verlen; / 4位首部長度,4位IP版本號 unsigned char tos; / 8位服務(wù)類型TOS unsigned short ip_length; / 16位總長度(字節(jié)) unsigned short ident; / 16位標(biāo)識 unsigned short frag_and_flags; / 3位標(biāo)志位 unsigned char ttl; / 8位生存時(shí)間 TTL unsigned char proto; / 8位協(xié)議 (TCP, UDP 或其他) unsigned short checksum; / 16位IP首部校驗(yàn)和 unsigned int sourceIP; / 32位源IP地址 unsigned int destIP; / 32位目的IP地址 ;/ 定義TCP首部 struct tcp USHORT th_sport; / 16位源端口 USHORT th_dport; / 16位目的端口 unsigned int th_seq; / 32位序列號 unsigned int th_ack; / 32位確認(rèn)號 unsigned char th_lenres; / 4位首部長度/6位保留字 unsigned char th_flag; / 6位標(biāo)志位 USHORT th_win; / 16位窗口大小 USHORT th_sum; / 16位校驗(yàn)和 USHORT th_urp; / 16位緊急數(shù)據(jù)偏移量 ;void main()int sock,bytes_recieved,fromlen;char buffer65535;struct sockaddr_in from;struct ip *ip;struct tcp *tcp;WORD wVersionRequested; /版本號WSADATA wsaData; /啟動SOCKET的int err;wVersionRequested = MAKEWORD( 2, 2 );/建立版本err = WSAStartup( wVersionRequested,&wsaData );/啟用socketif ( err != 0 ) /如果返回值不等于0,那么表示出錯(cuò),直截退出程序return;sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);bool flag=true;setsockopt(sock, IPPROTO_IP, 2 , (char*)&flag, sizeof(flag);sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); /IP設(shè)置addr.sin_port=htons(0);if(SOCKET_ERROR=bind(sock,(sockaddr *)&addr,sizeof(addr) /綁定 closesocket(sock); printf(綁定失??!); exit(0); DWORD dwBytesRet;DWORD dwVal=1;ioctlsocket(sock, SIO_RCVALL, &dwVal); /設(shè)置網(wǎng)卡為混聽模式int i=0; while(true)fromlen=sizeof(from);bytes_recieved=recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen); /接收數(shù)據(jù)i+;ip=(struct ip *)buffer; /得到ip頭if(ip-proto=6) /過濾其他協(xié)議,只留下TCP協(xié)議tcp=(struct tcp *)(buffer+(4*ip-h_verlen&0xf04); /得到tcp頭printf(Ip包字節(jié)數(shù):%dn,bytes_recieved); /打印ip數(shù)據(jù)包長度printf(源IP:%sn, inet_ntoa(*(in_addr*)&ip-sourceIP); /打印源IPprintf(目的IP:%sn, inet_ntoa(*(in_addr*)&ip-destIP); /打印目的IPprintf(源端口:%dn,ntohs(tcp-th_sport); /打印源端口printf(目的端口:%dn,ntohs(tcp-th_dport); /打印目的端口printf(TCP的數(shù)據(jù)內(nèi)容:);char* ptr=buffer+5+ 4*(tcp-th_lenres&0xf0)4|0); /計(jì)算數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國智能醫(yī)療市場需求預(yù)測及行業(yè)投資機(jī)會研究報(bào)告
- 2025-2030年中國少兒舞蹈培訓(xùn)行業(yè)運(yùn)作分析及發(fā)展動態(tài)研究報(bào)告
- 2025-2030年中國家禽養(yǎng)殖業(yè)市場發(fā)展前景及投資盈利研究報(bào)告
- 2025-2030年中國委托貸款境外融資報(bào)告
- 數(shù)學(xué)科組教研活動總結(jié)15篇
- 2025-2030年中國醫(yī)用超聲儀器行業(yè)現(xiàn)狀觀察及投資前景研究報(bào)告
- 2025-2030年中國專業(yè)音響燈光行業(yè)營銷態(tài)勢及投資策略研究報(bào)告
- 2025-2030年中國萬能發(fā)泡劑(OBSH)市場發(fā)展現(xiàn)狀及前景趨勢研究報(bào)告
- 訊盟科技面試題及答案
- 某年度動力轉(zhuǎn)向泵市場分析及競爭策略分析報(bào)告
- 國際音樂比賽參賽計(jì)劃
- 安徽省合肥八中2025屆高三最后一卷英語試題及答案
- 2025屆河北省張家口市高三第三次模擬考試地理試題(原卷版+解析版)
- 鋼筋供貨居間協(xié)議書
- 2025年山東省淄博市張店區(qū)中考數(shù)學(xué)二模試卷
- 2025屆上海市普陀區(qū)數(shù)學(xué)七下期末質(zhì)量檢測模擬試題含解析
- 2024年08月中國國新基金管理有限公司招考筆試歷年參考題庫附帶答案詳解
- 天津市部分區(qū)2023-2024學(xué)年八年級下學(xué)期期末練習(xí)道德與法治試卷
- 2024年江蘇南通機(jī)場集團(tuán)招聘筆試參考題庫含答案解析
- 高中人教物理選擇性必修二專題05 單雙桿模型-學(xué)生版
- 人民幣小學(xué)學(xué)具圖
評論
0/150
提交評論