数据通信与计算机网络课程设计

时间:2025-07-11

信科专业

第一部分 数据通信与计算机网络课程设计(要求)

一、课程设计的性质、目的和任务 性质:独立设课 目的和任务:

1、掌握数据通信和计算机网络的基本原理

2、掌握数据通信和计算机网络设计、分析和实现方法 3、提高学生编制网络通信程序、网络应用服务程序的能力 二、课程设计的基本内容和要求

基本内容:网络数据通信的基本方法及实现。

基本要求:根据选定的项目,课题小组成员认真查阅相关资料,发挥学生的主体作用,提出设计方案,老师参与,进行讨论和分析,最终确定设计方案。在此基础上,合理分工,协同完成项目的设计与实现,最后完成课程设计的报告撰写。

信科专业

注:一、滑动窗口协议的模拟

1 关于滑动窗口,请阅读网络教材(实现— 选择性重发);

2 运行时启动两个线程client 和server。其中sever 初始应该为监听状态;

3 可指定滑动窗口数目m(m=2n,n为大于1的整数)和要发送的帧总数,停等的超时时间间隔以及发送类型(正常发送,即没有缺帧和错序发送帧的现象),发送速率等参数; 4 client向server发起连接,成功则转入5;

5 client端发出帧,帧的内容可同序号或者为“111”“222”…“aaa”“bbb”…或者是一段文章中的部分内容;

6 选择发送类型为“缺帧”,模拟因网络拥塞造成丢帧的情况,开始发送情况同“正常发送”的情况。不同的是在帧x发送前用户可以选择丢失,则客户端继续接收帧x+1,x+2…并且对帧x+1,x+2…发出确认并缓存该帧; 7 服务器端等待一段相当长的时间(超时),重发帧x; 8 选择发送类型为“错序发送”。将一组待发送的帧按照指定(错序)顺序发送。具体实现同“缺帧”情况;

9 以上各种情况下,client和server窗口中应实时显示帧的发送和接受情况,包括序号,到达时间,内容等。以及窗口的填充和清空情况; 10 使用socket编程;

11 本实验要求实现的是一个简化了许多的滑动窗口协议。对于所有包,在生成序列号后进行发送。接收方为每个包设定一个定时器,记录包的到达情况。如发送方发送速度过快,或某包定时器超时,则发送方应重发。接受方窗口满时,接受到的包应被拷贝至硬盘(以下部分可以自由设计,仅做参考)。 12 主要的数据结构: 包:

class packet{ protect:

int num;//数据包的序号 cstring content;//数据包内容 … … //method … … }

消息:

class message{ protect:

int no;//消息的序号

cstring content;//消息内容 int id;//消息的方向 //method … … }

信科专业

13 程序主要流程

14 方法:

void create_windows();//模拟滑动窗口协议中发送,接受窗口 void create_packet();//模拟滑动窗口协议中包 bool create_timer();//模拟滑动窗口协议中的定时器 int waitfornext();//等待下一个包 void resend();//重发 void receive();//数据包到达,接受数据包 void write();//数据包全部到达,写入硬盘

注:本实验主要目的是为了加深同学们对于滑动窗口协议的了解,而不是底层的网络编

程。所以在这里,“包”的概念可以是一组题为“1”、“2”、“3”等等的文件(由程序动态创建)。如果是在两台机器上实现,其中一台机器作为发送方,另一台则是接收方,双方进行通讯。如果接收方窗口大小为6,则当编号为7的包(文件)到达时,接受方应作相应处理,包括通知发送方暂停发送,缓存收到的包,清空滑动窗口等。当然,对于出错的情况,比如包丢失,不按序到达等情况编程者应有所考虑,所以在模拟接收方的机器上,应提供选择待发送包序号的界面。一个简单的选择发送包的界面如下:

15按序发送

信科专业

16 错序发送(包4未发送)

二、简单的端口扫描 1、基本概念

三次握手Three-way Handshake

一个虚拟连接的建立是通过三次握手来实现的 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) <-- [SYN/ACK] <--(A)

接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.

注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包. 3. (B) --> [ACK] --> (A)

B收到SYN/ACK 包,B发一个确认包(ACK),通知A连接已建立。至此,三次握手完成,一个TCP连接完成 。

Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位 。

这就是为何连接跟踪很重要的原因了. 没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接.一般的包过滤(Ipchains)收到ACK包时,会让它通过(这绝对不是个好主意). 而当状态型防火墙收到此种包时,它会先在连接表中查找是否属于哪个已建连接,否则丢弃该包

…… 此处隐藏:3163字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据通信与计算机网络课程设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219