"ICMP/TCP端口扫描C语言设计实践"

2 下载量 70 浏览量 更新于2023-12-23 收藏 597KB DOC 举报
《基于ICMPTCP的网段端口扫描C语言编写》是一份计算机网络专业课程设计任务书,旨在加深对TCP/IP协议的了解,熟悉Socket编程。设计任务要求实现一个扫描器,能够使用TCP connect、TCP SYN和TCP FIN进行端口扫描,使用ICMP echo扫描实现IP扫描,并将结果进行统计。该设计需要在Windows或Linux环境下,在单机上运行,并具有友好的用户界面。 设计要求包括程序源代码具备具体注释,并需要进行项目设计汇报。该课程设计对于端口扫描和IP扫描程序进行了详细的概述,以及相关的要求和演示。通过对一台主机的端口进行扫描并显示结果,以及对一个网段进行IP扫描并显示结果,来实现设计目标。 在本课程设计中,端口扫描是一项重要的任务。通过使用TCP connect、TCP SYN和TCP FIN来进行端口扫描,实现了对主机打开的端口进行扫描,从而加深对TCP/IP协议的理解。另外,通过ICMP echo进行IP扫描,可以实现对网段内开机主机的扫描,进一步熟悉Socket编程。 为了实现设计要求,本课程设计需要进行大量的编程工作。C语言被选用作为实现语言,通过C语言编写的方式来完成端口扫描和IP扫描的功能。编写的程序需要具备友好的用户界面,以便用户能够方便地进行操作,并能够对扫描结果进行清晰的显示和统计。同时,为了方便他人理解和使用,编写的源代码需要进行详细的注释,以便他人理解代码的逻辑和功能。 通过本课程设计,学生将在实践中深入了解TCP/IP协议和Socket编程,并通过实际编码的方式加深对理论知识的掌握。通过完成项目设计汇报,学生能够培养自己的表达能力和团队合作能力。通过这一系列的任务,学生将在实践中逐渐提高自己的编程水平和网络专业知识,为未来的求职和工作打下坚实的基础。 总之,本课程设计涵盖了计算机网络专业课程的相关知识,通过设计和实现端口扫描和IP扫描程序,为学生提供了一个很好的学习和实践机会。通过完成这一课程设计,学生将加深对计算机网络技术的理解,提高自己的编程水平,并为今后的学习和工作奠定基础。
2023-05-25 上传
信息工程学院计算机网络 课程研究报告 题目全称: 端口扫描工具设计 课 程: 计算机网络 学 号: 班 级: 姓 名: 摘要 在现在这个信息化的社会中,网络的发展已经超出了人们预想,在很短的时间里已经渗透到军事,金融,商业,交通,电信,教育等领域,并发挥着越来越大的作用。社会对网络系统的依赖也越来越强,使得密集信息和财富高度集中与计算机中。另一方面,这些网络系统都依靠计算机网络接受和处理信息,实现其相互间的联系和对目标的管理与控制。而网络端口扫描作为维护网络安全的重要手段,可以帮助服务器提供商找出自身漏洞,避免黑客攻击;测试远程服务器的端口是否可达,防止沿途运营商、防火墙限制了端口导致服务不可用。 .备注 本次计算机网络课程设计我主要是学习一下端口扫描工具的基本知识以及研究别人做出的端口扫描工具,以下即是本次研究的相关研究报告。鉴于自己计算机方面知识不是很好,不足之处还请老师指出与修正。 端口扫描器的研究 TCP协议介绍 提到端口扫描技术就不可不提及TCP协议了,作为互联网的核心协议,TCP协议的重要性是人人皆知,端口扫描主要是建立在TCP协议基础上的一门技术。TCP协议是一种面向连接的,可靠的传输协议。一次正常的TCP传输需要通过在客户和服务器之间建立特定的虚电路连接来完成,这个过程通常被称为"三次握手"。TCP通过数据分段中的序列号保证所有的传输数据可以在远端按照正常的次序重组,而通过确认保证数据传输的完整性。 三次握手过程: 1:客户端发送一个TCP包(SYN请求)给服务端,其中标记SYN(同步序号)要打开。SYN请求指明了客户端希望连接的服务器端端口号和客户端的ISN。 2:服务器端发回应答,包含自己的SYN信息ISN和对客户端的SYN应答,应答时返回下一个希望得到的字节序号。 3:客户端对从S服务器端来的SYN进行应答,数据发送开始。 UDP协议介绍 UDP,用户数据报协议。UDP为应用程序提供了一种方法来发送经过封装的IP数据报,而且不必建立连接就可以发送这些IP数据报。 UDP传输的数据段是由8个字节的头和净荷域构成的。两个端口分别被用来标识出源机器和目标机器内部的端点。当一个UDP分组到来的时候,它的净荷部分被递交给与目标端口相关联的那个进程。当目标端口必须将一个应答送回给源端口的时候,源端口是必须的。发送应答的进程只要将近来的数据段中的源端口域复制到输出的数据段中的目标端口域,就可以指定在发送机器上有哪个进程来接受应答。UDP长度包含了8字节的头和数据部分。UDP校验和是可选的,如果不计算的话,则在该域中存放0,如果真正的计算结果试的话,则该域中存放的全是1,除非数据 的质量并不重要,否则就不应该将校验和的功能关闭。另外值得明确提出来的是UDP没有做到的一些事情。UDP并不考虑流控制,错误控制,在收到一个坏的数据段之后它也不重传。所有这些工作都留给用户的进程。UDP所作的事情是提供一个接口,并且 接口中增加解复用的特性。他利用端口的概念将数据段解复用到多个进程中,这就是他所做的全部工作。 SOCKET介绍 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Uinx系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立,数据传输等操作都是通过该Socket实现的。 Sockfd是需要关闭的socket的描述符。参数 how允许为shutdown操作选择以下几种方式: ·0-------不允许继续接收数据 ·1-------不允许继续发送数据 ·2-------不允许继续发送和接收数据,均为允许则调用close ()   shutdown在操作成功时返回0,在出现错误时返回-1并置相应errno。 常用端口扫描技术 TCP connect()扫描: 这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描。使用非阻