發(fā)現(xiàn)服務(wù)器已開(kāi)啟的tcp服務(wù)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告</p><p>  題目 發(fā)現(xiàn)服務(wù)器已開(kāi)啟的TCP服務(wù) </p><p>  成績(jī) </p><p>  學(xué)院名稱(chēng)  信息學(xué)院 </p><p>  專(zhuān)業(yè)班級(jí)    計(jì)科(高職)09-3

2、 </p><p>  學(xué)生姓名  </p><p>  學(xué) 號(hào)   </p><p>  指導(dǎo)教師   </p><p>  二○一二 年 六 月 二十一 日</p&

3、gt;<p><b>  目 錄</b></p><p>  1.課程設(shè)計(jì)的目的與任務(wù)1</p><p>  2.課程設(shè)計(jì)的內(nèi)容1</p><p>  2.1課題分析與設(shè)計(jì)1</p><p>  2.2.課題實(shí)現(xiàn)1</p><p><b>  3.設(shè)計(jì)總

4、結(jié)1</b></p><p><b>  4.附錄1</b></p><p><b>  5.參考文獻(xiàn)1</b></p><p>  課程設(shè)計(jì)的目的與任務(wù)</p><p>  Internet是以客戶(hù)機(jī)/服務(wù)器模式進(jìn)行工作的,服務(wù)器在某些端口上開(kāi)起一些網(wǎng)絡(luò)服務(wù),等侯客戶(hù)端請(qǐng)求的

5、到來(lái)。傳輸層提供的網(wǎng)絡(luò)服務(wù)有TCP服務(wù)和UDP服務(wù)兩種。傳輸層在網(wǎng)絡(luò)體系結(jié)構(gòu)中是承下啟上的以層??梢园褌鬏攲酉旅娴膸讓臃Q(chēng)作傳輸服務(wù)提供者(transport service provider),上面的幾層稱(chēng)著傳輸服務(wù)使用者(transport service user)。傳輸層處于中間,它既使用傳輸服務(wù)提供者提供的服務(wù),又為傳輸服務(wù)使用者提供服務(wù)。傳輸層是網(wǎng)絡(luò)體系結(jié)構(gòu)中最重要的一層,所以深入理解傳輸層的作用和協(xié)議,對(duì)于網(wǎng)絡(luò)課程的學(xué)習(xí)極為

6、關(guān)鍵。通過(guò)本課程設(shè)計(jì)的目標(biāo)是熟悉TCP協(xié)議和端口的概念。 </p><p><b>  課程設(shè)計(jì)的內(nèi)容</b></p><p><b>  課題分析與設(shè)計(jì)</b></p><p><b>  選題方向及內(nèi)容簡(jiǎn)介</b></p><p>  計(jì)算機(jī)網(wǎng)絡(luò)是分布在不同地理位置的

7、多臺(tái)獨(dú)立計(jì)算機(jī)系統(tǒng)的集合,其目的是共享計(jì)算機(jī)資源。計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中進(jìn)程間的通信采用客戶(hù)機(jī)/服務(wù)器模式。IP地址是網(wǎng)絡(luò)層的地址,而端口是傳輸層的地址,我們用IP地址和端口號(hào)來(lái)對(duì)某個(gè)網(wǎng)絡(luò)服務(wù)進(jìn)行定位。應(yīng)用IP地址,通過(guò)編程來(lái)發(fā)現(xiàn)服務(wù)器已開(kāi)啟的TCP服務(wù)。</p><p><b>  課題分析與設(shè)計(jì) </b></p><p>  本次設(shè)計(jì)的內(nèi)容是編制程序發(fā)現(xiàn)已開(kāi)啟的TCP服

8、務(wù)。</p><p>  程序的具體要求如下:</p><p> ?。?)運(yùn)行命令行:ScanUsePort serverIP。其中,ScanUsePort是程序名;serverIP是服務(wù)器的IP地址。</p><p> ?。?)輸出服務(wù)器正在使用的TCP端口號(hào)。</p><p><b>  設(shè)計(jì)使用的技術(shù)介紹</b>&

9、lt;/p><p> ?。?)常用的端口掃描技術(shù)有很多,如TCP connect掃描、TCP SYN掃描 以及TCP FIN掃描等。</p><p>  操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用用來(lái)與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽(tīng)狀態(tài),那么connect()就能連接成功。否則,這個(gè)端口是不能使用的,即沒(méi)有提供服務(wù)。這個(gè)技術(shù)的一個(gè)最大優(yōu)點(diǎn)是,不需

10、要任何限制。系統(tǒng)中任何用戶(hù)都有權(quán)限使用這個(gè)調(diào)用。</p><p>  如果對(duì)每個(gè)目標(biāo)端口以線性方式進(jìn)行掃描,即用單獨(dú)的connect()調(diào)用,那么掃描速度會(huì)很慢,因此我們可以利用多個(gè)線程的并行來(lái)加快掃描速度。</p><p>  如果對(duì)每個(gè)目標(biāo)端口以線性的方式進(jìn)行掃描,即用單獨(dú)的connet()調(diào)用,那么掃描速度會(huì)很慢,因此我們可以利用多個(gè)線程的并發(fā)運(yùn)行來(lái)加快掃描速度(即采用多線程編程)。

