数据通信与计算机网络课程设计要求.doc

上传人:hw****26 文档编号:3186919 上传时间:2019-05-24 格式:DOC 页数:24 大小:1.07MB
下载 相关 举报
数据通信与计算机网络课程设计要求.doc_第1页
第1页 / 共24页
数据通信与计算机网络课程设计要求.doc_第2页
第2页 / 共24页
数据通信与计算机网络课程设计要求.doc_第3页
第3页 / 共24页
数据通信与计算机网络课程设计要求.doc_第4页
第4页 / 共24页
数据通信与计算机网络课程设计要求.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第一部分 数据通信与计算机网络课程设计(要求)一、课程设计的性质、目的和任务性质:独立设课目的和任务:1、掌握数据通信和计算机网络的基本原理2、掌握数据通信和计算机网络设计、分析和实现方法3、提高学生编制网络通信程序、网络应用服务程序的能力二、课程设计的基本内容和要求基本内容:网络数据通信的基本方法及实现。基本要求:根据选定的项目,课题小组成员认真查阅相关资料,发挥学生的主体作用,提出设计方案,老师参与,进行讨论和分析,最终确定设计方案。在此基础上,合理分工,协同完成项目的设计与实现,最后完成课程设计的报告撰写。三、课程设计的内容学时安排序号 实验项目 学时分配 实验类型 每组人数 内容提要1

2、 ARP 协议数据包的捕获解析设计与实现1 周 设计性 3-6 人 通过本实验,掌握网络协议数据包捕获和解析编程的技术2 基于 Socket 的在线数据传输设计与实现1 周 设计性 3-6 人 基于 Socket 套接口,实现通信双方的在线键盘数据传输服务。目的使学生掌握网络在线数据交换的设计方法。3 基于 Socket 的文件传输服务(FTP )设计与实现1 周 设计性 3-6 人 基于 Socket 套接口,实现文件数据传输服务。目的使学生掌握文件传输服务的设计方法。4 基于 Socket 的 HTTP文件传输服务设计与实现1 周 设计性 3-6 人 基于 Socket 套接口,实现 HT

3、TP 文件数据传输服务。目的使学生掌握Web 网络服务的设计方法。5 基于 Socket 的 Telnet服务设计与实现1 周 设计性 3-6 人 基于 Socket 套接口,实现 Telnet 服务。目的使学生掌握远程登录网络访问服务的设计方法。6 滑动窗口协议的模拟 1 周 设计性 3-6 人 通过实现对于滑动窗口协议的模拟,加深对滑动窗口协议的理解。7 简单的端口扫描 1 周 设计性 3-6 人 实现一个扫描器,必须能够完成以下所有功能:使用 TCP connect、TCP SYN 和 TCP FIN 进行端口扫描,使用 ICMP echo 扫描实现 IP 扫描。并把扫描得知的结果记录下

4、来。注:一、滑动窗口协议的模拟1 关于滑动窗口,请阅读网络教材(实现 选择性重发) ;2 运行时启动两个线程 client 和 server。其中 sever 初始应该为监听状态;3 可指定滑动窗口数目 m(m 2n,n 为大于 1 的整数)和要发送的帧总数,停等的超时时间间隔以及发送类型(正常发送,即没有缺帧和错序发送帧的现象) ,发送速率等参数;4 client 向 server 发起连接,成功则转入 5;5 client 端发出帧,帧的内容可同序号或者为“111” “222”“aaa”“bbb”或者是一段文章中的部分内容;6 选择发送类型为“缺帧” ,模拟因网络拥塞造成丢帧的情况,开始发

5、送情况同“正常发送”的情况。不同的是在帧 x 发送前用户可以选择丢失,则客户端继续接收帧 x+1,x+2并且对帧 x+1,x+2发出确认并缓存该帧;7 服务器端等待一段相当长的时间(超时) ,重发帧 x;8 选择发送类型为“错序发送” 。将一组待发送的帧按照指定(错序)顺序发送。具体实现同“缺帧”情况;9 以上各种情况下, client 和 server 窗口中应实时显示帧的发送和接受情况,包括序号,到达时间,内容等。以及窗口的填充和清空情况;10 使用 socket 编程;11 本实验要求实现的是一个简化了许多的滑动窗口协议。对于所有包,在生成序列号后进行发送。接收方为每个包设定一个定时器,

