![[計(jì)算機(jī)]發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī)報(bào)告及源代碼_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7c2f0157-f60c-4c57-88e9-198666f04aff/7c2f0157-f60c-4c57-88e9-198666f04aff1.gif)
![[計(jì)算機(jī)]發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī)報(bào)告及源代碼_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7c2f0157-f60c-4c57-88e9-198666f04aff/7c2f0157-f60c-4c57-88e9-198666f04aff2.gif)
![[計(jì)算機(jī)]發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī)報(bào)告及源代碼_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7c2f0157-f60c-4c57-88e9-198666f04aff/7c2f0157-f60c-4c57-88e9-198666f04aff3.gif)
![[計(jì)算機(jī)]發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī)報(bào)告及源代碼_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7c2f0157-f60c-4c57-88e9-198666f04aff/7c2f0157-f60c-4c57-88e9-198666f04aff4.gif)
![[計(jì)算機(jī)]發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī)報(bào)告及源代碼_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7c2f0157-f60c-4c57-88e9-198666f04aff/7c2f0157-f60c-4c57-88e9-198666f04aff5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄 一課程設(shè)計(jì)目的2二. 課程設(shè)計(jì)要求2三相關(guān)知識(shí)2四課程設(shè)計(jì)分析4五程序流程圖7六程序運(yùn)行結(jié)果截圖10七. 課程設(shè)計(jì)心得10八.附錄:參考文獻(xiàn) 11一課程設(shè)計(jì)目的: ip協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)潔,但缺少差錯(cuò)控制和查詢機(jī)制,而網(wǎng)際控制報(bào)文協(xié)議(icmp)具有補(bǔ)充ip功能的作用。在網(wǎng)絡(luò)管理中,常常要確定當(dāng)前網(wǎng)絡(luò)中處于活動(dòng)狀態(tài)的主機(jī),這時(shí)可以通過使用icmp的回送和回送響應(yīng)消息來完成這項(xiàng)工作。本課程設(shè)計(jì)的目的就是編制程序,利用icmp數(shù)據(jù)包,發(fā)現(xiàn)指定網(wǎng)段中的活動(dòng)主機(jī)。通過課程設(shè)計(jì),使學(xué)生更加熟悉icmp報(bào)文的結(jié)構(gòu),對(duì)icmp協(xié)議有更好的理解和認(rèn)識(shí)。二課程設(shè)計(jì)要求: 設(shè)計(jì)程序,其功能是發(fā)送icmp數(shù)據(jù)包
2、,以獲取指定網(wǎng)段中的活動(dòng)主機(jī),并將結(jié)果顯示在標(biāo)準(zhǔn)輸出上。 程序的具體要求如下:1) 用命令行形式運(yùn)行: scanhost start_ip end_ip其中scanhost為程序名;start_ip為被搜索網(wǎng)段的開始ip地址;end_ip為被搜索網(wǎng)段的結(jié)束ip地址。2)輸出格式為: 活動(dòng)主機(jī)1 活動(dòng)主機(jī)2 三相關(guān)知識(shí):編制程序前首先要對(duì)icmp報(bào)文的格式有一定的了解,icmp報(bào)文是在ip數(shù)據(jù)報(bào)內(nèi)部傳輸?shù)?,其結(jié)構(gòu)如圖10-1所示: ip數(shù)據(jù)報(bào) ip首部 icmp報(bào)文icmp報(bào)文的格式如圖10-2所示:0 7 8 15 16 31(位)類型字段代碼字段校驗(yàn)和字段(不同類型和代碼有不同內(nèi)容)所有報(bào)文
3、的前4個(gè)字節(jié)都是一樣的,但是其它字節(jié)則互不相同。其中類型字段可以有15個(gè)不同的值,以描述特定類型的icmp報(bào)文,某些icmp報(bào)文還使用代碼字段的值來進(jìn)一步描述不用的條件。按驗(yàn)和字段為2字節(jié),校驗(yàn)的范圍是整個(gè)icmp報(bào)文。檢驗(yàn)和是必須的,其計(jì)算方法與ip協(xié)議頭部校驗(yàn)和的計(jì)算方法一樣。 各種類型的icmp報(bào)文如圖10-3所示(icmp報(bào)文類型),不同類型由報(bào)文中的類型字段和代碼字段來共同決定。類 型 代 碼 描 述 0 0 回送響應(yīng)(ping應(yīng)答)3 目的不可達(dá)0 網(wǎng)絡(luò)不可達(dá)1 主機(jī)不可達(dá)2 協(xié)議不可達(dá)3 端口不可達(dá)4 需要進(jìn)行分片但設(shè)置了禁止分片比特5 源主機(jī)選擇路由失敗6 無法識(shí)別目的網(wǎng)絡(luò)7
4、無法識(shí)別目的主機(jī)8 源主機(jī)被隔離9 目的網(wǎng)絡(luò)被禁止10 目的主機(jī)被禁止11 由于服務(wù)類型(tos),網(wǎng)絡(luò)不可達(dá)12 由于服務(wù)類型(tos),主機(jī)不可達(dá)13 由于過濾,通信被強(qiáng)行禁止14 主機(jī)越權(quán)15 優(yōu)先權(quán)終止生效 4 0 源端被關(guān)閉(基本流控制)5 重定向0 對(duì)網(wǎng)絡(luò)重定向1 對(duì)主機(jī)重定向2 對(duì)服務(wù)類型和網(wǎng)絡(luò)重定向3 對(duì)服務(wù)類型和主機(jī)重定向 8 0 回送請(qǐng)求(ping請(qǐng)求)9 0 路由器通告10 0 路由器請(qǐng)求11 超時(shí)0 傳輸期間生存期減為01 數(shù)據(jù)報(bào)組裝期間生存期減為012 參數(shù)問題0 各種ip頭部錯(cuò)誤1 缺少必須的選項(xiàng)13 0 時(shí)間戳請(qǐng)求14 0 時(shí)間戳應(yīng)答15 0 信息請(qǐng)求(已作廢)1
5、6 0 信息應(yīng)答(已作廢)17 0 地址掩碼請(qǐng)求18 0 地址掩碼應(yīng)答10-3 icmp報(bào)文類型本課程設(shè)計(jì)的目的是發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī),就是使用icmp的回送和回送響應(yīng)消息發(fā)現(xiàn)網(wǎng)絡(luò)中的活動(dòng)主機(jī),即ping消息的請(qǐng)求和應(yīng)答。那幺,發(fā)送的icmp的數(shù)據(jù)包類型設(shè)置為回送請(qǐng)求(類型號(hào)為8)。四課程設(shè)計(jì)分析: 本程序使用原始套接字生成icmp報(bào)文來進(jìn)行活動(dòng)主機(jī)的探查。這個(gè)程序使用的是回送請(qǐng)求與應(yīng)答消息。程序的大致思想是把icmp的數(shù)據(jù)包類型設(shè)置為回送請(qǐng)求,將它發(fā)送給網(wǎng)絡(luò)上的一個(gè)ip地址,如果這個(gè)ip地址已經(jīng)被占用的話,那幺使用位于這個(gè)ip地址的主機(jī)上的tcp/ip軟件就能夠接收到這個(gè)icmp回送請(qǐng)求,從
6、而返回一個(gè)icmp回送響應(yīng)(類型號(hào)為0)信息。信息封裝在一個(gè)ip包中,我們需要解析該ip包,從中找到icmp數(shù)據(jù)信息。相反,如果這個(gè)ip地址沒有人使用,那幺發(fā)送的icmp回送請(qǐng)求在設(shè)定的延時(shí)內(nèi)就不可能得到響應(yīng)。 在初始化原始套接字之后,本程序就要開始在一個(gè)ip網(wǎng)段內(nèi)尋找活動(dòng)主機(jī)。因?yàn)橐獙ふ业闹鳈C(jī)可能很多,為節(jié)省時(shí)間可以采用多線程編程。下面接結(jié)合核心代碼對(duì)程序的具體實(shí)現(xiàn)進(jìn)行講解,同時(shí)為使程序流程更加清晰,去掉了錯(cuò)誤檢查等保護(hù)性代碼。1.使用原始套接字 為了實(shí)現(xiàn)發(fā)送/監(jiān)聽icmp報(bào)文,必須使用原始套接字,創(chuàng)建原始套接字的代碼如下: socket sockraw; sockraw = wsaocke
7、t (af_inet, sock_raw, ipproto_icmp, null, 0, wsa_flag_overlapped); 在wsasocket函數(shù)中,我們使用ipproto_icmp表示接收icmp數(shù)據(jù)包,為了使用發(fā)送超時(shí)設(shè)置(設(shè)置so_rcvtimeo或so_sndtimeo),必須將標(biāo)志位置為wsa_flag_overlapped。然后調(diào)用setsockopt函數(shù)設(shè)置讀取延遲。 int timeout=1000;setsockopt(sockraw,sql_socket,so_rcvtimeo,(char*)&timeout,sizeof(timeout);setsockopt
8、(sockraw,sql_socket,so_sndtimeo,(char*)&timeout,sizeof(timeout) 在setsockopt函數(shù)中,sockraw是之前創(chuàng)建的原始套接字,設(shè)置sql_socket表明使用基本套接字處理icmp報(bào)文。設(shè)置so_rcvtimeo表示使用接收超時(shí)設(shè)置,so_sndtimeo表示使用發(fā)送超時(shí)設(shè)置,在這里,超時(shí)時(shí)間均設(shè)置為1000ms。 2定義ip頭部和icmp頭部的數(shù)據(jù)結(jié)構(gòu) 由于socket發(fā)送/捕獲的是ip包,因此要分別定義ip頭部的數(shù)據(jù)結(jié)構(gòu)icmp頭部數(shù)據(jù)結(jié)構(gòu)。 /ip報(bào)頭的數(shù)據(jù)結(jié)構(gòu) typedef struct iphdrunsigned
9、 int headlen:4; /ip頭長(zhǎng)度unsigned int version:4; /ip版本號(hào)unsigned char tos; /服務(wù)類型unsigned short totallen; /ip包總長(zhǎng)度 unsigned short id; /id號(hào)unsigned short flag; /標(biāo)記unsigned char ttl; /生存時(shí)間unsigned char prot; /協(xié)議(udp tcp)nsigned short checksum; /校驗(yàn)和unsigned int sourceip; /源ipunsigned int destip; /目的ipipheade
10、r;/icmp頭部的數(shù)據(jù)結(jié)構(gòu)typedef struct icmphdr byte type; /icmp類型碼,回送請(qǐng)求的類型碼為8 byte code; /子類型碼,保存與特定icmp報(bào)文類型相關(guān)細(xì)節(jié)信息 ushort checksum; /校驗(yàn)和 ushort id; /icmp報(bào)文id號(hào)(一般用進(jìn)程號(hào)作id) ushort seq; /icmp數(shù)據(jù)報(bào)的序列號(hào)icmpheader;3填充并發(fā)送回送請(qǐng)求類型的icmp報(bào)文 為了使收到數(shù)據(jù)包的目的主機(jī)發(fā)送響應(yīng),我們需要向目的主機(jī)發(fā)送回送請(qǐng)求類型的icmp報(bào)文。從圖10-3中可知,回送請(qǐng)求的類型號(hào)為8。因此icmp報(bào)文的填充代碼如下:#defi
11、ne icnp_echo 8 /請(qǐng)求回送#define def_packet_size 32 /缺省數(shù)據(jù)報(bào)長(zhǎng)度#define max_packet 1024 /最大數(shù)據(jù)塊長(zhǎng)度char icmp_datamax_packet; /icmp數(shù)據(jù)報(bào)最大可能的長(zhǎng)度memset(icmp_data,0,max_packet); /將數(shù)據(jù)報(bào)清空初始化int datasize=def_packet_size; /icmp數(shù)據(jù)報(bào)報(bào)文體的缺省長(zhǎng)度datasize+=sizeof(icmpheader); /再加上icmp頭部的長(zhǎng)度icmpheader*icmp_hdr:char *datapart;icmp_h
12、dr = (icmpheader*)icmp_data;icmp_hdr-type = icmp_echo; /設(shè)置類型icmp_hdr-id = (ushort)getcurrentthreadid(); /設(shè)置其id號(hào)為當(dāng)前線程號(hào)datapart = icmp_data + sizeof(icmpheader); /計(jì)算出數(shù)據(jù)報(bào)的數(shù)據(jù)部分memset(datapart,a,datasize-sizeof(icmpheader); /填入數(shù)據(jù)(icmpheader*)icmp_data)-seq= 0; /序列號(hào)為0(icmpheader*)icmp_data)-checksum = 0;
13、/先將校驗(yàn)和置0(icmpheader*)icmp_data)-checksum = checksum(ushort*)icmp_data,datasize);checksum為校驗(yàn)和的函數(shù),設(shè)校驗(yàn)和初值為0 ,然后對(duì)數(shù)據(jù)每16為求異或,結(jié)果取反,便得校驗(yàn)和。其代碼如下: ushort checksum(ushort *buffer, int size) 計(jì)算校驗(yàn)和 unsigned long cksum = 0; while(size1) cksum+=*buffer+; size -=sizeof(ushort);if(size) cksum += (uchar*)buffer; cksu
14、m = (cksum 16)+(cksum & 0xffff);cksum +=(cksum 16);return(ushort)(-cksum); 填充icmp報(bào)文之后,應(yīng)在icmp報(bào)文之前加上ip報(bào)頭并發(fā)送出去??烧{(diào)用下面的代碼發(fā)送數(shù)據(jù)包。注意,這里的dest是填入目的主機(jī)ip地址的一個(gè)sockaddr_in數(shù)據(jù)結(jié)構(gòu),ipstring是目的主機(jī)的ip地址字符串。 struct sockaddr_in dest; dest.sin_family = af_inet; dest.sin_addr.s_addr = inet_addr(ip_string); /填入搜索的ip地址 sendto(
15、sockraw,icmp_data,datasize,0,(sockaddr*)&dest,sizeof(dest);4.解析數(shù)據(jù)包如果所ping的目的主機(jī)所在,那么它會(huì)發(fā)送一個(gè)回送應(yīng)答包。這是一個(gè)ip包,收到后解析此數(shù)據(jù)包并獲取其中的icmp信息。根據(jù)ip報(bào)頭信息中的ip報(bào)頭長(zhǎng)度字段,就可以得到icmp報(bào)文的真實(shí)地址。icmp數(shù)據(jù)包中的ip地址就是活動(dòng)主機(jī)的ip。代碼如下: #define icmp_min 8 /icmp報(bào)文頭長(zhǎng)度(最小icmp報(bào)文長(zhǎng)度) #define max_ping_packet_size (max_packet + sizeof(ipheader) char *re
16、cvbuf=new charmax_ping_packet_size; /保證大與發(fā)送包的大小 /from是一個(gè)sockaddr_in數(shù)據(jù)結(jié)構(gòu),用于保存響應(yīng)的目的的主機(jī)的地址 struct sockaddr_in from; int fromlen = sizeof(from); int bytes = recvfrom(sockraw,recvbuf,max_packet, 0,(struck sockaddr*)&from),&fromlen); ipheader *iphdr; icmpheader *icmphdr; unsigned short iphdrlen; iphdr=(ip
17、header *)buf; iphdrlen = iphdr-headlen*4 ; /ip報(bào)頭的長(zhǎng)度 icmphdr=(icmpheader *)(buf+iphdrlen); /跳過ip報(bào)頭 /數(shù)據(jù)包太短,丟棄 if(bytestype !=icmp_echo_reply) return; /id號(hào)不相符,丟棄 if(icmphdr-id!=(ushot)getcurrentthreadid() return; /輸出正在使用的ip地址。 cout”活動(dòng)主機(jī):”sin_addr)endl;五程序流程圖:一個(gè)用多線程實(shí)現(xiàn)的程序在第三部分中給出(課程設(shè)計(jì)分析中的第三部分),以下分別是子程序流程
18、圖和主程序流程圖(程序見附錄):1子程序流程圖:開 始填充icmp數(shù)據(jù)報(bào)發(fā)送數(shù)據(jù)報(bào)接收數(shù)報(bào)去掉ip報(bào)頭,獲取icmp信息數(shù)據(jù)包太短? y n不是回送響應(yīng)? y nid不符合? y n輸出數(shù)據(jù)報(bào)中的ip地址 結(jié) 束 圖1.子程序流程圖2主程序流程圖:開 始將start_ip添入到dest中起始ip地址start_ip結(jié)束ip地址end_ip建立并初始化目的主機(jī)的sockaddr_in數(shù)據(jù)結(jié)構(gòu)dest構(gòu)造原始套接字,并初始化start_ipend_ip? n y y線程數(shù)目太多?等待一定時(shí)間 n創(chuàng)建一個(gè)線程并執(zhí)行start_ip+ y 還有線程在執(zhí)行?等待一定時(shí)間 n結(jié) 束 圖2.主程序流程圖六程
19、序運(yùn)行結(jié)果截圖: 圖3.運(yùn)行結(jié)果七課程設(shè)計(jì)心得:附錄:參考文獻(xiàn)1 吳功宜、胡曉英等.計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì),北京:機(jī)械工業(yè)出版社,2007.122 胡曉英等;計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì);北京:機(jī)械工業(yè)出版社,2005.93 郭國(guó)強(qiáng)等;計(jì)算機(jī)網(wǎng)絡(luò)與internet教程;北京:清華出版社,2006.114 楊豐瑞 楊豐任;實(shí)用教程最新計(jì)算機(jī)網(wǎng)絡(luò);北京:中國(guó)鐵道出版社,2001.7源代碼:#pragma pack(4)/#include stdafx.h#pragma comment (lib,ws2_32.lib)#define win32_lean_and_mean#include #include #in
20、clude #include #include #include #include typedef struct iphdrunsigned int headlen:4;unsigned int version:4;unsigned char tos;unsigned short totallen;unsigned short id;unsigned short falg;unsigned char ttl;unsigned char prot;unsigned short checksum;unsigned int sourceip;unsigned int destip;ipheader;
21、typedef struct icmphdrbyte type;byte code;ushort checksum;ushort id;ushort seg;icmpheader;#define icmp_rcho 8#define icmp_rcho_reply 0#defineicmp_min 8#define status_failed 0xffff#definedef_packet_size 32#define max_packet 1024#define max_ping_packet_size (max_packet+sizeof(ipheader)void fill_icmp_d
22、ata(char *,int);ushort checksum(ushort *,int);void decode_resp(char *,int,struct sockaddr_in *);dword winapi findip(lpvoid pipaddrtemp);wsadata wsadata;socket sockraw;struct sockaddr_in dest,from,end;int fromlen =sizeof(from);char *recvbuf=new charmax_ping_packet_size;unsigned int addr=0;long thread
23、numcounter=0,threadnumlimit=20;long *aa=&threadnumcounter;void main(int argc,char *argv)/*if(argc!=3)cout輸入格式錯(cuò)誤: start_ip end_ipendl;return;*/if(wsastartup(makeword(2,1),&wsadata)!=0)coutwasstartup failedgetlasterror()endl;exitprocess(status_failed);sockraw=wsasocket(af_inet,sock_raw,ipproto_icmp,nu
24、ll,0,wsa_flag_overlapped);if(sockraw=invalid_socket)coutwassocketet() faliedwsagetlasterror()endl;exitprocess(status_failed);int timeout=1000;int bread=setsockopt(sockraw,sol_socket,so_rcvtimeo,(char *)&timeout,sizeof(timeout);if(bread=socket_error)coutfailed to sey recv timeoutwsagetlasterror()endl
25、;exitprocess(status_failed); timeout=1000; bread=setsockopt(sockraw,sol_socket,so_sndtimeo,(char *)&timeout,sizeof(timeout); if(bread=socket_error)coutfailed to sey recv timeoutwsagetlasterror()endl;exitprocess(status_failed);memset(&dest,0,sizeof(dest);unsigned long startip,endip;dest.sin_family=af
26、_inet;dest.sin_addr.s_addr=inet_addr(argv1);startip=inet_addr(argv1);end.sin_family=af_inet;end.sin_addr.s_addr=inet_addr(argv2);endip=inet_addr(argv2);handle hthread;while(htonl(startip)threadnumlimit)sleep(5000);continue;dword threadid;sockaddr_in *pipaddrtemp=new (sockaddr_in);if(!pipaddrtemp)cou
27、tmemory alloc failedendl;return ;*pipaddrtemp=dest;clock_t start;start=clock();hthread=createthread(null,null,findip,(lpvoid)pipaddrtemp,null,&threadid);long i=60000000l;while(i-);terminatethread(hthread,0);interlockeddecrement(aa);memset(&from,0,sizeof(from);startip=htonl(htonl(startip)+1);dest.sin
28、_addr.s_addr=startip;while(threadnumcounter!=0)sleep(2000);return;couterrortype=icmp_rcho;icmp_hdr-id=(ushort)getcurrentthreadid();datapart=icmp_data+sizeof(icmpheader);memset(datapart,a,datasize-sizeof(icmpheader);void decode_resp(char *buf,int bytes,struct sockaddr_in *from)ipheader *iphdr;icmphea
29、der *icmphdr;unsigned short iphdrlen;iphdr=(ipheader*) buf;iphdrlen=iphdr-headlen*4;icmphdr=(icmpheader *)(buf+iphdrlen);if(bytestype!=icmp_rcho_reply)return;if(icmphdr-id!=(ushort)getcurrentthreadid()return;cout活動(dòng)主機(jī): endl;cout sin_addr)1)cksum+=*buffer+;size-=sizeof(ushort);if(size)cksum+=*(uchar*)buffer;cksum=(cksum16)+(cksum& 0xffff);cksum+=(cksum16);return (ushort)(cksum);dword winapi findip(lpvoid pipaddrtemp)interlockedincrement(aa);char icmp_datamax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 親子旅游合同范本
- 農(nóng)村果酒銷售合同范本
- 2025年度咨詢顧問協(xié)議模板錦集:環(huán)境與能源咨詢顧問合作協(xié)議
- 2025年度房屋產(chǎn)權(quán)置換及公共設(shè)施配套建設(shè)合同
- 農(nóng)機(jī)惡意轉(zhuǎn)讓合同范本
- 2025年度共有產(chǎn)權(quán)住房贈(zèng)予協(xié)議
- 2025年度不動(dòng)產(chǎn)基金份額代持與資產(chǎn)保全合同
- 汽車零部件配送運(yùn)輸協(xié)議
- 2025年度跨境電商股份合作合同
- 2025年度房產(chǎn)中介員工勞動(dòng)合同及保密責(zé)任約定
- 2023年高中音樂課件陽關(guān)三疊(琴歌)
- 胸腔閉式引流護(hù)理-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 公司資產(chǎn)情況說明范文百度
- 醫(yī)療器械中有害殘留物檢驗(yàn)技術(shù)
- 2015-2022年大慶醫(yī)學(xué)高等??茖W(xué)校高職單招語文/數(shù)學(xué)/英語筆試參考題庫含答案解析
- 產(chǎn)品過程特殊特性初始清單(示例)
- 兩篇古典英文版成語故事塞翁失馬
- 中國(guó)古代文學(xué)史 馬工程課件(中)13第五編 宋代文學(xué) 第一章 北宋初期文學(xué)
- GB/T 14643.4-2009工業(yè)循環(huán)冷卻水中菌藻的測(cè)定方法第4部分:土壤真菌的測(cè)定平皿計(jì)數(shù)法
- DL-T 5190.1-2022 電力建設(shè)施工技術(shù)規(guī)范 第1部分:土建結(jié)構(gòu)工程(附條文說明)
- GA/T 914-2010聽力障礙的法醫(yī)學(xué)評(píng)定
評(píng)論
0/150
提交評(píng)論