版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、traceroute程序設(shè)計(jì) 與實(shí)現(xiàn) Traceroute程序設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名:樊冠宇 指導(dǎo)老師二姜文超 摘要本文主要講述了路山追蹤的基本程序設(shè)計(jì)與實(shí)現(xiàn),并給出了一種基 于IP網(wǎng)絡(luò)的路III追蹤命令Tracert,詳細(xì)分析了實(shí)現(xiàn)路山追蹤的基本原理,歸納了 路由追蹤的基本流程。Tracert通過(guò)ICMP協(xié)議和I P header中T T L (存活時(shí) 間)利用路山器對(duì)數(shù)據(jù)報(bào)存活時(shí)間的處理方式來(lái)實(shí)現(xiàn)路山探測(cè)的。首先根據(jù)任 務(wù)書設(shè)計(jì)好流程圖,然后編寫程序代碼,運(yùn)行得到Traceroute的命令窗口。提取 tracert的輸出,再結(jié)合現(xiàn)有IP數(shù)據(jù)庫(kù)及自建地名-坐標(biāo)數(shù)據(jù)庫(kù)對(duì)路山中各節(jié)點(diǎn)IP進(jìn) 行定位
2、,最終實(shí)現(xiàn)了動(dòng)態(tài)顯示追蹤的詳細(xì)信息和路徑。 關(guān)鍵詞:IP地址,ICMP協(xié)議,TTL, Tracert路由追蹤 Internet,是LI前世界上最大的訃算機(jī)網(wǎng)絡(luò),更確切的說(shuō)是網(wǎng)絡(luò)中的網(wǎng)絡(luò),它 山遍布全球的兒萬(wàn)局域網(wǎng)和數(shù)白萬(wàn)臺(tái)訃算機(jī)組成,并通過(guò)用于異構(gòu)網(wǎng)絡(luò)的 TCP/IP協(xié)議進(jìn)行網(wǎng)間通信。互聯(lián)網(wǎng)中,信息的傳送是通過(guò)網(wǎng)中許多段的傳輸介 質(zhì)和設(shè)備從一端到達(dá)另一端。每一個(gè)連接在Internet 的設(shè)備,如主機(jī)、路由 器、接入服務(wù)器等一般情況下都會(huì)有一個(gè)獨(dú)立的IP地址。通過(guò)Traceroute我們 可以知道信息從你的訃算機(jī)到互聯(lián)網(wǎng)另一端的主機(jī)是走的什么路勁。當(dāng)然每次 數(shù)據(jù)包山某一同樣的出發(fā)點(diǎn)到達(dá)某一同樣的
3、LI的地走的路勁可能會(huì)不同,但基 本上來(lái)說(shuō)大部分時(shí)候所走的路由是相同的。隨著Internet (國(guó)際互聯(lián)網(wǎng))的發(fā) 展,越來(lái)越多的服務(wù)通過(guò)網(wǎng)絡(luò)提供給大眾,與此同時(shí),針對(duì)互聯(lián)網(wǎng)的攻擊事件 也越來(lái)越頻繁。所謂路山追蹤實(shí)際上就是在IP網(wǎng)絡(luò)上判斷從源到達(dá)LI的所經(jīng)過(guò) 的路山器的IP地址,其基本的實(shí)現(xiàn)手段都是向口的地發(fā)送數(shù)據(jù)包以獲取經(jīng)過(guò)的 路由器的IP。山于Internet 的路山協(xié)議是動(dòng)態(tài)的,所以每次形成的數(shù)據(jù)包從 同一個(gè)出發(fā)點(diǎn)到達(dá)目的地的路由可能會(huì)不一樣,但由于路由算法有一定的穩(wěn)定 性,在大部分時(shí)侯所走的路山會(huì)是相同的。 課程設(shè)計(jì)目的 1. 這次課程設(shè)汁,主要為了加深同學(xué)們對(duì)計(jì)算機(jī)網(wǎng)絡(luò)網(wǎng)絡(luò)的理解和認(rèn)識(shí)
4、 2. 了解信息在計(jì)算機(jī)網(wǎng)絡(luò)與網(wǎng)絡(luò)之間的傳送和接收 3. 進(jìn)一步加深了解網(wǎng)絡(luò)與網(wǎng)絡(luò)之間的協(xié)議 4. 理解網(wǎng)絡(luò)中的IP地址以及路山之間的相關(guān)命令。 課程設(shè)計(jì)內(nèi)容 1 .已知參數(shù):輸入:目的節(jié)點(diǎn)IP地址或主機(jī)名;輸出:從控制臺(tái)屏幕輸出IP報(bào) 文山本機(jī)出發(fā)到達(dá)LI的主機(jī)所經(jīng)過(guò)的路山信息。 2.設(shè)計(jì)要求:通過(guò)原始套接字編程,實(shí)現(xiàn)Tracert的基本功能 初始化Windows Sockets網(wǎng)絡(luò)環(huán)境; 解析命令行參數(shù),構(gòu)造U的端socket地址; 定義IP、ICMP報(bào)文; 接收ICMP差錯(cuò)報(bào)文并進(jìn)行解析。 課程設(shè)計(jì)要求 (1)按要求編寫課程設(shè)訃報(bào)告書,能正確闡述設(shè)訃結(jié)果。 (2)通過(guò)課程設(shè)計(jì)培養(yǎng)學(xué)生嚴(yán)謹(jǐn)
5、的科學(xué)態(tài)度,認(rèn)真的工作作風(fēng)和團(tuán)隊(duì)協(xié)作精 神。 (3)學(xué)會(huì)文獻(xiàn)檢索的基本方法和綜合運(yùn)用文獻(xiàn)的能力。 (4)在老師的指導(dǎo)下,要求每個(gè)學(xué)生獨(dú)立完成課程設(shè)計(jì)的全部?jī)?nèi)容。 2設(shè)計(jì)原理 raceroute是一個(gè)路由跟蹤命令,它通過(guò)ICMP協(xié)議和I P header中T T L (存活時(shí)間)來(lái)實(shí)現(xiàn)的。具體而言就是:發(fā)送方發(fā)出一個(gè)TTL是I的IP Datagram (事實(shí)上每個(gè)數(shù)據(jù)包發(fā)送三次,大小為40字節(jié),包括本機(jī)的IP地 址,目的主機(jī)的IP地址以及時(shí)間戳),當(dāng)經(jīng)由第一個(gè)路曲器時(shí),路由器將該數(shù) 據(jù)包的TTL減1,發(fā)現(xiàn)此時(shí)的TTL為0,將數(shù)據(jù)包丟失,同時(shí)向源主機(jī)發(fā)送一個(gè) ICMPTime-to-Exceed報(bào)
6、文(包括源主機(jī)的IP地址、路由地址以及路由的相關(guān)消 息),源主機(jī)收到這個(gè)數(shù)據(jù)包后就知道了這個(gè)路由器在這條路徑上。同理發(fā)送 第二個(gè)、第三個(gè).第n個(gè)。源主機(jī)將每次I P數(shù)據(jù)報(bào)的TTL+ 1 ,直到某個(gè) 數(shù)據(jù)報(bào)到達(dá)了目的地址,此時(shí)不知發(fā)回一個(gè)I CMP T i me- t o-E x c e e d ,而是發(fā)送一個(gè)數(shù)據(jù)報(bào)的響應(yīng)報(bào)文。當(dāng)源主機(jī)收到這樣一個(gè)報(bào)文后便 知道數(shù)據(jù)包已經(jīng)到達(dá)了口的地。Traceroute提取發(fā)ICMPTTL到期消息設(shè)備的IP 地址并作域名解析。每次,Traceroute都打印出一系列數(shù)據(jù),包括所經(jīng)過(guò)的路由 設(shè)備的域名及IP地址,三個(gè)包每次來(lái)回所花時(shí)間。Traceroute有一個(gè)
7、固定的時(shí)間 等待響應(yīng)(ICMPTTL到期消息)。如果這個(gè)時(shí)間過(guò)了,它將打印出一系列的*號(hào)表 明:在這個(gè)路徑上,這個(gè)設(shè)備不能在給定的時(shí)間內(nèi)發(fā)出ICMPTTL到期消息的響 應(yīng)。然后,Traceroute給TTL記數(shù)器加1,繼續(xù)進(jìn)行。 簡(jiǎn)介和基本原理 ICMPflnternet Control Message Protocol),B卩 Internet 控制報(bào)文協(xié)議,它是 TCP/IP協(xié)議族的一個(gè)子協(xié)議”屬于網(wǎng)絡(luò)層面向無(wú)連接的協(xié)議,主要用于在主機(jī)與 路山器之間傳遞控制信息,包括報(bào)告錯(cuò)誤、交換受限控制和狀態(tài)信息等。當(dāng)遇到 IP數(shù)據(jù)無(wú)法訪問(wèn)U標(biāo)、IP路山器無(wú)法按肖前的傳輸速率轉(zhuǎn)發(fā)數(shù)據(jù)包等情況時(shí), 會(huì)自動(dòng)
8、發(fā)送ICMP消息。ICMP報(bào)文被包裝成IP數(shù)據(jù)包傳到數(shù)據(jù)鏈路層進(jìn)行傳 輸。通過(guò)ICMP協(xié)議,主機(jī)和路由器可以報(bào)告錯(cuò)誤并交換相關(guān)的狀態(tài)信息。 ICMP對(duì)于TCP/IP協(xié)議的可靠運(yùn)行是至關(guān)重要的。ICMP報(bào)文結(jié)構(gòu)如圖1所示: p7815 1631 位類型|8位代碼 |16位校驗(yàn)和 (不同類型和代碼有不同的內(nèi)容) 圖1 ICMP報(bào)文結(jié)構(gòu) 程序的基本原理 路山追蹤的主要原理是根據(jù)路徑上各路山器對(duì)數(shù)據(jù)報(bào)的存活時(shí)仃imeto Live, TTL)做不同的處理,使其產(chǎn)主超時(shí)ICMP消息響應(yīng),反饋至源主機(jī)從而獲得 此跳路由器或主機(jī)的IP。照此再發(fā)送下一個(gè)TTL經(jīng)過(guò)自增的數(shù)據(jù)報(bào),直至獲得整 個(gè)路由中各節(jié)點(diǎn)的IP
9、或者接收到錯(cuò)誤的消息。詳細(xì)過(guò)程描述如下: 1)置n =假設(shè)該過(guò)程中共經(jīng)過(guò)M個(gè)路曲器。 2)源主機(jī)S向口標(biāo)主機(jī)D發(fā)送一個(gè)TTL為n的UDP數(shù)據(jù)報(bào)。并設(shè)定端口號(hào) (一般大于30 000)。 3)路曲器(或者網(wǎng)關(guān)、主機(jī))Rn對(duì)接收到的數(shù)據(jù)報(bào)的TTL值n做減1處理。 4)若n = 0,則丟棄UDP數(shù)據(jù)報(bào),向源主機(jī)S發(fā)送ICMP超時(shí)報(bào)文。 5)若n$l,繼續(xù)向LI標(biāo)主機(jī)D發(fā)送經(jīng)過(guò)處理的數(shù)據(jù)報(bào)。 6)源主機(jī)S分析返回的ICMP報(bào)文,從中提取出發(fā)送者Rn的地址IPn并做記 錄。 7) 若收到“端口不可達(dá)”的ICMP報(bào)文,則發(fā)送方即H標(biāo)主機(jī)D,記錄其地址 IPn,追蹤完成。 8) 置n = n +1,繼續(xù)向目
10、標(biāo)主機(jī)D發(fā)送TTL為n的數(shù)據(jù)報(bào)。 注意,這里使UDP數(shù)據(jù)報(bào)的端口號(hào)大于30000,是因?yàn)橐话愕膽?yīng)用程序不可能 使用如此高的端口號(hào)。當(dāng)然這并非絕對(duì),若出現(xiàn)例外,則源主機(jī)會(huì)發(fā)現(xiàn)等待超時(shí), 于是隨機(jī)改變此UDP數(shù)據(jù)報(bào)的端口號(hào),再次發(fā)送。這樣最終可以在標(biāo)主機(jī)上找 到一個(gè)空閑的端口號(hào)。另外,這里假設(shè)路由器和U標(biāo)主機(jī)沒(méi)有被配置為“過(guò)濾 ICMP”或者做了其他的非常規(guī)處理,如果被做了類似的配置,則上面的追蹤機(jī)制 就無(wú)能為力了。 實(shí)現(xiàn)的功能 IP數(shù)據(jù)報(bào)的首部山兩部分構(gòu)成:固定部分和可變部分。固定部分的長(zhǎng)度是 20個(gè)字段,可變部分由許多選項(xiàng)構(gòu)成,最長(zhǎng)可達(dá)40個(gè)字節(jié)。雖然選項(xiàng)并不是 IP數(shù)據(jù)報(bào)的必需部分,但選項(xiàng)的
11、處理卻是IP軟件的必需部分。 在現(xiàn)在的TCP/IP協(xié)議中,只定義了六種選項(xiàng),對(duì)于我們進(jìn)行路由追蹤技術(shù) 有用的是記錄路山選項(xiàng),一個(gè)記錄路山選項(xiàng)是用來(lái)記錄處理IP數(shù)據(jù)報(bào)的互聯(lián)網(wǎng) 路由器的IP地址。因?yàn)槭撞康淖畲箝L(zhǎng)度是60個(gè)字節(jié),它包括20個(gè)字節(jié)的基本 首部。這就意味著只剩下40個(gè)字節(jié)留下給選項(xiàng)部分,所以通過(guò)選項(xiàng)字段最多能 夠記錄9個(gè)路山器的IP地址。源站在選項(xiàng)中創(chuàng)建一個(gè)位標(biāo)置(placeholder),用 來(lái)填入所經(jīng)過(guò)的各路III器,圖2給出了記錄路山選項(xiàng)的格式。 向目的主機(jī)發(fā)送一個(gè)ICMP報(bào)文,這種方法只要求使用一個(gè)套接字。ICMP即 Internet控制報(bào)文協(xié)議,是一種用于特殊用途的報(bào)文機(jī)制,
12、可以使互聯(lián)網(wǎng)中的路 山器或主機(jī)報(bào)告差錯(cuò)或提供有關(guān)意外情況的信息。盡管UDP和ICMP工作在 TCP/IP的不同層次上,但他們的封裝是類似的。ICMP報(bào)文為兩級(jí)封裝ICMP報(bào)文 放在IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分,數(shù)據(jù)報(bào)則放在幀的數(shù)據(jù)中進(jìn)行網(wǎng)絡(luò)傳輸(如圖3所 示)ICMP報(bào)文與其他普通報(bào)文一樣,具有相同的路山選擇,并沒(méi)有特殊的優(yōu)先 權(quán)和增加可黑性。通過(guò)路III選項(xiàng)的方法記錄路山的實(shí)現(xiàn)同UDP數(shù)據(jù)報(bào)是相似 的,這里主要說(shuō)明通過(guò)TTL方法的實(shí)現(xiàn)。 分析本次課程設(shè)計(jì)的任務(wù)書,整個(gè)課程設(shè)計(jì)的過(guò)程大致可以分為三個(gè)步 驟:第一步主要是設(shè)訃好流程圖;笫二步是根據(jù)流程圖編寫程序代碼;笫三步 是在程序編譯通過(guò)后,運(yùn)行程序結(jié)
13、果,在對(duì)話框中輸入要追蹤的IP地址,觀察 路111追蹤命令追蹤IP地址在網(wǎng)絡(luò)中的運(yùn)行。其中第一步跟第二步是關(guān)鍵,只有 完整的流程圖和根據(jù)要求編寫好正確的程序,才能運(yùn)行得到正確的結(jié)果。下面 是整個(gè)設(shè)計(jì)過(guò)程中各個(gè)步驟的詳細(xì)分析。 流程圖 根據(jù)要求設(shè)計(jì)好的流程圖如圖4所示: 圖4流程圖 的核心程序 整個(gè)設(shè)訃過(guò)程的核心程序代碼: include ,u, include include include #訐 def _DEBUG #undefTHIS_FILE static char THIS_FILE=_FILE_; #define new DEBUG.NEW #endif void CPing:Pi
14、ng(int timeout) m_hSocket = WSASocket (AFJNET, SOCK_RAWZ IPPROT0CMP, NULL, 0,WSA_FLAG_OVERLAPPED); 訐(m_hSocket = INVALID_SOCKET) AfxMessageBox(socket 創(chuàng)建失敗! return ; Start sending/receiving ICMP packets 開(kāi)始發(fā)送/接收 ICMP 的數(shù)據(jù)包 拴TraceRoute 路由跟喘 |www. sina. com| 跟蹤報(bào)告 #define new DEBUG_NEW #end 訐 llllllllllll
15、llllllllllllllllllllllllllllllllllllllllllllllllllllllllll / Construction/Destruction llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll /IP struct IPHEADER unsigned int hen:4;/ 首部長(zhǎng)度 unsigned int version:4; / 版本 unsigned char tos; 服務(wù)類型 unsigned short total_len; 報(bào)文總長(zhǎng)度 unsigned sho
16、rt ident; /標(biāo)識(shí) unsigned short frag_and_flags; 偏移量 unsigned char ttl; 壽命 unsigned char proto; 協(xié)議 unsigned short checksum;首部校驗(yàn)和 unsigned int sourcelP; 源站IP unsigned int destIP; /目的站IP ; /ICMP首部數(shù)據(jù)結(jié)構(gòu) struct ICMPHEADER BYTE Ltype;類型 BYTE Lcode;代碼 USHORT i_cksum; USHORT ijd; USHORT Lseq; ULONG timestamp; ;
17、 首部校驗(yàn)和 /標(biāo)識(shí) 序列號(hào) 時(shí)間戳(選用) CTracer:CTracer() Seq=l; icmpData=NULL; icmpRcvBuf=NULL; m_hSocket=INVALID_SOCKET; 初始化socket WSADATA wsaData; if(WSAStartup(MAKEWORD(2,2)/ CT racer: :CT racer() 關(guān)閉 Socket 訐(m_hSocket!=NULL) closesocket(m_hSocket); WSACIeanup(); /Checksum USHORT CTracer:CheckSum(char* pBuffer,i
18、nt size) USHORT* buffer=(USHORT*)pBuffer; unsigned long cksum=O; while(size 1) cksum += *buffer+; size -= sizeof(USHORT); 訐(size ) cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum cksum += (cksum 16); return (USHORT)(cksum); /FillAddress BOOL CTracer:FillAddress(char *addrDest) memset( =AFJNET;
19、 if(in et_addr(addrDest)=INADDR_NONE) - 輸入的地址為計(jì)算機(jī)名字 HOSTENT* hp=NULL; hp=gethostbyname(addrDest); if(hp) memcpy( =hp-h_addrtype; else AfxMessageBox(n 獲取地址失敗! ”); return FALSE; else return TRUE; /FilllCMPData void CTracer:FilllCMPData(char* icmpDatajnt size) memset(icmpData,O,size); ICMPHEADER* icmpH
20、eader=NULL; icmpHeader=(ICMPHEADER*)icmpData; icmpHeader-i_type =ICMP_ECHO; icmpHeader-i_code =0; icmpHeader-i_id =(USHORT)GetCurrentProcessld(); icmpHeader-i_seq =m_n Seq+; /GetTickCoun?返回從一0點(diǎn)到現(xiàn)在的毫秒數(shù),作時(shí)間戳 icmpHeader-timestamp=GetTickCount(); char* datapart=icmpData+sizeof(ICMPHEADER); memset(datapa
21、rt,*,/size-sizeof(ICMPHEADER); 填充校驗(yàn)和 icmpHeader-i_cksum =CheckSum(icmpData,size); 設(shè)置數(shù)據(jù)報(bào)的壽命 BOOL CTracer:SetTTL(SOCKET hSocket, int ttl) int result; resu It=setsockopt( hSocket, IPPROTOPP_TTL,(LPSTR) if(result=SOCKET_ERROR) AfxMessageBox(i5置數(shù)據(jù)報(bào)壽命失敗! ”); TerminateProcess(GetCurre ntProcessOJ); return
22、TRUE; 發(fā)送數(shù)據(jù)報(bào) BOOL CTracer:SendData(char* icmpDataJnt size) 填充ICMP報(bào)頭 FilllCMPData(icmpData,size); 發(fā)送數(shù)據(jù)報(bào) int result; timel=GetTickCount(); result=sendto(m_hSocket/icmpData/size,0/(SOCKADDR*) if(result=SOCKET_ERROR) if(WSAGetLastError()=WSAETIMEDOUT) (CTraceRouteDlg*)m_pWnd)-lnfoAdd (發(fā)送超時(shí)冷; return TRUE;
23、 AfxMessageBoxf發(fā)送報(bào)文失敗!); TerminateProcessfGetCurr en tProcess()d return FALSE; 接收數(shù)據(jù)報(bào) BOOL CTracer:RecvData(char* icmpRcvBuf,int* presuit) static int count=0; 總共6次出現(xiàn)接收超時(shí),判斷存在連接問(wèn)題。 if(count5) AfxMessageBox(n 連接存在問(wèn)題!”); TerminateProcessfGetCurr en tProcess()l); int fromlen=sizeof(SOCKADDR); *presult=SO
24、CKET_ERROR; *presult=recvfrom(m_hSocket,icmpRcvBuf,MAX_PACKET/0,(SOCKADDR*) time2=GetTickCount(); 訐(*presult=SOCKET_ERROR) if(WSAGetLastError()=WSAETIMEDOUT) (CTraceRouteDlg*)m_pWnd)-lnfoAdd (接收超時(shí)!); cou nt+; return TRUE; AfxMessageBox(u接收數(shù)據(jù)報(bào)失敗!); TerminateProcessfGetCurre ntProcess()廣 1); return FA
25、LSE; 處理接收到的數(shù)據(jù)報(bào) BOOL CTracer:DecodelCMP(char* pBufferJnt bytes,int ttl) IPHEADER *ipHeader=NULL; ICMPHEADER *icmpHeader=NULL; unsigned short ipHeaderLen; HOSTENT *ph=NULL; in_addr inaddr=; ipHeader=(IPHEADER*)pBuffer; ipHeaderLe n=20; 訐(bytesi_type) 目的站點(diǎn)的返回 case ICMP_ECHOREPLY: ph=gethostbyaddr(const
26、 char *) 訐(ph !=NULL) CString report; (%2d %s (%s),/ttl,ph-h_name/inet_ntoa(inaddr); (CTraceRouteDlg*)m_pW nd)lnfoAdd(report); _ return TRUE; break; 中途路由器的返回 case ICMP_TIMEOUT: CString report; (%2d %s %2d msttl, inet_ntoa(inaddr),(time2- timel); (CTraceRouteDlg*)m_pW nd)lnfoAdd(report); return FALSE
27、; break; 錯(cuò)誤:主機(jī)不可達(dá) case ICMP_DESTUNREACH: CString report; (%2d %s 主機(jī)不可達(dá),ttlzinet_ntoa(inaddr); (CTraceRouteDlg*)m_pW nd)-lnfoAdd(report); return TRUE; break; 收到一個(gè)不是回應(yīng)的報(bào)文 default: L CString report; (非回應(yīng)報(bào)文”); (CTraceRouteDlg*)m_pW nd)lnfoAdd(report); return TRUE; return FALSE; void CTracer:SetWnd(CDial
28、og *pWnd) i殳置窗口指針 m_pWnd=pWnd; _ void CTracer:Trace(char *destAddress) int size二DEF_PACKET_SIZE+sizeof(ICMPHEADER); 轉(zhuǎn)換地址 訐(!FillAddress(destAddress) return ; 分配必要的內(nèi)存空間 icmpData=(char*)HeapAlloc(GetProcessHeap()/HEAP_ZERO_MEMORY,MAX_PACKET); icmpRcvBuf=(char*)HeapAlloc(GetProcessHeap()/HEAP_ZERO_MEMORY,MAX_PACK ET); if(!icmpData | | licmpRcvBuf) AfxMessageBox(分配內(nèi)存空間失敗!*); TerminateProcesstGetCurrentProcessO,-!); memset(icmpData,O,l/IAX_PACKET); memset(icmpRcvBuf,O,MAX_PACKET); 初始化套接字 m_hSocket=WSASocket(AFJNET,SOCK_RAW,IP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年簡(jiǎn)化版居家養(yǎng)老照護(hù)合同
- 2024甲方委托乙方可再生能源項(xiàng)目的建設(shè)與運(yùn)營(yíng)合同
- 2024年重點(diǎn)中學(xué)校長(zhǎng)任用合同范本3篇
- 2025年度家禽養(yǎng)殖廢棄物處理設(shè)施運(yùn)營(yíng)管理買賣合同書3篇
- 2025年度財(cái)務(wù)會(huì)計(jì)軟件定制開(kāi)發(fā)與授權(quán)使用合同3篇
- 2024年度商鋪?zhàn)赓U合同提前解除及清退協(xié)議3篇
- 2025年70米煙囪拆除工程風(fēng)險(xiǎn)評(píng)估與安全防護(hù)設(shè)計(jì)合同3篇
- 2024年經(jīng)銷商雙方合作協(xié)議版B版
- 2024年項(xiàng)目管理服務(wù)協(xié)議:工程監(jiān)理與咨詢服務(wù)
- 2024年財(cái)務(wù)風(fēng)險(xiǎn)評(píng)估與管理合同
- 《船舶建造安全監(jiān)理技術(shù)規(guī)范》(征求意見(jiàn)稿)
- 燃燒仿真.燃燒數(shù)值模擬方法:化學(xué)反應(yīng)動(dòng)力學(xué)模型:燃燒仿真前沿技術(shù)與研究
- 線性代數(shù)考試練習(xí)題帶答案大全(二)
- 排水管網(wǎng)溯源排查項(xiàng)目專項(xiàng)培訓(xùn)
- 重癥超聲與休克-課件
- 電梯工程師在電梯設(shè)計(jì)中的工作內(nèi)容
- 二年級(jí)數(shù)學(xué)上冊(cè)口算天天練
- 2024國(guó)家開(kāi)放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
- 職業(yè)技術(shù)學(xué)院食品檢驗(yàn)檢測(cè)技術(shù)專業(yè)課程標(biāo)準(zhǔn)(2023級(jí))
- 08D800-5 民用建筑電氣設(shè)計(jì)與施工 常用電氣設(shè)備安裝與控制
評(píng)論
0/150
提交評(píng)論