版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 計算機網(wǎng)絡(luò)課程設(shè)計報告</p><p> 題目 發(fā)現(xiàn)服務(wù)器已開啟的TCP服務(wù) </p><p> 成績 </p><p> 學(xué)院名稱 信息學(xué)院 </p><p> 專業(yè)班級 計科(高職)09-3
2、 </p><p> 學(xué)生姓名 </p><p> 學(xué) 號 </p><p> 指導(dǎo)教師 </p><p> 二○一二 年 六 月 二十一 日</p&
3、gt;<p><b> 目 錄</b></p><p> 1.課程設(shè)計的目的與任務(wù)1</p><p> 2.課程設(shè)計的內(nèi)容1</p><p> 2.1課題分析與設(shè)計1</p><p> 2.2.課題實現(xiàn)1</p><p><b> 3.設(shè)計總
4、結(jié)1</b></p><p><b> 4.附錄1</b></p><p><b> 5.參考文獻1</b></p><p> 課程設(shè)計的目的與任務(wù)</p><p> Internet是以客戶機/服務(wù)器模式進行工作的,服務(wù)器在某些端口上開起一些網(wǎng)絡(luò)服務(wù),等侯客戶端請求的
5、到來。傳輸層提供的網(wǎng)絡(luò)服務(wù)有TCP服務(wù)和UDP服務(wù)兩種。傳輸層在網(wǎng)絡(luò)體系結(jié)構(gòu)中是承下啟上的以層??梢园褌鬏攲酉旅娴膸讓臃Q作傳輸服務(wù)提供者(transport service provider),上面的幾層稱著傳輸服務(wù)使用者(transport service user)。傳輸層處于中間,它既使用傳輸服務(wù)提供者提供的服務(wù),又為傳輸服務(wù)使用者提供服務(wù)。傳輸層是網(wǎng)絡(luò)體系結(jié)構(gòu)中最重要的一層,所以深入理解傳輸層的作用和協(xié)議,對于網(wǎng)絡(luò)課程的學(xué)習極為
6、關(guān)鍵。通過本課程設(shè)計的目標是熟悉TCP協(xié)議和端口的概念。 </p><p><b> 課程設(shè)計的內(nèi)容</b></p><p><b> 課題分析與設(shè)計</b></p><p><b> 選題方向及內(nèi)容簡介</b></p><p> 計算機網(wǎng)絡(luò)是分布在不同地理位置的
7、多臺獨立計算機系統(tǒng)的集合,其目的是共享計算機資源。計算機網(wǎng)絡(luò)環(huán)境中進程間的通信采用客戶機/服務(wù)器模式。IP地址是網(wǎng)絡(luò)層的地址,而端口是傳輸層的地址,我們用IP地址和端口號來對某個網(wǎng)絡(luò)服務(wù)進行定位。應(yīng)用IP地址,通過編程來發(fā)現(xiàn)服務(wù)器已開啟的TCP服務(wù)。</p><p><b> 課題分析與設(shè)計 </b></p><p> 本次設(shè)計的內(nèi)容是編制程序發(fā)現(xiàn)已開啟的TCP服
8、務(wù)。</p><p> 程序的具體要求如下:</p><p> ?。?)運行命令行:ScanUsePort serverIP。其中,ScanUsePort是程序名;serverIP是服務(wù)器的IP地址。</p><p> ?。?)輸出服務(wù)器正在使用的TCP端口號。</p><p><b> 設(shè)計使用的技術(shù)介紹</b>&
9、lt;/p><p> (1)常用的端口掃描技術(shù)有很多,如TCP connect掃描、TCP SYN掃描 以及TCP FIN掃描等。</p><p> 操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用用來與每一個感興趣的目標計算機的端口進行連接。如果端口處于偵聽狀態(tài),那么connect()就能連接成功。否則,這個端口是不能使用的,即沒有提供服務(wù)。這個技術(shù)的一個最大優(yōu)點是,不需
10、要任何限制。系統(tǒng)中任何用戶都有權(quán)限使用這個調(diào)用。</p><p> 如果對每個目標端口以線性方式進行掃描,即用單獨的connect()調(diào)用,那么掃描速度會很慢,因此我們可以利用多個線程的并行來加快掃描速度。</p><p> 如果對每個目標端口以線性的方式進行掃描,即用單獨的connet()調(diào)用,那么掃描速度會很慢,因此我們可以利用多個線程的并發(fā)運行來加快掃描速度(即采用多線程編程)。
11、</p><p><b> 課題實現(xiàn)</b></p><p><b> 實現(xiàn)過程描述</b></p><p> 圖1 主程序流程圖</p><p> 圖2 主程序使用的線程</p><p><b> 各模塊具體實現(xiàn)</b></p>
12、<p><b> ●創(chuàng)建原始套接字</b></p><p> SOCKET sock =socket(AF_INET,SOCK_STREAM, 0);</p><p> ●待掃描的服務(wù)器IP</p><p> Sockaddr_ in severAddr; //套接字地址變量</p>
13、<p> severAddr . sin_family = AF_INET;</p><p> severAddr . sin_port = hotons(Port); //端口地址賦值</p><p> serverAddr . sin_addr_S_un . S_adddr =severIP; //IP地址</p><p>
14、 ●判斷此端口是否打開</p><p> struct timeval timeout; //超時時間</p><p> timeout.tv_sec =100 / 1000;</p><p> timeout .tv _ usec = 0 ;</p><p> connect(sock, (so
15、ckaddr*)&severAddr, sizeof(severAddr)); //連接服務(wù)器</p><p> if(select(0, NULL, &write, NULL, &timeout)>0 ) </p><p><b> 系統(tǒng)測試</b></p><p> 1).運行實驗源代碼,當輸入IP地址
16、127.0.0.1時,使用的端口好及結(jié)果如下圖所示:</p><p><b> 圖1</b></p><p> 輸入IP地址為172.16.74.121時,程序運行結(jié)果如下圖所示:</p><p><b> 圖2</b></p><p><b> 2)實驗結(jié)果分析:</b&g
17、t;</p><p> IP地址是網(wǎng)絡(luò)層的地址,端口是傳輸層的地址。計算機使用IP地址和端口號來對某個服務(wù)器進行定位。在實驗源代碼中使用系統(tǒng)提供函數(shù)connect(),來與每一個感興趣的目標計算機的端口進行連接。如果端口處于偵聽狀態(tài)即端口已在使用中,,那么connect()就能連接成功,否則,這個端口是不能使用的,即沒有提供服務(wù)。因此,當輸入IP地址時,程序就能同過connect()函數(shù),找出正在使用中的端口號
18、,如實驗結(jié)果所示。</p><p><b> 設(shè)計總結(jié)</b></p><p> ?。?)在這次課程設(shè)計中,遇到了許多的困難,但同學(xué),還是順利完成了。在實驗過程中,開始調(diào)試實驗程序時,由于實驗程序的緣故,輸出結(jié)果不是:</p><p> 輸入格式出錯:ScanUsePort serverip</p><p> P
19、ress any key to continue</p><p><b> 就是:</b></p><p><b> 使用中的端口號:</b></p><p> Press any key to continue</p><p> 在VC++窗口中的“工程”選項的“設(shè)置”中,
20、將程序變量(即IP地址)欄輸入IP地址后,運行程序才得出結(jié)果。</p><p> 最后對實驗程序進行修改后,變?yōu)楝F(xiàn)在的實驗程序,實驗通過實驗者輸入任一IP地址后,運行結(jié)果顯示該IP地址的計算機正在使用的端口號。如當輸入IP地址為:172.16.74.121時,實驗運行結(jié)果如圖2所示。</p><p> 修改后的實驗程序在運行時也出現(xiàn)了一點小的問題,就是在改變輸入的IP地址后,而輸出顯示
21、的端口號卻不變,這就有問題了,不同的計算機使用的端口號不可能完全相同。對與這個問題在課后通過自己反復(fù)運行,得出了輸入IP地址為127.0.0.1,輸出結(jié)果為圖1所示的實驗結(jié)果。</p><p> 本次課程設(shè)計主要是建立在傳輸層,在傳輸層上進行TCP和UPD的分析。在理論課學(xué)習時,只是簡單的對理論知識進行了解而沒有進行實際的操作。這次課程設(shè)計讓我在理論學(xué)習的同時對傳輸層的工作有了更深了了解。</p>
22、<p><b> 附錄</b></p><p> #pragma pack(4)</p><p> #pragma comment(lib,"Ws2_32.lib")</p><p> #include<stdio.h></p><p> #include<wi
23、nsock2.h></p><p> #include<ws2tcpip.h></p><p> #include<stdlib.h></p><p> #include<iostream.h></p><p> //#include<string.h></p>&l
24、t;p> #define STATUS_FAILED 0xFFFF //錯誤碼</p><p> unsigned long serverIP; //掃描的服務(wù)器地址</p><p> long MaxThread=200; //最大允許的掃描線程</p><p> long Thread
25、Count=0; //當前正在掃描的線程數(shù)</p><p> long *aa=&ThreadCount;</p><p> DWORD WINAPI ScanPort(LPVOID lpParam); //掃描端口的線程</p><p> void main(int argc,char *argv[])</p
26、><p><b> {</b></p><p> //if(argc!=2) //判斷輸入格式是否正確</p><p><b> //{</b></p><p> // cout<<"輸入格式錯誤:ScanUse
27、Port serverip"<<endl;</p><p> //return;</p><p><b> //}</b></p><p> WSADATA WSAData;</p><p> if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)
28、 //開始使用Ws-32.dll</p><p><b> {</b></p><p> cout<<"WSAStartup faide:"<<GetLastError()<<endl;</p><p> ExitProcess(STATUS_FAILED);</p>
29、<p><b> }</b></p><p> char strIP[80];</p><p> cout<<"輸入IP地址:"<<endl;</p><p> cin>>strIP;</p><p> serverIP=inet_addr(st
30、rIP);</p><p> cout<<"使用中的端口號:"<<endl;</p><p> for(int i=1;i<1024;i++) //掃描所有服務(wù)器端口</p><p><b> {</b></p><p> whil
31、e(ThreadCount>=MaxThread) //超過最大允許線程數(shù),等待</p><p><b> {</b></p><p> Sleep(10);</p><p><b> }</b></p><p> DWORD ThreadID; //創(chuàng)建
32、線程,掃描端口</p><p> CreateThread(NULL,0,ScanPort,(LPVOID)new short(i),0,&ThreadID);</p><p><b> }</b></p><p> while(ThreadCount>0) //還有未完成的線程,等待</p
33、><p><b> {</b></p><p> Sleep(50);</p><p><b> }</b></p><p> WSACleanup();//調(diào)用WSACleanup函數(shù)來解除與Socket庫的綁定并且釋放Socket庫所占用的系統(tǒng)資源</p>&l
34、t;p> }//掃描端口的線程</p><p> DWORD WINAPI ScanPort(LPVOID lpParam)</p><p><b> {</b></p><p> short Port=*(short*) lpParam;</p><p> InterlockedIncrem
35、ent(aa);//線程數(shù)目+1</p><p> SOCKET sock=socket(AF_INET,SOCK_STREAM,0);//創(chuàng)建原始套接字</p><p> if(sock==INVALID_SOCKET)</p><p><b> {</b></p><p> cout<<
36、"創(chuàng)建套接字失敗!"<<endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b><
37、/p><p> sockaddr_in severAddr;//搜索服務(wù)器IP</p><p> severAddr.sin_family=AF_INET;</p><p> severAddr.sin_port=htons(Port);//端口地址</p><p> severAddr.sin_addr.S_un.S_addr
38、=serverIP;//IP地址</p><p> connect(sock,(sockaddr*)&severAddr,sizeof(severAddr));</p><p> struct fd_set write; //寫socket集合 </p><p> FD_ZERO(&write);</p><p
39、> FD_SET(sock,&write);</p><p> struct timeval timeout;//超時</p><p> timeout.tv_sec=100/1000;</p><p> timeout.tv_usec=0;//設(shè)置超時時間</p><p> if(select(0,NULL
40、,&write,NULL,&timeout)>0)</p><p><b> {</b></p><p> cout<<Port<<endl;</p><p><b> }</b></p><p> closesocket(sock);</
41、p><p><b> }</b></p><p> InterlockedDecrement(aa);</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 5. 參考文獻&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)現(xiàn)服務(wù)器已開啟的tcp服務(wù)計算機網(wǎng)絡(luò)課程設(shè)計
- udp服務(wù)器設(shè)計---課程設(shè)計
- 課程設(shè)計報告---udp服務(wù)器設(shè)計
- 嵌入式課程設(shè)計--linux tcp服務(wù)器_客戶端通信程序
- tcp_ip課程設(shè)計---基于套接字的客戶機服務(wù)器程序設(shè)計
- 服務(wù)器應(yīng)用系統(tǒng)的實踐課程設(shè)計報告
- ftp服務(wù)器的構(gòu)建與維護課程設(shè)計
- 網(wǎng)絡(luò)工程課程設(shè)計--web服務(wù)器配置
- 課程設(shè)計--linux中samba服務(wù)器配置方法
- linux課程設(shè)計-linux下ftp服務(wù)器的搭建
- 網(wǎng)絡(luò)程序設(shè)計linux服務(wù)器課程設(shè)計報告
- 網(wǎng)絡(luò)設(shè)備及windows服務(wù)器開啟snmp
- 【課程設(shè)計】linux環(huán)境下samba服務(wù)器配置與實現(xiàn)
- 通信應(yīng)用軟件課程設(shè)計---線程同步服務(wù)器編程
- linux課程設(shè)計報告-- 構(gòu)建綜合網(wǎng)絡(luò)服務(wù)器
- 網(wǎng)絡(luò)課程設(shè)計---linux服務(wù)器的配置---ubuntu操作系統(tǒng)
- 課程設(shè)計報告---聊天工具服務(wù)器端設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計--dns服務(wù)器搭建
- 計算機網(wǎng)絡(luò)課程設(shè)計--dns服務(wù)器配置
- 網(wǎng)絡(luò)管理課程設(shè)計--證書服務(wù)器及流媒體應(yīng)用
評論
0/150
提交評論