




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
CENTRALSOUTHUNIVERSITY網(wǎng)絡(luò)工程實驗報告學(xué)生姓名惠苗壯指導(dǎo)教師劉麗敏學(xué)院信息科學(xué)與工程學(xué)院專業(yè)班級計科0904班學(xué)號0909091627完成時間2012年05月30日
目錄第一章設(shè)計目的、任務(wù)與要求 1.1設(shè)計目的······················································11.2設(shè)計的任務(wù)與要求··············································1第二章系統(tǒng)分析設(shè)計 2.1捕獲原理分析··················································22.2數(shù)據(jù)包詳細結(jié)構(gòu)················································32.3主流程圖······················································5第三章系統(tǒng)實現(xiàn)3.1WindowsSocket編程簡介······································63.2報頭數(shù)據(jù)結(jié)構(gòu)定義·············································63.3程序具體實現(xiàn)················································73.4程序運行····················································12第四章心得體會 ·················································14參考文獻···························································16附錄·······························································17IP數(shù)據(jù)包的捕獲與分析第二章系統(tǒng)分析設(shè)計設(shè)計目的、任務(wù)與要求1.1課程設(shè)計的目的:《計算機網(wǎng)絡(luò)原理》課程是計算機科學(xué)與技術(shù)專業(yè)的重要專業(yè)課程之一。隨著計算機網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和在當(dāng)今信息社會中的廣泛應(yīng)用,給《計算機網(wǎng)絡(luò)》課程的教學(xué)提出了新的更高的要求。計算機網(wǎng)絡(luò)原理課程設(shè)計的目的與任務(wù)是為了使學(xué)生在課程學(xué)習(xí)的同時,通過在一個計算機網(wǎng)絡(luò)環(huán)境中的實際操作,鞏固《計算機網(wǎng)絡(luò)原理》課堂教學(xué)所講授網(wǎng)絡(luò)的基本理論、基本概念和方法技術(shù),對現(xiàn)代計算機網(wǎng)絡(luò)的基本功能有一個初步的了解。為學(xué)生今后使用計算機網(wǎng)絡(luò)的理論和方法,開發(fā)大型、復(fù)雜的集成系統(tǒng),打下一個堅實的基礎(chǔ).1.2課程設(shè)計的任務(wù)與要求:課程設(shè)計的基本要求是:1.通過課程設(shè)計實踐,理解計算機網(wǎng)絡(luò)原理的基本要點;2.通過課程設(shè)計實踐,要求學(xué)生對于網(wǎng)絡(luò)的相關(guān)協(xié)議有深入的掌握,通過實驗加深對計算機網(wǎng)絡(luò)工作原理的理解,學(xué)會使用網(wǎng)絡(luò)軟件開發(fā)工具,培養(yǎng)學(xué)生的自學(xué)能力和開發(fā)網(wǎng)絡(luò)系統(tǒng)軟件的能力,并訓(xùn)練軟件工程的開發(fā)方法。3.通過課程設(shè)計實踐,進一步培養(yǎng)學(xué)生綜合開發(fā)網(wǎng)絡(luò)軟件的能力,培養(yǎng)團隊合作的能力,重點在網(wǎng)絡(luò)應(yīng)用軟件的開發(fā)。4.整個課程設(shè)計要求學(xué)生按軟件工程原理進行組織,文檔和參考文獻必須規(guī)范、齊全。1.3IP數(shù)據(jù)包的捕獲與分析的基本要求:本次實驗的要求在網(wǎng)絡(luò)環(huán)境,使用VC++編寫程序?qū)崿F(xiàn)捕獲網(wǎng)絡(luò)中的IP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準輸出上,并同時寫入日志文件。程序的具體要求如下:l)以命令行形式運行:ipparselogfile,其中Ipparse是程序名,而logfile則代表記錄結(jié)果的日志文件。2)在標(biāo)準輸出和日志文件中寫入捕獲的IP包的版本、頭長度、服務(wù)類型、數(shù)據(jù)包總長度、數(shù)據(jù)包標(biāo)識、分段標(biāo)志、分段偏移值、生存時間、上層協(xié)議類型、頭校驗和、源IP地址和目的IP地址等內(nèi)容。3)當(dāng)程序接收到鍵盤輸入Ctrl+C時退出。系統(tǒng)分析設(shè)計2.1數(shù)據(jù)包捕獲的原理分析:
以太網(wǎng)(Ethernet)具有共享介質(zhì)的特征,信息是以明文的形式在網(wǎng)絡(luò)上傳輸,當(dāng)網(wǎng)絡(luò)適配器設(shè)置為監(jiān)聽模式(混雜模式,Promiscuous)時,由于采用以太網(wǎng)廣播信道爭用的方式,使得監(jiān)聽系統(tǒng)與正常通信的網(wǎng)絡(luò)能夠并聯(lián)連接,并可以捕獲任何一個在同一沖突域上傳輸?shù)臄?shù)據(jù)包。IEEE802.3標(biāo)準的以太網(wǎng)采用的是持續(xù)CSMA的方式,正是由于以太網(wǎng)采用這種廣播信道爭用的方式,使得各個站點可以獲得其他站點發(fā)送的數(shù)據(jù)。運用這一原理使信息捕獲系統(tǒng)能夠攔截的我們所要的信息,這是捕獲數(shù)據(jù)包的物理基礎(chǔ)。
以太網(wǎng)是一種總線型的網(wǎng)絡(luò),從邏輯上來看是由一條總線和多個連接在總線上的站點所組成各個站點采用上面提到的CSMA/CD協(xié)議進行信道的爭用和共享。每個站點(這里特指計算機通過的接口卡)網(wǎng)卡來實現(xiàn)這種功能。網(wǎng)卡主要的工作是完成對于總線當(dāng)前狀態(tài)的探測,確定是否進行數(shù)據(jù)的傳送,判斷每個物理數(shù)據(jù)幀目的地是否為本站地址,如果不匹配,則說明不是發(fā)送到本站的而將它丟棄。如果是的話,接收該數(shù)據(jù)幀,進行物理數(shù)據(jù)幀的CRC校驗,然后將數(shù)據(jù)幀提交給LLC子層。
網(wǎng)卡具有如下的幾種工作模式:
1)廣播模式(BroadCastModel):它的物理地址(MAC)地址是0Xffffff的幀為廣播幀,工作在廣播模式的網(wǎng)卡接收廣播幀。
2)多播傳送(MultiCastModel):多播傳送地址作為目的物理地址的幀可以被組內(nèi)的其它主機同時接收,而組外主機卻接收不到。但是,如果將網(wǎng)卡設(shè)置為多播傳送模式,它可以接收所有的多播傳送幀,而不論它是不是組內(nèi)成員。
3)直接模式(DirectModel):工作在直接模式下的網(wǎng)卡只接收目地址是自己Mac地址的幀。
4)混雜模式(PromiscuousModel):工作在混雜模式下的網(wǎng)卡接收所有的流過網(wǎng)卡的幀,信包捕獲程序就是在這種模式下運行的。
網(wǎng)卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀和發(fā)給自己的幀。如果采用混雜模式,一個站點的網(wǎng)卡將接受同一網(wǎng)絡(luò)內(nèi)所有站點所發(fā)送的數(shù)據(jù)包這樣就可以到達對于網(wǎng)絡(luò)信息監(jiān)視捕獲的目的。2.2網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu)為:DLC數(shù)據(jù)幀頭:IP數(shù)據(jù)報結(jié)構(gòu):TCP數(shù)據(jù)包結(jié)構(gòu):UDP數(shù)據(jù)報結(jié)構(gòu):ICMP數(shù)據(jù)報結(jié)構(gòu):IGMP數(shù)據(jù)報結(jié)構(gòu):2.3主流程圖:IP數(shù)據(jù)包的捕獲與分析第三章系統(tǒng)實現(xiàn)第三章系統(tǒng)實現(xiàn)3.1WindowsSocket編程簡介TCP/IP協(xié)議與WinSock網(wǎng)絡(luò)編程接口的關(guān)系
WinSock并不是一種網(wǎng)絡(luò)協(xié)議,它只是一個網(wǎng)絡(luò)編程接口,也就是說,它不是協(xié)議,但是它可以訪問很多種網(wǎng)絡(luò)協(xié)議,你可以把他當(dāng)作一些協(xié)議的封裝?,F(xiàn)在的WinSock已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān)。你可以使用WinSock來調(diào)用多種協(xié)議的功能。那么,WinSock和TCP/IP協(xié)議到底是什么關(guān)系呢?實際上,WinSock就是TCP/IP協(xié)議的一種封裝,你可以通過調(diào)用WinSock的接口函數(shù)來調(diào)用TCP/IP的各種功能.例如我想用TCP/IP協(xié)議發(fā)送數(shù)據(jù),你就可以使用WinSock的接口函數(shù)Send()來調(diào)用TCP/IP的發(fā)送數(shù)據(jù)功能,至于具體怎么發(fā)送數(shù)據(jù),WinSock已經(jīng)幫你封裝好了這種功能。3.2報頭數(shù)據(jù)結(jié)構(gòu)的定義:typedefstruct_IP_HEADER{ union { BYTEVersion; BYTEHdrLen; }; BYTEServiceType; WORDTotalLen; WORDID; union { WORDFlags; WORDFragoff; }; BYTETimeToLive; BYTEProtocol; WORDHdrChksum; DWORDSrcAddr; DWORDDstAddr; BYTEOptions;}IP_HEADER;3.3程序的具體實現(xiàn):1.啟動winsock使用函數(shù)WSAStartup()完成winsock的啟動if(WSAStartup(MAKEWORD(2,2),&wsData)!=0) { printf("WSAStartupfailed!\n"); return-1; }2.初始化socket的創(chuàng)建 SOCKETsock;WSADATAwsData; ofstreamofs("ip.log",ios::app); if(WSAStartup(MAKEWORD(2,2),&wsData)!=0) { printf("WSAStartupfailed!\n"); return-1; } if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP))==INVALID_SOCKET) { printf("createsocketfailed\n"); return-1; } BOOLflag=true; if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag))==SOCKET_ERROR) { printf("setsockoptfailed!\n"); return-1; } charhostName[128]; if(gethostname(hostName,100)==SOCKET_ERROR) { printf("gethostnamefailed!\n"); return-1; } hostent*pHostIP; if((pHostIP=gethostbyname(hostName))==NULL) { printf("gethostbynamefailed\n"); return-1; }3.初始化socket的綁定:sockaddr_inaddr_in; addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0]; addr_in.sin_family=AF_INET; addr_in.sin_port=htons(6000); if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in))==SOCKET_ERROR) { printf("bindfailed\n"); return-1; }4.設(shè)置網(wǎng)卡的混雜模式:#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)DWORDdwBufferLen[10]; DWORDdwBufferInLen=1; DWORDdwBytesReturned=0; charbuffer[100]; if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen), &dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==SOCKET_ERROR) { printf("ioctlsocketfaild\n"); return-1; }5.用戶按下Ctrl+C,終止程序的實現(xiàn)。對于程序來說,要時時處于抓包狀態(tài),對于用戶來說又要隨時能結(jié)束程序。所以在實現(xiàn)該功能時,我使用了線程技術(shù),即通過主線程以外的另一個進程,來控制主進程中的抓包循環(huán)。從而,既保證了程序的實時性,又不影響抓包。6.日志文件的實現(xiàn)定義一個C++輸出流,利用write函數(shù),將操作逐步寫入文件即可。while(true) { intsize=recv(sock,buffer,sizeof(buffer),0); IP_HEADERip=*(IP_HEADER*)buffer; cout<<""<<endl; s+="\n\n"; cout<<"Version:"<<(ip.Version>>4)<<endl; _itoa(ip.Version>>4,buffer1,10); s+="Version:"; s+=buffer1; s+="\n"; cout<<"IHL:"<<((ip.HdrLen&0x0f)*4)<<endl; s+="IHL:"; _itoa((ip.HdrLen&0x0f)*4,buffer1,10); s+=buffer1; s+="\n"; cout<<"Typeofservice:Priority"<<(ip.ServiceType>>5)<< ",Service"<<((ip.ServiceType>>1)&0x0f)<<endl; s+="Typeofservice:Priority";_itoa(ip.ServiceType>>5,buffer1,10); s+=buffer1;s+=",Service";_itoa((ip.ServiceType>>1)&0x0f,buffer1,10); s+=buffer1; s+="\n"; cout<<"TOtalLength:"<<ip.TotalLen<<endl; s+="TOtalLength:";_itoa(ip.TotalLen,buffer1,10); s+=buffer1; s+="\n"; cout<<"Identifcation:"<<ip.ID<<endl; s+="Identifcation:";_itoa(ip.ID,buffer1,10); s+=buffer1; s+="\n";cout<<"sign:"<<((ip.Flags>>15)&0x01)<<",DF="<< ((ip.Flags>>14)&0x01)<<",Mf="<<((ip.Flags>>13)&0x01)<<endl; s+="sign:";_itoa((ip.Flags>>15)&0x01,buffer1,10); s+=buffer1; s+=",DF=";_itoa((ip.Flags>>14)&0x01,buffer1,10);s+=buffer1; s+=",Mf=";_itoa((ip.Flags>>13)&0x01,buffer1,10);s+=buffer1; s+="\n"; cout<<"Fragmentoffset:"<<(ip.Fragoff&0x1fff)<<endl;s+="Fragmentoffset:";_itoa(ip.Fragoff&0x1fff,buffer1,10);s+=buffer1; s+="\n"; cout<<"Timetolive:"<<(int)ip.TimeToLive<<endl;s+="Timetolive:";_itoa((int)ip.TimeToLive,buffer1,10);s+=buffer1; s+="\n"; cout<<"Protocol:"<<(int)ip.Protocol<<endl; s+="Protocol:";_itoa((int)ip.Protocol,buffer1,10);s+=buffer1; s+="\n"; cout<<"HeaderChecksum:"<<ip.HdrChksum<<endl;s+="HeaderChecksum:";_itoa(ip.HdrChksum,buffer1,10);s+=buffer1; s+="\n"; cout<<"Sourceaddress:"<<inet_ntoa(*(in_addr*)&ip.SrcAddr)<<endl; s+="Sourceaddress:";s+=inet_ntoa(*(in_addr*)&ip.SrcAddr); s+="\n"; cout<<"Destinationaddress:"<<inet_ntoa(*(in_addr*)&ip.DstAddr)<<endl; s+="Destinationaddress:";s+=inet_ntoa(*(in_addr*)&ip.DstAddr); s+="\n"; p=&s[0]; ofs.write(p,strlen(p)); }3.4程序運行主頁面:文件;IP數(shù)據(jù)包的捕獲與分析第四章心得體會第四章心得體會這次的課程設(shè)計使我感觸很深,學(xué)了一個學(xué)期的計算機網(wǎng)絡(luò),都不知道那些書上的知識是怎么應(yīng)用在實踐中,通過這次的課程設(shè)計我了解了很多以前似懂非懂的東西,然后在把書上的那些代碼經(jīng)過分析,應(yīng)用在這次課程設(shè)計中,使感覺計算機網(wǎng)絡(luò)真的是很有趣的一門課程。這次的課程設(shè)計,加強了我們動手、思考和解決問題的能力。鞏固和加深了對網(wǎng)絡(luò)編程的理解,提高綜合運用本課程所學(xué)知識的能力。培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。通過課程設(shè)計,培養(yǎng)了我嚴肅認真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。而且做課程設(shè)計同時也是對課本知識的鞏固和加強,平時看課本時,有些問題就不是很能理解,做完課程設(shè)計,那些問題就迎刃而解了。而且還可以記住很多東西。認識來源于實踐,實踐是認識的動力和最終目的,實踐是檢驗真理的唯一標(biāo)準。所以這個期末測試之后的課程設(shè)計對我們的作用是非常大的。這次的課程設(shè)計使我懂得了理論與實際相結(jié)合是很非常重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在整個設(shè)計過程中,構(gòu)思是很花費時間的。調(diào)試時經(jīng)常會遇到這樣那樣的錯誤,有的是因為粗心造成的語法錯誤。當(dāng)然,很多也時用錯了方法,總是實現(xiàn)不了。同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。根據(jù)我在課程設(shè)計中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:1、認真上好專業(yè)實驗課,多在實踐中鍛煉自己。2、寫程序的過程中要考慮周到,嚴密。3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。4、認真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。每個實驗通常都要花費很久的時間才能理清一個程序的思路,而且要不斷的調(diào)試程序才能把程序調(diào)試正確,同時還要做到界面的輸出也是需要美化的。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多專業(yè)知識問題,最后在老師的辛勤指導(dǎo)下,也完成了課程設(shè)計。通過這次的課程設(shè)計,讓我更加了解到計算機網(wǎng)絡(luò)的重要性。以及它對我們專業(yè)的網(wǎng)絡(luò)方向發(fā)展發(fā)揮的作用。對我們而言,知識上的收獲很重要,但精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個人永遠不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設(shè)計必將成為我人生旅途上一個非常美好的回憶!同時在做課程設(shè)計時要能夠從多方面去考慮,去研究,用多種算法去實現(xiàn)要求。此次課程設(shè)計,學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應(yīng)變,這些都讓我受益非淺,今后的制作應(yīng)該能夠更輕松,自己也都能夠解決并高質(zhì)量的完成項目。最后,感謝這些天來,一直陪著我們,辛苦工作的指導(dǎo)劉麗敏老師,感謝您的無私奉獻和辛勤教導(dǎo),使我能得到進步,能夠取得成功,感謝您!參考文獻:[1]AndrewS.Tanenbaum.計算機網(wǎng)絡(luò).清華大學(xué),1998,32.[2]網(wǎng)站IP數(shù)據(jù)包的捕獲與分析附錄附錄;程序源代碼如下:#include"winsock2.h"#include"ws2tcpip.h"#include<windows.h>#include<fstream>#include<iostream>#pragmacomment(lib,"ws2_32")usingnamespacestd;typedefstruct_IP_HEADER{ union { BYTEVersion; BYTEHdrLen; }; BYTEServiceType; WORDTotalLen; WORDID; union { WORDFlags; WORDFragoff; }; BYTETimeToLive; BYTEProtocol; WORDHdrChksum; DWORDSrcAddr; DWORDDstAddr; BYTEOptions;}IP_HEADER;intmain(){ SOCKETsock;WSADATAwsData; ofstreamofs("ip.log",ios::app); if(WSAStartup(MAKEWORD(2,2),&wsData)!=0) { printf("WSAStartupfailed!\n"); return-1; } if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP))==INVALID_SOCKET) { printf("createsocketfailed\n"); return-1; } BOOLflag=true; if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag))==SOCKET_ERROR) { printf("setsockoptfailed!\n"); return-1; } charhostName[128]; if(gethostname(hostName,100)==SOCKET_ERROR) { printf("gethostnamefailed!\n"); return-1; } hostent*pHostIP; if((pHostIP=gethostbyname(hostName))==NULL) { printf("gethostbynamefailed\n"); return-1; } sockaddr_inaddr_in; addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0]; addr_in.sin_family=AF_INET; addr_in.sin_port=htons(6000); if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in))==SOCKET_ERROR) { printf("bindfailed\n"); return-1; }#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)DWORDdwBufferLen[10]; DWORDdwBufferInLen=1; DWORDdwBytesReturned=0; charbuffer[100]; if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen), &dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==SOCKET_ERROR) { printf("ioctlsocketfaild\n"); return-1; } printf("AnalysisIPPacket!\n\n"); strings; char*p; charbuffer1[100]; while(true) { intsize=recv(sock,buffer,sizeof(buffer),0); IP_HEADERip=*(IP_HEADER*)buffer; cout<<""<<endl; s+="\n\n"; cout<<"Version:"<<(ip.Version>>4)<<endl; _itoa(ip.Version>>4,buffer1,10); s+="Version:"; s+=buffer1; s+="\n"; cout<<"IHL:"<<((ip.HdrLen&0x0f)*4)<<endl; s+="IHL:"; _itoa((ip.HdrLen&0x0f)*4,buffer1,10); s+=buffer1; s+="\n"; cout<<"Typeofservice:Priority"<<(ip.ServiceType>>5)<< ",Service"<<((ip.ServiceType>>1)&0x0f)<<endl; s+="Typeofservice:Priority";_itoa(ip.ServiceType>>5,buffer1,10); s+=buffer1;s+=",Service";_itoa((ip.ServiceType>>1)&0x0f,buffer1,10); s+=buffer1; s+="\n"; cout<<"TOtalLength:"<<ip.TotalLen<<endl; s+="TOtalLength:";_itoa(ip.TotalLen,buffer1,10); s+=buffer1; s+="\n"; cout<<"Identifcation:"<<ip.ID<<endl; s+="Identifcation:";_itoa(ip.ID,buffer1,10); s+=buffer1; s+="\n";
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙十一營銷美容院活動
- 銀行元旦活動方案
- 永州寧遠縣招聘教師筆試真題2024
- 2025年縫紉工理論試題
- 跨平臺性能一致性分析-洞察闡釋
- 新醫(yī)科框架下的遺傳學(xué)教學(xué)目標(biāo)和核心能力建設(shè)
- 中職院校智慧校園建設(shè)路徑與實踐
- 推動種業(yè)振興的策略及實施路徑
- 2025至2030年中國球墨鑄鐵電信井蓋行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國牛仔中褲行業(yè)投資前景及策略咨詢報告
- 反肩關(guān)節(jié)置換術(shù)的護理
- 信用卡金融消費者權(quán)益保護措施
- 養(yǎng)老院老人生活娛樂活動組織服務(wù)質(zhì)量管理制度
- 2024年北京市中考英語模擬試卷
- 全新離婚登記協(xié)議下載(2024版):雙方財產(chǎn)查核與評估程序
- 2021版反洗錢考試題庫
- 數(shù)據(jù)崗位崗位說明書
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期7月期末地理試題(原卷版)
- 修腳師培訓(xùn)手冊
- 2025屆高考政治一輪復(fù)習(xí):統(tǒng)編版選擇性必修3《邏輯與思維》重點知識點提綱
- 凝中國心鑄中華魂鑄牢中華民族共同體意識-小學(xué)民族團結(jié)愛國主題班會課件
評論
0/150
提交評論