基于UDP网络安全协议课程设计
- 格式:doc
- 大小:172.50 KB
- 文档页数:14
计算机网络课程设计利用java实现UDP协议实现UDP协议系别计算机与通信工程学院专业计算机科学与技术学号4110415姓名张振指导教师王聪xx年7月4日1、需求分析程序是如何通过网络进行相互通信的呢?各个孤立的工作站或主机用物理链路相连在一起,组成数据链路,从而达到资源共享和通信的目的,就形成网络。
通信是人与人之间同过某种媒体进行的信息交流与传递。
网络通信一般指网络协议。
当今网络协议有很多,其中基本最常用的就是TCP/IP 协议族。
UDP协议就是属于TCP/IP协议族中的协议。
在网络中它与TCP协议一样用于处理数据包。
在OSI模型中,UDP协议在第四层传输层,处于IP协议的上一层。
与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
本文利用Java语言网络编程的思想,编写UDP协议程序,实现UDP协议在网络中所要完成的功能。
在Java语言为实现程序的相互通信提供了许多有用的抽象应用程序接口(API, Application Programming Interface),这类应用程序接口被称为套接字(sockets)。
因此,本文UDP协议的编程所需要用到的接口就是套接字。
2、实验环境开发环境: 个人PC+win8、1+myeclipse103、实验原理以及相关内容3、1 UDP简介UDP 是User Datagram Protocol的简称,中文全称是用户数据包协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
在网络中它与TCP协议一样用于处理数据包。
在OSI模型中,UDP协议在第四层传输层,处于IP协议的上一层。
与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
湖南工业大学课程设计资料袋计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授学生姓名专业班级网络工程学号题目基于UDP协议网上聊天程序成绩起止日期2013 年11 月25 日~2013 年12 月13 日目录清单56课程设计任务书2013 —2014学年第1 学期学院(系、部)计算机与通信学院专业网络工程班级102课程名称:网络工程学生姓名:设计题目:基于UDP协议网上聊天程序指导教师:李建设完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周容及任务一、设计内容实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。
1.支持多人聊天。
2.客户端具有图形化用户界面。
二、设计任务课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。
)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。
三、设计要求1.按功能要求开发系统,能正确运行。
程序代码书写规范,有充足的注释。
2.课程设计所使用的编程语言任选,但建议使用C或C++;3.绿色软件:程序运行不需安装,避免写系统和注册表;进度安排起止日期工作内容2013-11-25~2013-11-3选题2013-12-1~2013-12-3 系统分析和设计;2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。
指导教师(签字):年月日系(教研室)主任(签字):年月日课程设计说明书课程名称:网络协议分析设计题目:基于UDP协议网上聊天程序专业:班级:学生姓名: 学号:指导教师:李建设2013年12 月13 日目录1 课程设计简介 (4)1.1 课程设计的目的 (4)1.2 课程设计内容 (4)2课程设计实现过程 (5)2.1 协议原理 (5)2.2 客户机/服务器模式 (7)2.3 关键技术 (8)2.4 流程图 (10)2.5 系统结构图 (11)2.6 程序调试及界面效果图 (11)2.7 源代码 (15)3设计总结 (22)4参考文献 (23)1 课程设计简介1.1 课程设计的目的开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。
TCP/IP网络与协议课程设计简介本课程设计主要以TCP/IP网络协议为重点,通过模拟实现TCP/IP协议的部分功能,加深对TCP/IP协议的理解和掌握。
实验环境•操作系统:Ubuntu 18.04 LTS•编程语言:C语言实验内容实验一:基于UDP协议的数据传输实验目的•了解UDP协议的特点和使用场景。
•学习使用UDP协议发送和接收数据包。
实验步骤1.了解UDP协议的相关知识。
2.编写UDP客户端程序,实现向指定IP地址和端口发送数据。
3.编写UDP服务端程序,接收来自客户端的数据,并在终端输出数据内容。
实验效果客户端程序通过UDP协议向服务端发送数据,服务端接收到数据,并在终端输出数据内容。
实验总结通过本实验,加深了对UDP协议的理解,学习了使用UDP协议进行数据传输的基本操作。
实验二:基于TCP协议的数据传输实验目的•了解TCP协议的特点和使用场景。
•学习使用TCP协议进行数据传输,并掌握TCP连接建立和断开的过程。
实验步骤1.了解TCP协议的相关知识。
2.编写TCP客户端程序,实现向指定IP地址和端口建立连接并发送数据。
3.编写TCP服务端程序,接收来自客户端的连接请求并接收数据,并在终端输出数据内容。
4.实现TCP连接的断开。
实验效果客户端程序通过TCP协议向服务端发送数据,服务端接收到数据,并在终端输出数据内容。
完成数据传输后,正常断开TCP连接。
实验总结通过本实验,加深了对TCP协议的理解,学习了使用TCP协议进行数据传输的基本操作,并掌握了TCP连接建立和断开的过程。
实验三:基于HTTP协议的网页浏览器实验目的•了解HTTP协议的特点和使用场景。
•学习使用HTTP协议请求和接收网页数据。
实验步骤1.了解HTTP协议的相关知识。
2.实现一个简易的网页浏览器,支持HTTP协议,能够请求和接收网页数据。
3.实现网页的解析和渲染,能够在终端中正常显示网页内容。
实验效果在终端中输入网址后,浏览器能够根据HTTP协议请求网页数据,并在终端中正常显示网页内容。
工业大学课程设计资料袋计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师建设职称副教授学生专业班级网络工程学号题目基于UDP协议网上聊天程序成绩起止日期2013 年11 月25 日~2013 年12 月13 日目录清单56课程设计任务书2013 —2014学年第1 学期学院(系、部)计算机与通信学院专业网络工程班级102课程名称:网络工程学生:设计题目:基于UDP协议网上聊天程序指导教师:建设完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周容及任务一、设计容实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。
1.支持多人聊天。
2.客户端具有图形化用户界面。
二、设计任务课程设计说明书(纸质+电子版),容包括:设计容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。
)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。
三、设计要求1.按功能要求开发系统,能正确运行。
程序代码书写规,有充足的注释。
2.课程设计所使用的编程语言任选,但建议使用C或C++;3.绿色软件:程序运行不需安装,避免写系统和注册表;进度安排起止日期工作容2013-11-25~2013-11-3选题2013-12-1~2013-12-3 系统分析和设计;2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。
指导教师(签字):年月日系(教研室)主任(签字):年月日课程设计说明书课程名称:网络协议分析设计题目:基于UDP协议网上聊天程序专业:班级:学生: 学号:指导教师:建设2013年12 月13 日目录1 课程设计简介 (4)1.1 课程设计的目的 (4)1.2 课程设计容 (4)2课程设计实现过程 (5)2.1 协议原理 (5)2.2 客户机/服务器模式 (7)2.3 关键技术 (8)2.4 流程图 (10)2.5 系统结构图 (11)2.6 程序调试及界面效果图 (11)2.7 源代码 (15)3设计总结 (22)4参考文献 (23)1 课程设计简介1.1 课程设计的目的开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。
长沙理工大学计算机与通信工程学院《网络协议编程》课程设计报告院 系 计算机与通信工程学院 专 业 网络工程 班 级 网络1101班 学 号 201158080110 学生姓名 赵思雨 指导教师 谢晓巍 课程成绩 完成日期 2014年9月24日 课程设计成绩评定院系计算机与通信工程专业网络工程班级网络1101班学号 201158080110学生姓名赵思雨指导教师谢晓巍指导教师对学生在课程设计中地评价指导教师成绩指导教师签字年月日课程设计答辩组对学生在课程设计中地评价答辩组成绩答辩组长签字年月日课程设计综合成绩注:课程设计综合成绩=指导教师成绩×60%+答辩组成绩×40%课程设计任务书计算机与通信工程学院网络工程专业基于UDP网络通信系统地服务端程序设计学生姓名:赵思雨指导老师:谢晓巍摘要随着网络技术地发展及人们生活地需求,网络聊天已越来越受到人们地青睐 .网络聊天已经成为人们工作生活中传递信息、交流感情地重要工具,给人们带来了很大地方便. 本课题是开发一个基于UDP地局域网聊天系统,运用软件工程地设计流程,综合运用数据库编程技术、Windows程序设计技术、网络通讯技术,此网络聊天工具采用客户端/服务器(C/S)模式,客户端采用UDP与服务器连接,客户端与客户端之间通过UDP互相通讯.服务器端具有服务器端口设置,此聊天工具能实现多人聊天功能,适用于局域网使用地网络聊天工具,其操作简单,灵活性好,运行也比较稳定.关键词网络通讯;客户端/服务器模型;用户数据报协议;套接字1 引言自进入信息化社会以来,人们地生活发生了翻天覆地地变化,所有这一切地实现都要归功于计算机网络.自从计算机网络出现以来,网络发展越来越迅速,其重要性更是不可估量.现在,网络已经进入到我们生活地各个角落,大到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等,可以说网络把我们地世界变“小”了,即使在天涯海角,我们也可以随时联系.一个最简单且应用最广泛地例子——网上聊天,就是最好地证明.本课程设计将基于UDP协议和局域网环境,使用Java语言实现一个即时网络通讯程序. 1.1背景介绍随着计算机网络信息技术地日益发展和成熟,人们地生活因为网络而变得更多姿多彩,基于网络地通讯技术也如同雨后春笋般涌现到网络世界中.TCP协议和UDP协议是网络通讯地基本协议.而对于普通地信息交流,UDP协议则因为更方便简单,所以常常采用UDP协议开发这类即时通讯程序.1.2课程设计地目地(1)理解UDP协议地基本功能和工作原理.(2)培养运用理论知识解决实际问题地能力.(3)理解UDP协议在Java编程语言中地具体体现.(4)运用所学地知识,学会分析程序,并从实际上实现即时通讯地要求.1.3课程设计地基本任务本次课程设计是基于UDP协议地通讯程序,所以其基本任务就是要实现地是服务器和客户端地通讯,即服务器对端口进行监听,客户端发送数据给服务器,服务器接收.实现了这个过程,就达到了本次课程设计地目地.2 设计原理2.1 UDP协议原理UDP协议地全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接地协议.在OSI模型中,在第四层——传输层,处于IP协议地上一层.UDP有不提供数据包分组、组装和不能对数据包进行排序地缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达地.UDP用来支持那些需要在计算机之间传输数据地网络应用.包括网络视频会议系统在内地众多地客户/服务器模式地网络应用都需要使用UDP协议.UDP协议从问世至今已经被使用了很多年,虽然其最初地光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行地网络传输层协议.UDP是OSI参考模型中一种无连接地传输层协议,它主要用于不要求分组顺序到达地传输中,分组传输顺序地检查与排序由应用层完成,提供面向事务地简单不可靠信息传送服务.UDP 协议基本上是IP协议与上层协议地接口.UDP协议适用端口分别运行在同一台设备上地多个应用程序.与所熟知地TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议地顶层.根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议.UDP协议地主要作用是将网络数据流量压缩成数据包地形式.一个典型地数据包就是一个二进制数据地传输单位.每一个数据包地前8个字节用来包含报头信息,剩余字节则用来包含具体地传输数据.UDP是无连接地,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放)因此减少了开销和发送数据之前地时延.UDP使用地是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂地连接状态表.UDP是面向报文地.发送方地UDP对应程序交下来地报文,在添加首部后就向下交付给IP层.UDP对应用层交下来地报文,既不合并,也不拆分,而是保留这些报文地边界.UDP是定义用来在互连网络环境中提供数据报交换地计算机通信地协议.此协议默认是IP下层协议.此协议提供了向另一用户程序发送信息地最简便地协议机制,不需要连接确认和保护复制,所以在软件实现上比较简单,需要地内存空间比起TCP相对较小.UDP包头由4个域组成,其中每个域各占用2个字节.(1)源端口号(16位):UDP数据包地发送方使用地端口号.(2)目标端口号(16位):UDP数据包地接收方使用地端口号.UDP协议使用端口号为不同地应用保留其各自地数据传输通道.UDP和rap协议正是采用这一机制,实现对同一时刻内多项应用同时发送和接收数据地支持.(3)数据报长度(16位).数据报地长度是指包括报头和数据部分在内地总地字节数.理论上,包含报头在内地数据包地最大长度为65535字节.不过,一些实际应用往往会限制数据包地大小,有时会降低到8192字节.(4)校验值(16位).UDP协议使用包头中地校验值来保证数据地安全.2.2客户端/服务器模式客户机一方,UDP应用程序功能如下:(1)打开通信信道(申请一套接字),并连接到服务器在主机地保留端口,该端口对应服务器地UDP进程.(2)向服务器发出请求报文,等待接收应答.(3)从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程.服务器一方,UDP应用程序动作如下:(1)打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求.(2)等待客户请求到达指定端口.(3)接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新地客户请求,一旦服务完成,关闭新进程与客户地通信链路.(4)继续等待客户机请求.(5)如果不想响应客户机请求,关闭服务器进程3.设计步骤此次设计是编写一个基于UDP地即时通讯程序,要求双方能够进行即时通讯,实现聊天和传输文件地功能.本课程设计主要负责地是通讯程序客户端地设计.其具体设计如下.3.1 聊天模块设计流程图图1-1 聊天模块流程图3.2详细设计根据UDP协议地基本特性以及Java语言编程特点,然后对比设计流程图,在Eclipse 编程环境下编写出实现该即时聊天系统地程序,具体步骤如下:1.打开Eclise创建一个Java工程,命名为UDPChat.2.在Java工程目录下创建一个package,命名为UDPChat.3.在此package目录下创建一个类,类名为Client,创建完之后弹出一个编辑窗口,在此编辑环境下编写客户端程序,其聊天模块服务器端核心程序如下:public class Server {public static void main(String[] args) {new UDPServer().start()。
实用文档计算机网络课程设计利用java 实现UDP协议系别计算机与通信工程学院专业计算机科学与技术学号4110415姓名张振指导教师王聪2014年7月4日1.需求分析程序是如何通过网络进行相互通信的呢?各个孤立的工作站或主机用物理链路相连在一起,组成数据链路,从而达到资源共享和通信的目的,就形成网络。
通信是人与人之间同过某种媒体进行的信息交流与传递。
网络通信一般指网络协议。
当今网络协议有很多,其中基本最常用的就是TCP/IP 协议族。
UDP 协议就是属于TCP/IP协议族中的协议。
在网络中它与TCP协议一样用于处理数据包。
在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。
与TCP 相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
本文利用Java语言网络编程的思想,编写UDP协议程序,实现UDP协议在网络中所要完成的功能。
在Java语言为实现程序的相互通信提供了许多有用的抽象应用程序接口(API, Application Programming Interface),这类应用程序接口被称为套接字(sockets)。
因此,本文UDP协议的编程所需要用到的接口就是套接字。
2.实验环境开发环境: 个人PC+win8.1+myeclipse 103.实验原理以及相关内容3.1 UDP简介UDP 是User Datagram Protocol的简称,中文全称是用户数据包协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
在网络中它与TCP协议一样用于处理数据包。
在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。
与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
《计算机网络》课程设计学院___ _计算机学院_______专业______软件工程_______年级班别______12级4班_______学号学生姓名______ 林炳城_ __ ___指导教师____ 梁路 ________成绩目录计算机网络课程设计任务书操作系统:win8开发环境:IDE:eclipse二、课程设计的目的本次课程设计的目的在掌握计算机网络理论的基础上,了解网络技术,掌握计算机网络相关设计方法和思想,希望能通过本次的课程设计,达到巩固和综合应用计算机网络原理和知识,本次课程设计主要是编程实现基于UDP的ping,使用java语言编程,编写一个实验程序、仿真模拟Ping命令,通过观察实验结果,从而判定本次程序设计是否成功完成任务。
三、理论基础UDP简介UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI (Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
UDP在IP报文的协议号是17。
UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
目录一设计任务.........................................2二UDP的理论分析..................................2(一)用户数据报协议UDP..........................21.概念.........................................................22.协议结构.....................................................33.UDP数据包的封装............................................34.标准UDP端口................................................4(二)传输控制协议TCP简介........................5(三)TCP与UDP的比较表.............................6三 UDP的抓包分析.................................7(一)实验环境..................................7(二)实验过程.....................................7四实验总结.......................................10一设计任务在建立的视屏传输的情况下,用wireshark软件对该传输下的UDP协议数据包进行抓取,并作出相应的分析和适当的验证。
二UDP的理论分析视频传输,尤其是即时的视频传输需要的是传输帧的速度,这样才能实现视频的通信。
对于TCP协议来说,因为是可靠传输,这大大限制其传输速率,而且TCP是不丢包的,如果视频数据量大于网络速度,那会在发送端越聚越多最后造成系统崩溃。
湖南工业大学课程设计资料袋计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称___________ 网络协议分析_____________ 指导教师李建设职称副教授学生姓名_______________________ 专业班级网络工程_______________ 学号 ___________________ 题目________________ 基于UDP协议网上聊天程序______________________________________________ 成绩___________________________ 起止日期2013 年月_25_日〜2013年_12_月日目录清单课程设计任务书2013 —2014学年第1学期学院(系、部)计算机与通信学院专业网络工程班级102课程名称:_________ 网络工程 ________________ 学生姓名:___________________________设计题目:基于UDP协议网上聊天程序指导教师:李建设_____________ 完成期限:自2013年11月25 日至2013年12 月13日共3周系(教研室)主任(签字):_________________ 年月日课程设计说明书课程名称:网络协议分析设计题目: 基于UDP 协议网上聊天程序_______ 班级: 学号:— 李建设2013年12月13日专 业: 学生姓名:目录1 课程设计简介 (4)1.1 课程设计的目的 (4)1.2 课程设计内容 (4)2 课程设计实现过程 (5)2.1 协议原理 (5)2.2 客户机/ 服务器模式 (7)2.3 关键技术 (8)2.4 流程图 (10)2.5 系统结构图 (11)2.6 程序调试及界面效果图 (11)2.7 源代码 (15)3 设计总结 (22)4 参考文献 (23)1 课程设计简介1.1 课程设计的目的开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。
课程设计III课程设计设计说明书基于UDP的程序设计学生姓名NX学号1435354687班级计算机1303成绩指导教师NBVC数学与计算机科学学院2016年 9 月 9 日课程设计任务书2016—2017学年第1 学期课程设计名称:课程设计III课程设计课程设计题目:基于UDP的程序设计完成期限:自2016 年8 月29 日至2015 年9 月9 日共 2 周设计内容:1.任务说明UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。
我们要编写程序,设计一个基于UDP 的服务器。
指导教师:教研室负责人:课程设计评阅摘要UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。
根据后UDP 协议的工作原理,编写程序实现基于UDP 的服务器。
以命令行形式运行:1、UdpServer serve_port 其中,UdpServer 为程序名,server_port 为服务器使用的端口号。
2、输出内容:服务器与客户端的交互过程,例如: UDP Server Recceive:...UDP Server Send:...关键词:UDP;程序设计目录1 课题描述 (2)2设计需求 (3)3设计过程 (4)4设计代码 (6)5总结 (10)参考文献 (11)1 课题描述UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。
UDP在一个较低的水平上完成进程之间的通信,在收到分组的时候没有流量控制机制也没有确认机制,适用于可靠性比较高的局域网。
由于UDP采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。
UDP适合一些实时的应用,如IP电话,视频会议,它们要求源主机以恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能太大。
基于UDP的多人聊天系统只需把两个客户段代码与一个服务器代码导入就可以了,记得要把服务器ip:192.168.1.77(也可以自己在服务器程序中改一下),每个客户端需要设置一下ip,比如A客户端:192.168.1.78,B客户端:192.168.1.88,A客户端向B客户端通讯时,“请输入对方ip”,这项改为192.168.1.88,就可以了。
客户端源代码程序:ChatFram.javapackage ChatFrame_01;import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import ng.*;import java.awt.color.*;import javax.swing.JOptionPane;public class ChatFrame extends JFrame { JPanel contentPane;JLabel label1 = new JLabel();// 发送消息JLabel label2 = new JLabel();// 输入ipLabel label3 = new Label();// 输入端口标签Label label4 = new Label();// 输出端口标签JTextField textField1 = new JTextField();// 发送消息JTextField textField2 = new JTextField();// 输入ipJTextField textField3 = new JTextField();// 获得输入端口JTextField textField4 = new JTextField();// 获得输出端口JButton button1 = new JButton("发送");// 发送消息TextArea textArea1 = new TextArea();JOptionPane jopane = new JOptionPane();DatagramPacket sendpacket, receivepacket;// 声明发送和接收数据包DatagramSocket sendsocket, receivesocket;// 声明发送和接收DatagramSocketpublic ChatFrame() {enableEvents(AWTEvent.WINDOW_EVENT_MASK);try {toInit();} catch (Exception e) {e.printStackTrace();}}private void toInit() throws Exception { contentPane = (JPanel) this.getContentPane();label1.setText("发送信息:");label1.setBounds(new Rectangle(13, 100, 60, 21));contentPane.setLayout(null);contentPane.setBackground(Color.pink);this.setSize(new Dimension(363, 502));this.setTitle("多人聊天室");label2.setText("输入对方IP地址:");label2.setBounds(new Rectangle(12, 19, 109, 23));label3.setText("输入端口:");label3.setBounds(new Rectangle(12, 58, 55, 22));label4.setText("输出端口:");label4.setBounds(new Rectangle(180, 58, 55, 22));textField3.setText("3000");textField4.setText("3001");button1.setBounds(new Rectangle(280, 100, 59, 21));button1.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {button1_actionPerformed(e);}});textField1.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_ENTER) {String str = textField2.getText();String str1=textField1.getText();if (pareTo("") !=0&&!"".equals(str1)) {try {textArea1.append("\nto " + textField2.getText()+ ":" + "3000" + " say: "+ textField1.getText());String s = textField1.getText();byte data[] =s.getBytes("UTF-8");sendpacket = new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.77"),6666);sendsocket.send(sendpacket);} catch (IOException exc) {exc.printStackTrace();}textField1.setText("");}}}});textField4.setBounds(new Rectangle(240, 58, 90, 22));textField3.setBounds(new Rectangle(70, 58, 90,textField2.setBounds(new Rectangle(123, 20, 120, 19));textField1.setBounds(new Rectangle(76, 100, 190, 19));textArea1.setBounds(new Rectangle(11, 140, 333, 315));textArea1.setEditable(false);textArea1.setBackground(Color.white);contentPane.add(label4, null);contentPane.add(label3, null);contentPane.add(label2, null);contentPane.add(label1, null);contentPane.add(textField1, null);contentPane.add(textField2, null);contentPane.add(textField3, null);contentPane.add(textField4, null);contentPane.add(textArea1, null);contentPane.add(button1, null);this.setVisible(true);bind();protected void processWindowEvent(WindowEvent e) {super.processWindowEvent(e);if(e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0);}}public void waitforpackets() {// 检测并接受对方发来的消息while (true) {try {byte[] array = new byte[100];receivepacket= new DatagramPacket(array, array.length);receivesocket.receive(receivepacket);// 接收textArea1.append("\nfrom " + receivepacket.getAddress() + ":"+ receivepacket.getPort() + "get:");String received = newString(receivepacket.getData(), 0,receivepacket.getLength(),"UTF-8");textArea1.append(received);} catch (IOException se) {se.printStackTrace();}}}void bind() {// 和对方建立连try {sendsocket = new DatagramSocket(3000);receivesocket = new DatagramSocket(3333);} catch (Exception e) {}}void button1_actionPerformed(ActionEvent e) {// 发送消息到对方String str = textField2.getText();String str1=textField1.getText();if (pareTo("") != 0&&!"".equals(str1)) {try {textArea1.append("\nto " +textField2.getText() + ":" + "3000"+ " say: " + textField1.getText());String s =textField2.getText()+"|"+textField1.getText();byte data[] = s.getBytes("UTF-8");sendpacket = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.77"), 6666);sendsocket.send(sendpacket);} catch (IOException exc) {exc.printStackTrace();}textField1.setText("");}}}ChatApp.javapackage ChatFrame_01;import java.io.*;import javax.swing.UIManager;import java.awt.*;public class ChatApp {boolean packFrame = false;ChatApp() {ChatFrame frame = new ChatFrame();if (packFrame) {frame.pack();} else {frame.validate();}// 放置窗体在屏幕中央Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height;}if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width;}frame.setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);frame.setVisible(true);frame.waitforpackets();}public static void main(String[] args) { new ChatApp();}}服务器端:Server.javapackage ChatFrame_01;import .DatagramPacket; import .DatagramSocket; import .InetAddress; import .Socket;import java.util.*;public class Server {List ips = new ArrayList();DatagramSocket socket;DatagramPacket packet;DatagramSocket ssocket;DatagramPacket spacket;public Server() throws Exception {socket = new DatagramSocket(6666);ssocket=new DatagramSocket(8888);}public void listen() throws Exception {byte[] array = new byte[100];packet = new DatagramPacket(array, array.length);socket.receive(packet);byte[] data=packet.getData();String received = new String(data,0,data.length,"UTF-8");System.out.println(received);String[] ss = received.split("\\|");String ip = ss[0];byte[] dt=ss[1].getBytes("UTF-8");spacket=newDatagramPacket(dt,dt.length,InetAddress.getByName(ip),3333) ;ssocket.send(spacket);}public static void main(String[] args) throws Exception { Server s = new Server();while (true) {s.listen();}}}。
《网络安全协议》课程设计题目基于UDP协议的分析和改进班级学号姓名指导老师2014年07 月 01日目录前言 (3)第1章UDP协议的概述 (3)1.1UDP协议 (3)1.2UDP协议的数据报格式 (4)1.3针对UDP协议的攻击 (5)第2章需求分析 (5)2.1UDP协议的优缺点 (5)2.1.1UDP协议的优势: (5)2.1.2 UDP 协议的不足: (6)2.2与TCP协议的比较 (6)2.2.1TCP协议的拥赛控制 (6)2.2.2TCP协议的往返时延 (6)第3章UDP协议的改进 (7)3.1设计目标 (7)3.2模块的设计概述 (7)3.3总体设计 (7)3.3.1体系结构 (7)3.3.2报文结构 (8)第4章协议的实现机制 (9)4.1协议实现采用的方法 (9)4.1.1建立连接 (9)4.1.2关闭连接 (10)4.1.3差错检测 (10)4.1.4确认技术 (11)4.1.5序列号 (11)4.1.6 超时重发 (11)第5章安全性分析 (11)5.1协议的功能 (11)5.2协议存在的安全隐患 (12)第6章小结 (12)参考文献 (13)2前言2 1 世纪将是一个以网络为核心的信息时代, 一般把I n ter net 定义为一个技术名词, 指遵守T CP / I P 协议, 用各种计算机物理连接方式集合在一起的计算机网络及单机的总和。
T CP/ I P I n ter ne t 协议族已经成为计算机工业中开放系统互连的事实上的标准。
在T CP/ I P 协议族中, 在数据链路层、网络层,传输层和应用层存在很多的已知安全缺陷,选择其中一个存在安全缺陷的协议—UDP协议,针对此协议进行优化。
用户数据报协议U DP 提供应用程序之间传送数据报的基本机制基于目。
前U DP 通信的不足: 不可靠的无连接服务, 在参考T CP/ I P 协议及I SO 7 层协议的基础上, 设计了一套基于U DP 的可靠数据传输。
第1章UDP协议的概述1.1UDP协议UDP 是User Datagram Protocol的简称,中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
在TCP/IP模型中,UDP为网络层(network layer)以下和应用层(application layer)以上提供了一个简单的接口。
1.2 UDP数据报的格式UDP数据报是UDP协议的数据传输的基本单位,格式见下图:31.端口(两个)源端口(16bit):指源主机上运行的进程使用的端口地址。
目的端口(16bit):指目的主机上运行的进程使用的端口地址。
UDP使用端口对给定主机上的多个目标进行区分。
源端口是可选域,当其有意义时,指的是发送应用程序的UDP端口。
如果不使用它,则在此域中填0。
目的端口在有特定的目的网络地址时有意义,指目标应用程序的UDP端口。
2. 长度UDP数据报的总长度(首部+数据),用八进制表示(这表明最小的数据报长度是8)。
UDP数据报总长度也可以通过下式进行计算:UDP数据报总长度=IP总长度-IP首部长度43. 校验和用于校验整个UDP数据报出现的差错。
它是一种简单的数学运算,即对IP头、UDP头和数据中信息包头的数位取反之和,再取反得到的。
在计算校验和时要在UDP数据报之前增加12B的伪首部(临时加上),其中第三字段全0,第四字段为IP首部中的协议字段(17:UDP)。
1.3针对UDP协议的攻击UDP Flood是日渐猖厥的流量型DoS攻击(拒绝服务攻击),原理也很简单。
常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。
100k pps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。
由于UDP协议是一种无连接的服务,在UDP Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包。
但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。
正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。
出现UDP Flood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定。
第2章需求分析2.1UDP协议的优缺点2.1.1UDP协议的优势:(1)系统开销小、速度快;(2)对于绝大多数居于消息传递的应用程序来说,基于帧的通信(UDP)比基于流的通信(TCP)更为直接和有效:(3)对应用部分实现系统冗余、人物分担提供了极大易实现及可操作性:(4) 对等的通信实体、应用部分可方便的根据需要构造成客户/ 服务器模型及5分布处理模型, 大大加强应用在可操作性及维护性的能力;( 5) 可实现完全图模型的网状网络拓扑结构, 可大大增强系统的容错性。
2.1.2 UDP 协议的不足:(1)依赖IP协议传送报文;(2)不确认报文是否到达,不对报文进行排序也不进行流量控制,对于顺序错误或丢失的包,不做纠错或重传;(3)没有建立初始化连接。
2.2与TCP协议的比较2.2.1TCP协议的拥赛控制随着网络带宽时延乘积 ( B D P ) 的增加,通常的 T C P 协议开始变的低效。
这是因为它的A M I D ( A d d i t i v e I n c r e a s e M u i t i p l i c a t i v e D e c r e a s e ,即当 T C P发送方感受到端到端路径无拥塞时就线性的增加其发送速度,当察觉到路径拥塞时就乘性减小其发送速度,简称“和式增加,积式减少”)算法虽然减少了T C P 拥塞窗口,但不能快速的恢复可用带宽。
理论上的流量分析表明 T C P 在 B D P 增加到很高的时候比较容易受数据包丢失的影响。
2.2.2TCP协议的往返时延T C P 拥塞控制的不公平的R T T ( R o u n d — T r i p T i m e ,往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认,总共经历的时延) 也成为在分布式数据密集应用中的严重问题。
拥有不同 R T T 的并发T C P 流将不公平地分享带宽。
尽管在 B D P 小的网络中可以使用通常的T C P 实现来相对平等的共享带宽,但在拥有大量 B D P 的网络中,通常的基于T C P的程序就必须承受严重的不公平的问题。
这个 R T T 基于的算法严重的限制了其在广域网分布式应用的效率例如互联网上的网络数据备份。
综上所述,一直到今天,对标准的T C P的提高一直都不能在带宽的利用效率和公平性方面达到一个令人满意的程度 ) ,这对运行在低速网络中的应用影6响尤为严重。
考虑到上面的背景,需要一种在低速网络中支持高效利用可用带宽的数据传输协议。
为此,本文设计了一个应用程序级别的基于 U D P 的数据传输协议。
第3章UDP协议的改进3.1设计目标基于 U D P 的可靠传输协议主要目标是效率、稳定。
应该利用所有的可用带宽,即使带宽变化的很剧烈,以保证在低速网络情况下,能够为需一定带宽支持的应用尽可能提供其所需的传输速率。
稳定性要求不能像 T C P 那样遇到丢包时产生传输速率的大幅波动,分组发送速率应该一直快速会聚可用带宽。
3.2模块的设计概述本协议是数据传输是单向的,有两个部分:发送方和接收方。
发送方根据流量控制发送 ( 和重传)数据,触发和处理所有的控制事件,如 R T T 估计、超时检测和重传。
接收者接收数据分组和控制数据报,并根据接收到的数据报发送控制数据报。
接收程序使用一个固定 U D P 端口来发送和接收。
本协议将应用层数据封装成固定的大小进行传输,和 T C P 相似的是,称这个固定的数据报大小叫做 M S S( 最大分组大小,适宜于快速传输大块数据流。
M S S可以通过应用程序来设置,M S S的选择对传输效率会有影响。
通过滑动窗口的流水技术来进行流量控制,在参数合适事能够充分利用当前可用带宽。
考虑到系统开销,协议并没有引入如流数据加密或身份认证等安全机制,它依赖于应用程序提供的授权和底层提供的安全机制。
然而,由于 U D P 是无连接的,实现可靠数据传输时,应该检查所有达到的数据报是否是预期的数据报。
3.3总体设计3.3.1体系结构从计算机网络层次体系的角度来看,基于 U D P的可靠数据传输协议的层次结7构如图 l 所示。
因此,本协议是在原 T C P / I P 协议的传输层的 U D P 协图1 基于UDP的可靠传输协议的层次为保证可靠数据传输而实现的,加入了基于 U D P的可靠数据传输协议而形成的一个五层体系结构。
这样就可以利用 T C P / I P的U D P协议实现一种基于 U D P的面向连接可靠数据传输机制。
3.3.2报文结构协议有两类数据报:应用数据报和控制数据报。
它们数据报类型域来区分的。
4字节 4字节 1字节图2 应用数据报格式数据报里含有四个域:序列号,是四个字节的无符号整数,每个非重传的应用数据报都有一个相对应的序列号,且每个非重传的应用数据报都序号增加l;时间戳,是一个四字节的无符号整数。
数据报类型域里有数据报对应的值D A T A ,紧跟在这些数据后面的是应用程序数据。
4字节 4字节 1字节 4字节图3 协议连接握手报文图 34字节 4字节 1字节8图4 应答报文图 4 是应答 ( A C K ) 报文,序列号域填写的是希望接收到的下一报文的序列号。
时间戳填入引起此应答的数据报文的时间戳。
4字节 4字节 1字节图5 关闭连接报文确认报文和关闭连接报文不包含三个域以外的控制信息,图中的类型域所填的值是三个宏定义。
对于应用数据报和控制数据报来说都不需要增加报文长度域,因为可以从U D P协议头中得到实际的数据报大小。
数据报大小信息能被用来得到数据报有效载荷和控制数据报中的控制信息字段大小。
第4章协议的实现机制4.1协议实现采用的方法U D P是一个简单的面向数据报的运输层协议,它把应用程序交给它的数据添加上简单的包头就传给 I P 层发送出去,没有可靠性保证。
基于U D P的可靠数据传输协议是一个面向连接的可靠数据传输协议,在分析它的技术实现问题时,使用了以下实现可靠数据传输所必需的关键技术,并在其中做出了选择。
4.1.1建立连接作为一种面向连接的协议,在利用协议进行数据通信之前,首先必须在通信的双方之间建立一条连接。
在的实现中,参考了下图中T C P中的 3次握手方式。
9图6 TCP三次握手协议但是由于协议是单工的,所以在第三个包开始已经传输应用数据了。