计算机网络四计算机网络通信应用程序设计
东南大学自动化学院
实 验 报 告
课程名称: 计算机网络实验
第 4 次实验
实验名称: 计算机网络通信应用程序设计
院 (系): 自动化 专 业: 自动化
姓 名: 学 号:
实 验 室: 实验组别:
同组人员: 实验时间: 2011年 5月 30日
评定成绩:
一、 实验目的和要求:
(一)基于TCP/IP的计算机网络通信应用程序设计
1. 通过本实验课程的学习,使学生能够理解TCP 协议通信的基本原理。
2. 通过运用WinSock 接口编写网络通信应用程序,掌握TCP 网络应用程序架构的设计思想。
3. 学会设计利用TCP 简单的应用层协议。
(二)基于UDP/IP的计算机网络通信应用程序设计
1. 通过本实验课程的学习,使学生能够理解UDP 协议通信的基本原理。
2. 通过运用WinSock 接口编写网络通信应用程序,掌握UDP 网络应用程序架构的设计思想。
3. 学会设计利用UDP 简单的应用层协议。
二、实验原理:
TCP (Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP 连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A 向主机B 发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B 向主机A 发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A 再发出一个数据包确认主机B 的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A 才向主机B 正式发送数据。TCP 协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP 协议传输数据。
UDP (User Data Protocol,用户数据报协议)是与TCP 相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP 数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP 协议是面向非连接的协议,没有建立连接的过程。正因为UDP 协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP 协议高。QQ 就使用UDP 发消息,因此有时会出现收不到消息的情况。
附表:tcp 协议和udp 协议的差别
TCP 协议和UDP 协议各有所长、各有所短,适用于不同要求的通信环境。TCP 协议和UDP 协议之间的差别如附表所示。
三、实验方案与实验步骤:
基于TCP 的SOCKET 编程:
服务器端
1:创建套接字(create )
2:将套接字设为监听模式,准备接受客户请 求(listen )
3:等待客户请求到来;请求到来后,接受请求,返回一个新的对应于此次连接的套接字(accept )
4:用返回的套接字和客户端进行通信(send/recv)
5:关闭套接字
客户端
1:创建套接字(socket )
2:向服务器发出连接请求(connect )
3:和服务器进行通信(send/recv)
4:关闭套接字
基于UDP 的socket 编程:
服务器端
1:创建套接字(create )
2:将套接字绑定到一个本地地址和端口上(bind )
3:等待接收数据(recvfrom )
4:关闭套接字
客户端
1:创建套接字( create )
2:向服务器发送数据(sendto )
3:关闭套接字
基于TCP 的SOCKET 编程流程图:
服务器客户端 流程 流程图
实验内容:在Windows 网络环境下,以其中的2台计算机为对象,构成主从计算机应用系统,设计简单的应用层协议,开发基于TCP/IP或UDP/IP的网络通信程序,实现数据传送和文件传输。
四、实验设备与器材配置:
1.实验室具有基于TCP/IP协议的Windows 网络硬软件环境;
2.微机 1台。
五、实验记录:
输入正确ip ,端口,服务器,能够通过输入框输入信息,互相之间进行通信聊天。
六、实验总结:
通过此次实验,了解tcp ,udp 协议的通信原理,并能够通过运用WinSock 接口编写网络通信应用程序,掌握编程的构架思想,并学会设计利用简单的应用层协议。