基于UDP客户端通讯

  • 格式:doc
  • 大小:3.28 MB
  • 文档页数:23

课程设计报告课程设计名称:计算机网络系:三系学生姓名:吴宗琦班级:12通信2学号:20120306217成绩:指导教师:陈林开课时间:2014—2015 学年 1 学期目录一引言 (1)1.1 背景介绍 (1)1.2 课程设计的目的 (1)1.3 课程设计的基本任务 (1)二开发环境介绍 (3)2.1 Java简介 (3)2.2 Java的特点 (3)三UDP协议及套接字 (4)3.1 UDP协议简介 (4)3.2 UDP协议结构与特点 (5)3.3 UDP建立 (6)3.4 客户机/服务器模式 (7)3.5 套接字编程原理 (7)四设计过程 (9)4.1 总体设计流程图 (9)4.2 详细设计 (11)4.3 运行程序。

(19)4.4 结果分析 (20)五心得与体会 (21)一引言自进入信息化社会以来,人们的生活发生了翻天覆地的变化,所有这一切的实现都要归功于计算机网络。

自从计算机网络出现以来,网络发展越来越迅速,其重要性更是不可估量。

现在,网络已经进入到我们生活的各个角落,大到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等,可以说网络把我们的世界变“小”了,即使在天涯海角,我们也可以随时联系。

一个最简单且应用最广泛的例子——网上聊天,就是最好的证明。

此课程设计将基于UDP 协议和局域网环境,使用Java语言实现一个即时网络通讯程序。

1.1 背景介绍随着计算机网络信息技术的日益发展和成熟,人们的生活因为网络而变得更多姿多彩,基于网络的通讯技术也如同雨后春笋般涌现到网络世界中。

TCP协议和UDP协议是网络通讯的基本协议。

而对于普通的信息交流,UDP协议则因为更方便简单,所以常常采用UDP协议开发这类即时通讯程序。

在国内占据网络通讯霸主地位则是腾讯公司的QQ原型,就是采用UDP协议开发而成的。

1.2 课程设计的目的(1)通过本课程设计,熟练掌握Java语言的编程技术、步骤和程序的编写与调试过程。

(2)理解UDP协议的基本功能和工作原理。

(3)培养运用理论知识解决实际问题的能力。

(4)理解UDP协议在Java编程语言中的具体体现。

(5)运用所学的知识,学会分析程序,并从实际上实现即时通讯的要求。

1.3 课程设计的基本任务本次课程设计是基于UDP协议的通讯程序,所以其基本任务就是要实现的是服务器和客户端的通讯,即服务器对端口进行监听,客户端发送数据给服务器,服务器接收。

实现了这个过程,就达到了本次课程设计的目的。

二开发环境介绍2.1 Java简介Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。

Java语言是一个支持网络计算的面向对象程序设计语言。

Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性。

JJava平台是基于Java语言的平台。

这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。

Java分为三个体系J2SE,J2EE,J2ME。

2.2 Java的特点Java语言是一个支持网络计算的面向对象程序设计语言。

Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。

其主要特性如下:(1)Java语言是简单的。

(2)Java语言是面向对象的。

(3)Java语言是分布式的。

(4)Java语言是健壮的。

(5)Java语言是安全的。

(6)Java语言是体系结构中立的。

(7)Java语言是可移植的。

(8)Java语言是解释型的。

(9)Java语言是高性能的。

(10)Java语言是多线程的。

(11)Java语言是动态的。

三UDP协议及套接字3.1 UDP协议简介UDP协议和TCP协议是Internet的传输层上的两个主要的协议,其中前者是无连接的协议,后者是面向连接的协议。

UDP是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。

UDP用户数据报协议,是一个简单的面向数据报传输层的协议。

UDP提供不可靠的连接,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

由于UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

UDP协议的主要作用是将网络数据流量压缩成数据报的形式。

一个典型的数据报就是一个二进制数据的传输单位。

每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP协议使用端口号为不同的应用保留其各自的数据传输通道。

UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。

数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。

因为UDP 报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。

一般来说,大于49151的端口号都代表动态端口。

数据报的长度是指包括报头和数据部分在内的总的字节数。

因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。

数据报的最大长度根据操作环境的不同而各异。

从理论上说,包含报头在内的数据报的最大长度为65535字节。

不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

UDP协议使用报头中的校验值来保证数据的安全。

校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。

如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。

其实在UDP 协议中校验功能是可选的,如果将其关闭可以使系统的性能有所提升。

这与TCP 协议是不同的,后者要求必须具有校验值。

3.2 UDP协议结构与特点数据报由报头和传输的数据组成。

UDP报头由4个域组成,其中每个域各占用2个字节,具体包括:源端口号、目标端口号、数据报长度、校验值。

源端口—16位。

源端口是可选字段。

当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。

如果不使用,设置值为0。

目标端口— 16位。

目标端口在特殊因特网目标地址的情况下具有意义。

数据报长度— 16位。

该用户数据报的八位长度,包括协议头和数据。

长度最小值为8。

校验和— 16位。

IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。

如果必要的话,可以由两个八位复合而成。

数据域—包含数据信息。

UDP协议得到了广泛的应用。

其特点如下:1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。

2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。

3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。

4、UDP传送数据较TCP快速,系统开销也少。

5、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。

换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。

数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。

从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。

3.3 UDP建立UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。

TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其他信息,否则将一直等待直到收到确认信息为止。

与TCP 不同,UDP 协议并不提供数据传送的保证机制。

如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示,因此,通常人们把UDP协议称为不可靠的传输协议。

相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突发性的多个数据报。

不同于TCP,UDP并不能确保数据的发送和接收顺序。

当客户端需要用到一个使用UDP协议的远程主机上的应用程序时,它需要知道两方面的信息:应用程序所在主机的IP地址和应用程序目的端的UDP端口号。

现在,假设一台主机知道应用程序在另一台IP地址为128.1.123.1的主机上。

在获得了IP地址后,它需要知道应用程序的目的端口号是多少。

所有的UDP端口号和TCP端口号都存放在一种称为服务文件(Service File)的文件中。

在UNIX 系统中,服务文件通常位于/etc/services下。

在Windows xp主机中,可以在c:\windows\system32\drivers\etc下找到服务文件。

服务文件包括了应用程序到TCP端口号和到UDP端口号的所有映射。

当一个主机需要知道应用程序的目的UDP端口号和目的TCP端口号时,它会搜索服务文件来找出正确的端口号。

通常应用程序将它们各自的UDP端口号或TCP端口号安装在这个服务文件中。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。

这是通过使用UDP 的“端口号”完成的。

例如,如果一个客户希望在服务器128.1.123.1上使用域名服务系统,它就会给数据包一个目的地址128.1.123.1 ,并在UDP 头插入目标端口号53 。

源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。

3.4 客户机/服务器模式传输层的通信有时也称为客户端/服务器端通信。

典型情况是一个主机(客户端)需要使用另一个主机(服务器)上的应用程序。

当客户端需要用到一个使用UDP协议的远程主机上的应用程序时,它需要知道两方面的信息:应用程序所在主机的IP地址和应用程序目的端的UDP端口号。

其工作过程描述如下:服务器端描述:S端启动服务进程,并监听相应端口。