实现TCP和UDP数据包发送程序的设计和实现C.docx
《实现TCP和UDP数据包发送程序的设计和实现C.docx》由会员分享,可在线阅读,更多相关《实现TCP和UDP数据包发送程序的设计和实现C.docx(40页珍藏版)》请在冰豆网上搜索。
![实现TCP和UDP数据包发送程序的设计和实现C.docx](https://file1.bdocx.com/fileroot1/2022-10/28/4a2d78c0-3b7a-4385-9ecc-8f7b8c95d8a3/4a2d78c0-3b7a-4385-9ecc-8f7b8c95d8a31.gif)
实现TCP和UDP数据包发送程序的设计和实现C
【关键字】实现
长沙理工大学
《网络协议编程》课程设计论文
周瑞杰
学院计算机与通信工程专业网络工程
班级网络08-02学号0204
学生姓名周瑞杰指导教师王静
课程成绩完成日期2011年7月2日
课程设计任务书
计算机与通信工程学院网络工程专业
课程名称
网络协议编程课程设计
时间
2010~2011学年第二学期18~19周
学生姓名
周瑞杰
指导老师
王静
题目
TCP和UDP数据包发送程序的设计与实现
主要内容:
(1)掌握TCP和UDP的概念和工作原理;
(2)熟练掌握C#语言的编程原理;
(3)实现基于TCP协议的聊天程序设计;
(4)实现基于UDP协议的聊天程序设计;
(5)运行程序,并合理分析实验结果。
要求:
(1)按要求编写课程设计报告书,能正确阐述设计结果。
(2)通过课题设计培养学生严谨的科学态度,认真工作作风和团队协作精神。
(3)学会文献检索的基本方法和综合运用文献的能力。
(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
应当提交的文件:
(1)课程设计报告。
(2)课程设计附件(主要是源程序)。
课程设计成绩评定
学院计算机通信工程专业网络工程
班级网络08-02学号0204
学生姓名周瑞杰指导教师王静
课程成绩完成日期2011年7月2日
指导教师对学生在课程设计中的评价
评分项目
优
良
中
及格
不及格
课程设计中的创造性成果
学生掌握课程内容的程度
课程设计完成情况
课程设计动手能力
文字表达
学习态度
规范要求
课程设计论文的质量
指导教师对课程设计的评定意见
综合成绩指导教师签字年月日
TCP和UDP数据包发送程序的设计和实现
学生:
周瑞杰指导老师:
王静
摘要:
在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同程序间之间的数据传输,即数据的端到端传输。
TCP提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性;而UDP提供一种无连接的、不可靠的数据传输方式,但保证了数据传输的实时性。
本课程设计用C#语言分别编写了基于TCP的C/S聊天程序和基于UDP的C/S聊天程序。
经测试,本文程序基本实现了聊天功能,即实现了TCP和UDP数据包发送程序的设计。
关键词:
TCP、UDP、C#、C/S聊天程序、数据包发送程序
DesignandRealizationoftheSendingProgramofTCPandUDPPackets
Student:
ZhouRuijieInstructor:
WangJing
Abstract:
IntheTCP/IPprotocolclan,thetransportlayermainlyincludestwocommunicationprotocolsTCPandUDP,whichhadachievedthedatatransmissionamongdifferentprogramsbetweentwohostsindifferentways,namelytheend-to-enddatatransmission.TCPprovidesaconnection-oriented,reliabledatatransmissionservice,ensuringthereliabilityoftheend-to-enddatatransmission;WhileUDPprovidesaconnectionless,unreliablewayofdatatransmission,butguaranteeingthedatatransmissioninreal-time.ThiscoursedesignhasseparatelywrittenTCP-basedC/SchatprogramandUDP-basedC/SchatprograminC#.Bytest,thispaperprogramhasbasicallyachievedchatfunction,namelyrealizedthedesignofthesendingprogramofTCPandUDPpackets.
Keywords:
TCP、UDP、C#、C/Schatprogram、sendingprogramofpackets
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.1C#简介
C#(CSharp)是微软(Microsoft)为.NETFramework量身订做的程序语言,C#拥有C/C++的强大功能以及VisualBasic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。
C#具有以下特点:
(1)语法简洁。
(2)面向对象设计。
(3)与Web紧密结合。
(4)完整的安全性和错误处理。
(5)版本控制。
(6)兼容性。
(7)灵活性。
2.2TCP和UDP概述
在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同应用程序之间的数据传输,即数据的端到端传输。
由于它们的实现方式不同,因此各有一套属于自己的端口号,且相互独立。
可以采用如下五元组来描述两个应用进程之间的通信关联。
(协议,信源机IP地址,信源应用进程端口,信宿机IP地址,信宿应用进程端口)即端到端之间的一条通信连接就可以表示为上述五元组,这也是进行网络程序设计最基本的概念。
其中,传输控制协议(TransmissionControlProtocol,TCP)提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。
也正因为这样,使TCP协议成为传输层最常用的协议,同时也是一个比较复杂的协议,其提供了传输层几乎所有的功能。
因此和IP协议一样,成为了TCP/IP协议族中最重要的协议之一。
其主要特点如下:
(1)向应用进程提供面向连接的服务,两个需要通过TCP协议进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。
一般将请求连接的应用进程称为客户进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。
(2)提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。
(3)提供面向字节流的服务,即TCP协议的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。
发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。
端到端之间不保留数据记录的边界,也就是说,在传输的层面上不存在数据记录的概念。
用户数据报协议(UserDatagramProtocol,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.3C/S模式
在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,Client/Server。
在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Clie