发现服务器已开启的TCP服务.doc_第1页
发现服务器已开启的TCP服务.doc_第2页
发现服务器已开启的TCP服务.doc_第3页
发现服务器已开启的TCP服务.doc_第4页
发现服务器已开启的TCP服务.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四 川 理 工 学 院课 程 设 计 书学 院 计算机学院 专 业 计算机科学与技术 班 级 2008级1班 题 目 发现服务器已开启的TCP服务 教 师 鲜乾坤 学 生 赵国章 刘 毅 蒋玉东 目录1.课程设计摘要2.课程设计关键字3.课程设计目的4.课程设计方法5.课程设计分析6.课程设计流程图.7.课程设计源代码.8.课程设计结果及分析.9.课程设计总结.10.参考文献.一课程设计摘要 计算机网络是分布在不同地理位置的多台独立计算机系统的集合,其目的是共享计算机资源。计算机网络环境中进程间的通信采用客户机/服务器模式。IP地址是网络层的地址,而端口是传输层的地址,我们用IP地址和端口号来对某个网络服务进行定位。应用IP地址,通过编程来发现服务器已开启的TCP服务。二课程设计关键字服务器、IP地址、端口号、TCP服务三课程设计目的 Internet是以客户机/服务器模式进行工作的,服务器在某些端口上开起一些网络服务,等侯客户端请求的到来。传输层提供的网络服务有TCP服务和UDP服务两种。传输层在网络体系结构中是承下启上的以层。可以把传输层下面的几层称作传输服务提供者(transport service provider),上面的几层称着传输服务使用者(transport service user)。传输层处于中间,它既使用传输服务提供者提供的服务,又为传输服务使用者提供服务。传输层是网络体系结构中最重要的一层,所以深入理解传输层的作用和协议,对于网络课程的学习极为关键。通过本课程设计的目标是熟悉TCP协议和端口的概念。四课程设计方法编制程序发现已开启的TCP服务。程序的具体要求如下:(1)运行命令行:ScanUsePort serverIP其中,ScanUsePort是程序名;serverIP是服务器的IP地址。(2)输出服务器正在使用的TCP端口号。五课程设计分析(1)常用的端口扫描技术有很多,如TCP connect扫描、TCP SYN扫描以及TCP FIN扫描等。1) 操作系统提供的connect()系统调用用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能连接成功。否则,这个端口是不能使用的,即没有提供服务。这个技术的一个最大优点是,不需要任何限制。系统中任何用户都有权限使用这个调用。2) 如果对每个目标端口以线性方式进行扫描,即用单独的connect()调用,那么扫描速度会很慢,因此我们可以利用多个线程的并行来加快扫描速度。3) 如果对每个目标端口以线性的方式进行扫描,即用单独的connet()调用,那么扫描速度会很慢,因此我们可以利用多个线程的并发运行来加快扫描速度(即采用多线程编程)。4) 下面给出本课程设计的核心代码。创建原始套接字SOCKET sock =socket(AF_INET,SOCK_STREAM, 0);待扫描的服务器IPSockaddr_ in severAddr; /套接字地址变量severAddr . sin_family = AF_INET;severAddr . sin_port = hotons(Port); /端口地址赋值serverAddr . sin_addr_S_un . S_adddr =severIP; /IP地址判断此端口是否打开struct timeval timeout; /超时时间timeout.tv_sec =100 / 1000;timeout .tv _ usec = 0 ;connect(sock, (sockaddr*)&severAddr, sizeof(severAddr); /连接服务器if(select(0, NULL, &write, NULL, &timeout)0 ) 六课程设计流程图开始输入参数正确?搜索端口结束?线程数目太多?创建新线程搜索端口端口+1还有线程未完成?解除线程与socket库绑定结束休眠休眠启动Ws_32.dll上图为图11,是主程序流程图,下图是图12,是主程序使用的线程流程图。线程开始创建原始套接字设置搜索目的的IP及端口设置超时时间输出端口线程数1线程结束端口是否打开?线程数+1 图12主程序使用的线程七课程设计源代码#pragma pack(4)#pragma comment(lib,Ws2_32.lib)#include#include#include#include#include/#include#define STATUS_FAILED 0xFFFF /错误码unsigned long serverIP; /扫描的服务器地址long MaxThread=200; /最大允许的扫描线程long ThreadCount=0; /当前正在扫描的线程数long *aa=&ThreadCount;DWORD WINAPI ScanPort(LPVOID lpParam); /扫描端口的线程void main(int argc,char *argv)/if(argc!=2) /判断输入格式是否正确/ cout输入格式错误:ScanUsePort serveripendl;/return;/WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) /开始使用Ws-32.dllcoutWSAStartup faide:GetLastError()endl;ExitProcess(STATUS_FAILED);char strIP80;cout输入IP地址:strIP;serverIP=inet_addr(strIP);cout使用中的端口号:endl;for(int i=1;i=MaxThread) /超过最大允许线程数,等待Sleep(10);DWORD ThreadID; /创建线程,扫描端口CreateThread(NULL,0,ScanPort,(LPVOID)new short(i),0,&ThreadID);while(ThreadCount0) /还有未完成的线程,等待Sleep(50);WSACleanup();/调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源/扫描端口的线程DWORD WINAPI ScanPort(LPVOID lpParam)short Port=*(short*) lpParam;InterlockedIncrement(aa);/线程数目SOCKET sock=socket(AF_INET,SOCK_STREAM,0);/创建原始套接字if(sock=INVALID_SOCKET)cout创建套接字失败!0)coutPortendl;closesocket(sock);InterlockedDecrement(aa);return 0;八课程设计实验结果及分析1).运行实验源代码,当输入IP地址127.0.0.1时,使用的端口好及结果如下图所示: 图1输入IP地址为172.16.74.121时,程序运行结果如下图所示: 图22)实验结果分析:IP地址是网络层的地址,端口是传输层的地址。计算机使用IP地址和端口号来对某个服务器进行定位。在实验源代码中使用系统提供函数connect(),来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态即端口已在使用中,那么connect()就能连接成功,否则,这个端口是不能使用的,即没有提供服务。因此,当输入IP地址时,程序就能同过connect()函数,找出正在使用中的端口号,如实验结果所示。九课程设计总结(一).在这次课程设计中,遇到了许多的困难,但同学和老师的帮助下,还是顺利完成了。在实验过程中,开始调试实验程序时,由于实验程序的缘故,输出结果不是:输入格式出错:ScanUsePort serveripPress any key to continue就是:使用中的端口号:Press any key to continue最后在同学的帮助下,结果多次找错后,在VC+窗口中的“工程”选项的“设置”中,将程序变量(即IP地址)栏输入IP地址后,运行程序才得出结果。 最后对实验程序进行修改后,变为现在的实验程序,实验通过实验者输入任一IP地址后,运行结果显示该IP地址的计算机正在使用的端口号。如当输入IP地址为:172.16.74.121时,实验运行结果如图2所示。(二).修改后的实验程序在运行时也出现了一点小的问题,就是在改变输入的IP地址后,而输出显示的端口号却不变,这就有问题了,不同的计算机使用的端口号不可能完全相同。对与这个问题在课后通过自己反复运行,得出了输入IP地址为127.0.0.1,输出结果为图1所示的实验结果。(三).通过此次课程设计,学到了不少的东西,在此期间,我们通过网上搜索资料,逛

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论