摘要:在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同程序间之间的数据传输,即数据的端到端传输。
TCP提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性;而UDP提供一种无连接的、不可靠的数据传输方式,但保证了数据传输的实时性。
本课程设计用C#语言分别编写了基于TCP的C/S聊天程序和基于UDP 的C/S聊天程序。
经测试,本文程序基本实现了聊天功能,即实现了TCP和UDP数据包发送程序的设计。
关键词:TCP、UDP、C#、C/S聊天程序、数据包发送程序Design and Realization of the Sending Program of TCP and UDP Packets Student:Zhou Ruijie Instructor:WangJingAbstract:In the TCP / IP protocol clan, the transport layer mainly includes two communication protocols TCP and UDP, which had achieved the data transmission among different programs between two hosts in different ways, namely the end-to-end data transmission. TCP provides a connection-oriented, reliable data transmission service, ensuring the reliability of the end-to-end data transmission; While UDP provides a connectionless, unreliable way of data transmission, but guaranteeing the data transmission in real-time. This course design has separately written TCP-based C/S chat program and UDP-based C/S chat program in C#. By test, this paper program has basically achieved chat function, namely realized the design of the sending program of TCP and UDP packets.Keywords:TCP、UDP、C#、C/S chat program、sending program of packets目录1引言 (1)1.1课程设计的目的 (1)1.2本设计任务和主要内容 (1)2开发工具及相关技术 (2)2.1 C#简介 (2)2.2 TCP和UDP概述 (2)2.3 C/S模式 (4)3 基于TCP的C/S聊天程序的详细设计 (6)3.1 TCP设计思路 (6)3.2 客户端编程步骤 (8)3.3 服务器端编程步骤 (9)4 基于UDP的C/S聊天程序的详细设计 (11)4.1 UDP设计思路 (11)4.2 客户端编程步骤 (12)4.3 服务器端编程步骤 (13)5 结果分析 (14)5.1 TCP聊天程序运行结果 (14)5.2 UDP聊天程序运行结果 (17)5.3 结果分析 (17)6 结束语 (18)7 参考文献 (19)附录1:TCP源程序清单 (20)附录2:UDP源程序清单 (33)1引言自进入信息化社会以来,人们的生活发生了翻天覆地的变化,所有这一切的实现都要归功于计算机网络。
自从计算机网络出现以来,网络发展越来越迅速,其重要性更是不可估量。
现在,网络已经进入到我们生活的各个角落,大到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等,可以说网络把我们的世界变“小”了,即使在天涯海角,我们也可以随时联系。
一个最简单且应用最广泛的例子——网上聊天,就是最好的证明。
本课程设计将基于TCP 和UDP协议,使用C#语言分别实现一个C/S聊天程序。
1.1课程设计的目的本次课程设计是用C#分别编写基于TCP和UDP协议的C/S聊天程序,所以其基本任务就是要实现客户端和服务器端的通信,即客户端和服务器对端能够互相发送数据和接收数据。
其中TCP是面向连接的协议,所以在客户端和服务器端在通信之前必须先由服务器端监听,客户端发送连接请求,成功建立连接后才能进行通信,这个机制保证了数据传输的可靠性。
实现了这个过程,就达到了本次课程设计TCP和UDP数据包发送程序的设计和实现的目的。
1.2本设计任务和主要内容(1)掌握TCP和UDP的概念和工作原理;(2)熟练掌握C#语言的编程原理;(3)实现基于TCP协议的聊天程序设计;(4)实现基于UDP协议的聊天程序设计;(5)运行程序,并合理分析实验结果。
2开发工具及相关技术2.1 C#简介C#(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。
C#具有以下特点:(1)语法简洁。
(2)面向对象设计。
(3)与Web紧密结合。
(4)完整的安全性和错误处理。
(5)版本控制。
(6)兼容性。
(7)灵活性。
2.2 TCP和UDP概述在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同应用程序之间的数据传输,即数据的端到端传输。
由于它们的实现方式不同,因此各有一套属于自己的端口号,且相互独立。
可以采用如下五元组来描述两个应用进程之间的通信关联。
(协议,信源机IP地址,信源应用进程端口,信宿机IP地址,信宿应用进程端口)即端到端之间的一条通信连接就可以表示为上述五元组,这也是进行网络程序设计最基本的概念。
其中,传输控制协议(Transmission Control Protocol,TCP)提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。
也正因为这样,使TCP协议成为传输层最常用的协议,同时也是一个比较复杂的协议,其提供了传输层几乎所有的功能。
因此和IP协议一样,成为了TCP/IP协议族中最重要的协议之一。
其主要特点如下:(1)向应用进程提供面向连接的服务,两个需要通过TCP协议进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。
一般将请求连接的应用进程称为客户进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。
(2)提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。
(3)提供面向字节流的服务,即TCP协议的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。
发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。
端到端之间不保留数据记录的边界,也就是说,在传输的层面上不存在数据记录的概念。
用户数据报协议(User Datagram Protocol,UDP)是传输层的两个主要协议之一,相对TCP协议来说,UDP是一种非常简单的协议,在网络层的基础上实现了应用进程之间端到端的通信。
与TCP协议不同,UDP协议是一种无连接的协议,数据在传输之前通信双方不需要建立连接。
信宿在收到UDP数据报之后也不需要给出任何应答报文。
发送方发出的每一个UDP用户数据报都是独立的,都携带了完整的目的地址。
每个数据报都可以被网络系统独立路由。
因此从同一个信源发往同一个信宿的多个UDP报文可能选择不同的路径达到信宿,它们达到的先后顺序也可能不同于发送顺序。
所以,UDP协议提供的是一种无连接的、不可靠的数据传输方式,在数据传输过程中没有流量控制和确认机制,数据报可能会丢失、延迟、乱序到达信宿。
UDP协议只是提供了利用校验和检查数据完整性的简单差错控制,属于一种尽力而为的数据传输方式。
虽然UDP用户数据报提供不可靠的传输方式,但它具有其自身的一些特点:(1)UDP是一个无连接协议,传输数据之前信源和信宿不需要建立连接,因此不存在连接建立的时延。
在信源端,UDP传送数据的速度仅仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在信宿端,UDP把每个数据报放在队列中,应用程序每次从队列中读一个数据报。
(2)由于传输数据不需要建立连接,也就不需要维护连接状态,包括收发状态等,这样一台服务机可同时向多个客户机传输相同的数据,例如实现多播。
(3)UDP数据报的首部很短,只有8字节,相对于TCP的20字节首部的开销要小很多。
(4)吞吐量不受流量控制算法的调节,只受应用软件生成数据的速率、传输带宽、信源和信宿主机性能的限制。
由于UDP具有这些特点,有许多应用更适合使用UDP协议,如:(1)只需要简单数据交换的应用,例如DNS服务,它不需要复杂的可靠性保证机制,这样,利用UDP来传输数据既可以节省系统开销又提高了网络的传输效率。
(2)不需要关心数据的差错控制和流量控制的应用。
(3)实时性要求较高但可承受一定的数据错误的应用,例如实时语音传输、实时视频通信等。
(4)实现一对多数据发送的应用,例如广播和组播。
2.3 C/S模式在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,Client/Server。
在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
C/S工作过程如下:服务器端描述:S端启动服务进程,并监听相应端口。