11、</p><p><b>  課題實(shí)現(xiàn)</b></p><p><b>  實(shí)現(xiàn)過(guò)程描述</b></p><p>  圖1 主程序流程圖</p><p>  圖2 主程序使用的線程</p><p><b>  各模塊具體實(shí)現(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、 ●判斷此端口是否打開(kāi)</p><p>  struct timeval timeout; //超時(shí)時(shí)間</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)測(cè)試</b></p><p>  1).運(yùn)行實(shí)驗(yàn)源代碼,當(dāng)輸入IP地址

16、127.0.0.1時(shí),使用的端口好及結(jié)果如下圖所示:</p><p><b>  圖1</b></p><p>  輸入IP地址為172.16.74.121時(shí),程序運(yùn)行結(jié)果如下圖所示:</p><p><b>  圖2</b></p><p><b>  2)實(shí)驗(yàn)結(jié)果分析:</b&g

17、t;</p><p>  IP地址是網(wǎng)絡(luò)層的地址,端口是傳輸層的地址。計(jì)算機(jī)使用IP地址和端口號(hào)來(lái)對(duì)某個(gè)服務(wù)器進(jìn)行定位。在實(shí)驗(yàn)源代碼中使用系統(tǒng)提供函數(shù)connect(),來(lái)與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽(tīng)狀態(tài)即端口已在使用中,,那么connect()就能連接成功,否則,這個(gè)端口是不能使用的,即沒(méi)有提供服務(wù)。因此,當(dāng)輸入IP地址時(shí),程序就能同過(guò)connect()函數(shù),找出正在使用中的端口號(hào)

18、,如實(shí)驗(yàn)結(jié)果所示。</p><p><b>  設(shè)計(jì)總結(jié)</b></p><p> ?。?)在這次課程設(shè)計(jì)中,遇到了許多的困難,但同學(xué),還是順利完成了。在實(shí)驗(yàn)過(guò)程中,開(kāi)始調(diào)試實(shí)驗(yàn)程序時(shí),由于實(shí)驗(yàn)程序的緣故,輸出結(jié)果不是:</p><p>  輸入格式出錯(cuò):ScanUsePort serverip</p><p>  P

19、ress any key to continue</p><p><b>  就是:</b></p><p><b>  使用中的端口號(hào):</b></p><p>  Press any key to continue</p><p>  在VC++窗口中的“工程”選項(xiàng)的“設(shè)置”中,

20、將程序變量(即IP地址)欄輸入IP地址后,運(yùn)行程序才得出結(jié)果。</p><p>  最后對(duì)實(shí)驗(yàn)程序進(jìn)行修改后,變?yōu)楝F(xiàn)在的實(shí)驗(yàn)程序,實(shí)驗(yàn)通過(guò)實(shí)驗(yàn)者輸入任一IP地址后,運(yùn)行結(jié)果顯示該IP地址的計(jì)算機(jī)正在使用的端口號(hào)。如當(dāng)輸入IP地址為:172.16.74.121時(shí),實(shí)驗(yàn)運(yùn)行結(jié)果如圖2所示。</p><p>  修改后的實(shí)驗(yàn)程序在運(yùn)行時(shí)也出現(xiàn)了一點(diǎn)小的問(wèn)題,就是在改變輸入的IP地址后,而輸出顯示

21、的端口號(hào)卻不變,這就有問(wèn)題了,不同的計(jì)算機(jī)使用的端口號(hào)不可能完全相同。對(duì)與這個(gè)問(wèn)題在課后通過(guò)自己反復(fù)運(yùn)行,得出了輸入IP地址為127.0.0.1,輸出結(jié)果為圖1所示的實(shí)驗(yàn)結(jié)果。</p><p>  本次課程設(shè)計(jì)主要是建立在傳輸層,在傳輸層上進(jìn)行TCP和UPD的分析。在理論課學(xué)習(xí)時(shí),只是簡(jiǎn)單的對(duì)理論知識(shí)進(jìn)行了解而沒(méi)有進(jìn)行實(shí)際的操作。這次課程設(shè)計(jì)讓我在理論學(xué)習(xí)的同時(shí)對(duì)傳輸層的工作有了更深了了解。</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 //錯(cuò)誤碼</p><p>  unsigned long serverIP; //掃描的服務(wù)器地址</p><p>  long MaxThread=200; //最大允許的掃描線程</p><p>  long Thread

25、Count=0; //當(dāng)前正在掃描的線程數(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<<"輸入格式錯(cuò)誤: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、 //開(kāi)始使用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<<"使用中的端口號(hào):"<<endl;</p><p>  for(int i=1;i<1024;i++) //掃描所有服務(wù)器端口</p><p><b>  {</b></p><p>  whil

31、e(ThreadCount>=MaxThread) //超過(guò)最大允許線程數(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ù)來(lái)解除與Socket庫(kù)的綁定并且釋放Socket庫(kù)所占用的系統(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; //寫(xiě)socket集合 </p><p>  FD_ZERO(&write);</p><p

39、>  FD_SET(sock,&write);</p><p>  struct timeval timeout;//超時(shí)</p><p>  timeout.tv_sec=100/1000;</p><p>  timeout.tv_usec=0;//設(shè)置超時(shí)時(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. 參考文獻(xiàn)&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論