下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章概述TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一1般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:
2、NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。面向连接的TCP面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP(TransmissionControlProtocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次对话"才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:我想
3、给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:我现在就发,你接着吧!”,这是第三次对话。三次对话”的目的是使数据包的发送和接收同步,经过三次对话”之后,主机A才向主机B正式发送数据。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。一面向非连接的UDP协议面向非连接"就是在正式通信前不必与对方先建立连接,不管
4、对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。UDP(UserDataProtocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping令来测试两台主机之间TCP/IP通信是否正常,其实“pingt令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping操作发送4个数据包(如图所示)。大家可以
5、看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。第2章程序设计部分2.1设计目的通过本课程设计,在学习计算机通信与网络O课程的基础上,进一步深入理解计算机通信与网络的基本理论及其协议,进一步熟练掌握UDRTCPClient/Server模式的数据通信原理,熟悉进程通信的所要解决的问题,掌握网络通信的程序编程技术。2.2设计要求1)Java
6、语言支持TCP/UD成其上层的网络设计,所设计的网络通信应用系统建议采用Java语言利用Eclipse集成开发环境编程实现。课程设计按下述步骤进行: 利用socket编程方法,编写一个TCPUDPClient/Server模式的通信程序。 调试并运行自己编写的实现程序。 了解TCPUDPClient/Server模式的工作原理,比较二者的不同,如出现异常情况,在课程设计报告中写出原因分析。 备份保留程序代码电子文档,以备教师随时检查。2)Client/Server网络通信程序设计内容要具体详实,具有一定的编程工作量(程序代码一般应在100行以上)和技术难度。3)在课程设计报告中,通过截屏图给出
7、Client/Server网络通信或手机收发电子邮件的运行结果。4)对课程设计进行总结,写出符合规范格式要求的课程设计报告。课程设计报告撰写要求如下: 每个学生必须独立完成课程设计报告。 课程设计报告书写规范、文字通顺、图表活晰、数据完整、结论明确。 课程设计报告后应附参考文献。 提供电子文档资料。例如程序源代码、设计思路、功能结构图或程序流程图等。 附录:给出程序源代码(可附主要部分或代表自己编程特色的代码)。 课程设计报告封面按照学校统一要求格式编写,并装订成册。要求书面工整、美观;如果条件许可,最好打印装订成册。2.3设计原理TCP通信流程:苗求敌推网答散据客广机UDP通信流程:UDP通
8、信流程:服芸器2.4设计方案Socket连接:根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接
9、字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。第3章程序设计实现部分3.1C语言的网络功能与编程简介网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述符通信的一种方法。目前最常用的套接口是字:字节流套接口(基丁TCP利数据报套接口(基丁UDP)当然还有原始套接口(原始套接口提供TCP®
10、接口和UDFS接口所不提供的功能,如构造自己的TC或UD吩组)等。3.2系统原理框图服务器端客户机/服务器Socket通讯的工作模式图3.3程序设计服务器端:#include<WinSock2.h>#include<stdio.h>#pragmacomment(lib,"ws2_32.lib")voidmain()WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaDat
11、a);if(err!=0)return;if(LOBYTE(wsaData.wVersion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return;SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSr
12、v,sizeof(SOCKADDR);listen(sockSrv,5);SOCKADDR_INaddrClient;intlen=sizeof(SOCKADDR);while(1)SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);charsendbuffer100;sprintf(sendbuffer,"Welcome%shere”,inet_ntoa(addrClient.sin_addr);send(sockConn,我是沈郁,strlen(我是沈郁)+1,0);charrecvchar100;
13、recv(sockConn,recvchar,100,0);printf("%sn",recvchar);closesocket(sockConn);客户端:#include<WinSock2.h>#include<stdio.h>#pragmacomment(lib,"ws2_32.lib")voidmain()WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&
14、amp;wsaData);if(err!=0)return;if(LOBYTE(wsaData.wVersion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return;SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr("7”);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(
15、sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);charrecvBuffer100;recv(sockClient,recvBuffer,100,0);printf("%sn”,recvBuffer);send(sockClient,"ThisisKary",strlen("ThisisKary")+1,0);closesocket(sockClient);WSACleanup();3.4调试结果服务器:'CrsdellDocmentsLabVlEWDataDebugl.exe&q
16、uot;leIcoine172_19226.97herePressankeytocontinue3.5课程设计总结通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用丁实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习并实践了。本次课程设计是运用VisualC+6.0作为开发平台以及进行编写程序,在此设计过程中主要经过了审题、需求分析与可行性研究,然后形成设计思路,设计所要实现的功能,最后进行程序的编写与调试,这个过程是不断出现问题并不断的进行修改,深深的感受到亲自动手实践的重要性。在实验的过程中发现学好基础理论知识的重要性,在设计过程中,不断遇到问题,通过老师和同学的帮助,解决了过程中出现的各种问题。通过本次课程设计,我发现了自己的不足,希望在以后的学习中能够
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 痛风饮食禁忌与嘌呤摄入指南
- 年产8万立方米陶粒混凝土生产线可行性研究报告
- 2026届眉山市高三下学期第五次调研考试生物试题含解析
- AI赋能证券服务的创新模式
- 2026规划档案馆面试题及答案
- 人脸识别身份验证
- 管道维修公司销售助理述职报告
- 交易策略优化算法
- 人工智能在银行信息安全保障中的应用
- 人力资源总监年度招聘总结报告
- GA/T 1482-2026机动车驾驶人安全教育内容和方法
- 2026年北京市中考英语试卷真题(含答案及解析)
- 2026 年注塑车间主管上半年述职报告
- 2026上海复旦大学附属中山医院青浦新城院区临床护理岗位招聘笔试题库及答案详解
- 安徽九华山旅游发展股份有限公司招聘笔试真题2025
- 2026年安徽省淮北市辅警考试试题解析及答案
- 【新教材】人教版(2024)八年级下册物理期末检测试卷 3套(含答案)
- 2026上海博物馆公开招聘12名工作人员备考题库及参考答案详解
- 2026年山东定期医师考核题库及答案
- 肿瘤靶向治疗药物皮肤不良反应防治专家共识
- 骨关节炎阶梯治疗专家共识(2026版)
评论
0/150
提交评论