6、记录包的到达情况。如发送方发送速度过快,或某包定时器超时,则发送方应重发。接受方窗口满时,接受到的包应被拷贝至硬盘(以下部分可以自由设计,仅做参考) 。12 主要的数据结构:包:class packetprotect:int num;/数据包的序号cstring content;/数据包内容 /method 消息:class messageprotect:int no;/消息的序号cstring content;/消息内容int id;/消息的方向/method 13 程序主要流程14 方法:void create_windows() ;/模拟滑动窗口协议中发送,接受窗口void create

7、_packet() ;/模拟滑动窗口协议中包bool create_timer() ;/模拟滑动窗口协议中的定时器int waitfornext() ;/等待下一个包void resend() ;/重发void receive() ;/数据包到达,接受数据包void write() ;/数据包全部到达,写入硬盘注:本实验主要目的是为了加深同学们对于滑动窗口协议的了解,而不是底层的网络编程。所以在这里, “包”的概念可以是一组题为“1” 、 “2”、 “3”等等的文件(由程序动态创建) 。如果是在两台机器上实现,其中一台机器作为发送方,另一台则是接收方,双方进行通讯。如果接收方窗口大小为 6,则

8、当编号为 7 的包(文件)到达时,接受方应作相应处理,包括通知发送方暂停发送,缓存收到的包,清空滑动窗口等。当然,对于出错的情况,比如包丢失,不按序到达等情况编程者应有所考虑,所以在模拟接收方的机器上,应提供选择待发送包序号的界面。一个简单的选择发送包的界面如下:15 按序发送create_windows()createpackets()Createtimer()Receive()Waitfornext()Write()超时包全部进入Resend()16 错序发送(包 4 未发送)二、简单的端口扫描1、基本概念 三次握手 Three-way Handshake 一个虚拟连接的建立是通过三次握手

9、来实现的 1. (B) SYN (A) 假如服务器 A 和客户机 B 通讯. 当 A 要和 B 通信时,B 首先向 A 发一个SYN (Synchronize) 标记的包,告诉 A 请求建立连接. 注意: 一个 SYN 包就是仅 SYN 标记设为 1 的 TCP 包(参见 TCP 包头 Resources). 认识到这点很重要,只有当 A 收到 B 发来的 SYN 包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的 SYN 包,那么你将不能让外部任何主机主动建立连接。2. (B) ACK (A) B 收到 SYN/ACK ,B 发一个确认包(ACK),通知 A 连

10、接已建立。至此,三次握手完成,一个 TCP 连接完成 。Note: ACK 包就是仅 ACK 标记设为 1 的 TCP 包。 需要注意的是当三次握手完成、连接建立以后,TCP 连接的每个包都会设置 ACK 位。这就是为何连接跟踪很重要的原因了. 没有连接跟踪,防火墙将无法判断收到的 ACK包是否属于一个已经建立的连接。一般的包过滤(Ipchains)收到 ACK 包时,会让它通过;而当状态型防火墙收到此种包时,它会先在连接表中查找是否属于哪个已建连接,否则丢弃该包 。 四次握手 Four-way Handshake 四次握手用来关闭已建立的 TCP 连接 1. (B) ACK/FIN (A)

11、2. (B) ACK (A) 注意: 由于 TCP 连接是双向连接 , 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK和 FIN 标记设为 1)通常被认为是 FIN(终结)包。然而,由于连接还没有关闭, FIN 包总是打上 ACK 标记。 没有 ACK 标记而仅有 FIN 标记的包不是合法的包,并且通常被认为是恶意的。最常见的非法组合是 SYN/FIN 包。 注意:由于 SYN 包是用来初始化连接的。 它不可能和 FIN 和 RST 标记一起出现,这也是一个恶意攻击。表 3-2 TCP 状态表 状 态 描 述CLOSED 关闭状态,没有连接活动或正在进行 LISTEN 监听状态,服

12、务器正在等待连接进入 SYN RCVD 收到一个连接请求,尚未确认SYN SENT 已经发出连接请求,等待确认 ESTABLISHED 连接建立,正常数据传输状态 FIN WAIT 1 (主动关闭)已经发送关闭请求,等待确认FIN WAIT 2 (主动关闭)收到对方关闭确认,等待对方关闭请求 TIMED WAIT 完成双向关闭,等待所有分组死掉CLOSING 双方同时尝试关闭,等待对方确认CLOSE WAIT (被动关闭)收到对方关闭请求,已经确认 LAST ACK (被动关闭)等待最后一个关闭确认,并等待所有分组死掉 正常状态转换 1 服务器端首先执行 LISTEN 原语进入被动打开状态(

13、LISTEN ) ,等待客户端连接; 2 当客户端的一个应用程序发出 CONNECT 命令后,本地的 TCP 实体为其创建一个连接记录并标记为 SYN SENT 状态,然后给服务器发送一个 SYN 报文段; 3 服务器收到一个 SYN 报文段,其 TCP 实体给客户端发送确认 ACK 报文段同时发送一个 SYN 信号,进入 SYN RCVD 状态; 4 客户端收到 SYN + ACK 报文段,其 TCP 实体给服务器端发送出三次握手的最后一个ACK 报文段,并转换为 ESTABLISHED 状态; 5 服务器端收到确认的 ACK 报文段,完成了三次握手,于是也进入 ESTABLISHED 状态

14、。 在此状态下,双方可以自由传输数据。当一个应用程序完成数据传输任务后,它需要关闭TCP 连接。假设仍由客户端发起主动关闭连接。 6 客户端执行 CLOSE 原语,本地的 TCP 实体发送一个 FIN 报文段并等待响应的确认(进入状态 FIN WAIT 1 ) ; 7 服务器收到一个 FIN 报文段,它确认客户端的请求发回一个 ACK 报文段,进入CLOSE WAIT 状态; 8 客户端收到确认 ACK 报文段,就转移到 FIN WAIT 2 状态,此时连接在一个方向上就断开了; 9 服务器端应用得到通告后,也执行 CLOSE 原语关闭另一个方向的连接,其本地 TCP实体向客户端发送一个 FI

15、N 报文段,并进入 LAST ACK 状态,等待最后一个 ACK 确认报文段; 10 客户端收到 FIN 报文段并确认,进入 TIMED WAIT 状态,此时双方连接均已经断开,但 TCP 要等待一个 2 倍报文段最大生存时间 MSL ( Maximum Segment Lifetime ) ,确保该连接的所有分组全部消失,以防止出现确认丢失的情况。当定时器超时后, TCP 删除该连接记录,返回到初始状态( CLOSED ) 。 11 服务器收到最后一个确认 ACK 报文段,其 TCP 实体便释放该连接,并删除连接记录,返回到初始状态( CLOSED ) 。2、几种扫描的原理 TCP conn

16、ect() 扫描:这是最基本的 TCP 扫描。操作系统提供的 connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么 connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的 connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞 I/O 允许你设置一个低的时间用尽周期,同时观察多个套接字。 TCP SYN 扫描 :这种技术通常认为是“半开放

17、”扫描,这是因为扫描程序不必要打开一个完全的 TCP连接。扫描程序发送的是一个 SYN 数据包,好像准备打开一个实际的连接并等待反应一样(参考 TCP 的三次握手建立一个 TCP 连接的过程) 。一个 SYN/ACK 的返回信息表示端口处于侦听状态。一个 RST 返回,表示端口没有处于侦听态。如果收到一个 SYN/ACK,则扫描程序必须再发送一个 RST 信号,来关闭这个连接过程。 TCP FIN 扫描 :有的时候有可能 SYN 扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN 数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口

18、会用适当的 RST 来回复 FIN 数据包。另一方面,打开的端口会忽略对 FIN 数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复 RST,这样,这种扫描方法就不适用了。这种方法在区分 Unix 和 NT 时,是十分有用的。 ICMP Echo 扫描:使用 ICMP Request 数据包来判断在一个网络上主机是否开机。如果主机开机,则会回复 ICMP Echo 数据包。否则得不到回复。注释:从上述所列的课程设计内容中,选择一个必做。若有能力或业余时间的学生,可选择一个以上的设计内容做。四、课程设计报告要求写出课程设计目的,设计内容,实验环境,设计思想和实现流程,源程序、运行结果以及分析。第二部分 涉及到的概念1、Socket for C:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。