基于TCP的文件传输实验报告
- 格式:doc
- 大小:169.00 KB
- 文档页数:19
实验名称:数据传递实验实验日期:2023年11月10日实验地点:实验室实验人员:[姓名]一、实验目的1. 理解数据在不同系统、设备之间传递的过程和原理。
2. 掌握使用常见的数据传递协议和方法。
3. 提高在实际工作中处理数据传递问题的能力。
二、实验原理数据传递是指在不同系统、设备之间传输数据的过程。
数据传递过程中,需要使用一定的协议和方法,以确保数据的正确、完整和高效传输。
三、实验内容1. 使用TCP/IP协议进行数据传递2. 使用串口通信进行数据传递3. 使用Modbus协议进行数据传递四、实验步骤1. 使用TCP/IP协议进行数据传递(1)搭建实验环境:两台计算机,一台作为服务器,一台作为客户端。
(2)编写服务器端程序:使用Python编写一个简单的TCP服务器程序,监听指定端口,接收客户端发送的数据。
(3)编写客户端程序:使用Python编写一个简单的TCP客户端程序,连接到服务器,发送数据。
(4)测试:在客户端发送数据,观察服务器端是否接收到数据。
2. 使用串口通信进行数据传递(1)搭建实验环境:一台计算机,一台具有串口功能的设备(如Arduino)。
(2)编写设备端程序:使用C语言编写一个简单的设备端程序,实现数据的读取和发送。
(3)编写计算机端程序:使用Python编写一个简单的计算机端程序,通过串口接收设备端发送的数据。
(4)测试:在设备端发送数据,观察计算机端是否接收到数据。
3. 使用Modbus协议进行数据传递(1)搭建实验环境:一台计算机,一台具有Modbus接口的设备(如PLC)。
(2)编写设备端程序:使用C语言编写一个简单的设备端程序,实现Modbus协议的数据读取和发送。
(3)编写计算机端程序:使用Python编写一个简单的计算机端程序,通过Modbus协议与设备端通信。
(4)测试:在设备端发送数据,观察计算机端是否接收到数据。
五、实验结果与分析1. 使用TCP/IP协议进行数据传递实验结果:客户端发送数据后,服务器端成功接收到数据。
TCP协议分析实验报告1. 引言TCP(传输控制协议)是一种面向连接的协议,用于在计算机网络中可靠地传输数据。
本实验旨在分析TCP协议的工作原理、数据包的格式和传输过程,并通过实验验证其可靠性和效率。
2. 实验环境在该实验中,我们使用了两台计算机作为实验设备,一台作为服务器,另一台作为客户端。
两台计算机通过以太网连接,并配置了相应的IP地址和子网掩码。
3. 实验步骤3.1 建立连接首先,客户端发送一个SYN包(同步包)到服务器的指定端口。
服务器收到SYN包后,发送一个SYN-ACK包(同步-确认包)作为响应。
客户端再次发送一个ACK包(确认包)给服务器,表示连接已建立。
3.2 数据传输一旦连接建立,客户端和服务器之间可以开始传输数据。
数据被分割成多个小的数据包,并使用TCP协议进行传输。
每个数据包都包含源端口、目的端口、序列号、确认号以及数据内容等字段。
3.3 确认和重传在传输过程中,接收方会发送确认包以确认已接收到的数据包。
如果发送方在一定时间内没有收到确认包,它会认为数据包丢失,然后重新发送该数据包。
这样可以确保数据的可靠性。
3.4 连接终止当数据传输完成后,客户端或服务器可以发送一个FIN包(结束包)来关闭连接。
接收到FIN包的一方发送一个ACK包作为确认,并关闭连接。
另一方在收到确认后也关闭连接。
4. 实验结果通过抓包工具,我们捕获并分析了在实验中传输的数据包。
我们观察到数据包的格式与TCP协议规定的格式相符,并且在传输过程中发现了确认和重传的情况,验证了TCP协议的可靠性。
5. 实验总结TCP协议是一种可靠的传输协议,在实验中我们深入了解了其工作原理和数据包的格式。
通过实验验证了TCP协议的可靠性和效率。
同时,我们也了解到了TCP协议在实际网络通信中的重要性和广泛应用。
参考文献•Tanenbaum, A. S., & Wetherall, D. J. (2011). 计算机网络(第5版).机械工业出版社.•Stevens, W. R., Wright, G., & Coppola, R. (1994). TCP/IP 详解卷1:协议. 机械工业出版社.本文档旨在介绍TCP协议的工作原理和实验验证过程,并不涉及具体的技术细节和算法解析。
网络编程文件传输实验报告CKBOOD was revised in the early morning of December 17, 2020.基于TCP一、1、2、sockets 二、本程序是基于TCP/IP协议栈的网络编程,使用C语言,利用操作系统提供的套接字网络编程接口进行编写TCP协议是其中重要的传输协议,为应用层提供可靠的端到端的流传输服务.其中套接字取值sock_stream即为TCP的流传输服务Windows socket包含了人们所熟悉的Berkeley Socket风格的函数库,也包含了一组针对windows的扩展库函数,以使程序员能充分的利用windows驱动消息机制进行编程。
Windows Sockets的规范本意在于提供给应用开发者一套简单的API,并让个网络应用软件开发商遵守该协议。
此外在一个特定的版本windows基础上,Windows socket也定义了一个二进制借口(ABI),从此来保证Windowssocket API应用程序能够在任何符合Windows socket协议的实现上工作。
三、设计概述1、创建套接字服务进程和客户进程在实现通信前必须创建各自的套接字,然后才能用相应的套接字进行发送接收操作,服务进程总是先于客户端进程启动,服务器端进程和客户端进程创建套接字。
Socket()函数实现代码如下:SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);....\n");....\n");//得到主机开始传送消息recv(clientSocket,receiveBuf,101,0);printf("%s\n",receiveBuf);if(strcmp(receiveBuf,"开始传送")==0){//传送文件长度char sendBuf[20];ltoa(length,sendBuf,10);send(clientSocket,sendBuf,21,0);fseek(fp,0L,SEEK_SET);//传送文件long int y=0;double cent;char trans[SIZE];while(!feof(fp)){fread(trans,1,SIZE,fp);y=y+SIZE;if(y<length){cent=(double)y*(double)length;printf("已发送:%%\n",cent); send(clientSocket,trans,SIZE+1,0); } else{ send(clientSocket,trans,length+SIZE-y+1,0);closesocket(clientSocket); WSACleanup(); } }fclose(fp);}printf("文件发送完毕\n");system("pause");}四、实验结果及分析:客户端运行结果服务器端运行结果五、心得体会:网络编程的实验课虽然只有八次,但是我们充分了解了各种网络编程和winsock控件的知识,了解了TCP/IP协议的相关知识以及其中两个重要协议TCP UDP的特点与差异,进一步学习了文件传输等知识,创建套接字监听传输关闭等过程,直到最后写出C/S模式的文件传输程序感觉我们巩固了教材的内容实践的能力也得到了提高不足之处就是自己粗心大意,在写代码时候参数注解等经常注明的不够好,希望以后能养成良好的编程习惯。
tcp协议实验报告TCP协议实验报告一、引言在计算机网络中,TCP(Transmission Control Protocol)是一种常用的传输层协议,负责实现可靠的数据传输。
本实验旨在通过对TCP协议的实验研究,深入理解其工作原理和性能特点。
二、实验目的1. 理解TCP协议的基本原理和机制。
2. 掌握TCP协议的连接建立、数据传输和连接释放过程。
3. 了解TCP协议的流量控制和拥塞控制机制。
三、实验环境1. 操作系统:Windows 102. 实验工具:Wireshark、Python四、实验过程1. 连接建立在实验中,我们使用Python编写了一个简单的TCP服务器和客户端程序。
首先,客户端向服务器发起连接请求(SYN包),服务器接收到请求后发送确认包(SYN+ACK包),最后客户端发送确认包(ACK包)完成连接建立过程。
2. 数据传输在连接建立后,我们通过客户端向服务器发送数据,观察数据在网络中的传输情况。
Wireshark工具可以捕获和分析网络数据包,我们可以通过它来查看TCP 数据包的详细信息,包括源地址、目的地址、序列号、确认号等。
3. 连接释放当数据传输完成后,我们需要关闭TCP连接。
在实验中,我们模拟了正常关闭连接和异常关闭连接两种情况。
正常关闭连接时,客户端和服务器分别发送FIN包和ACK包,最后双方都发送FIN包完成连接释放。
异常关闭连接时,我们可以通过强制关闭客户端或服务器进程来模拟,观察TCP协议对连接异常关闭的处理过程。
五、实验结果通过实验,我们观察到TCP协议的一些重要特点和性能表现:1. 可靠性:TCP协议通过序列号和确认号机制,确保数据的可靠传输。
如果接收方收到的数据包乱序或丢失,TCP协议会要求发送方重新发送。
2. 流量控制:TCP协议通过滑动窗口机制实现流量控制,防止发送方发送速度过快导致接收方无法处理。
当接收方缓冲区已满时,会发送窗口为0的ACK包,告知发送方暂停发送。
电子科技大学实验报告学生姓名:田家翼学号:2012019030029指导教师:张科日期:2014 年11 月29 日实验项目名称:FTP中的TCP传输服务报告评分:教师签字:一、实验原理FTP协议是一个用于文件传输的应用层协议,采用客户/服务器模式实现文件传输功能,使用TCP协议提供的面向连接的可靠传输服务。
FTP客户和服务器之间使用2条TCP连接来传输文件:控制连接(TCP端口21)和数据连接(TCP端口20)。
在整个FTP会话交互过程中,控制连接始终处于连接状态;数据连接则在每一次文件传送时使用PORT命令或PASV命令打开,文件传送完毕后关闭。
因此,整个FTP会话中如果传送多个文件,那么数据连接会打开和关闭多次。
TCP协议(RFC 793)是一个面向连接的、可靠的运输层协议,通过连接建立和连接终止这两个过程完成面向连接的传输。
TCP的连接建立通常被称为“三向握手”。
在建立TCP 连接之前,服务器程序需要向它的TCP模块发出被动打开请求,表示该服务器已经准备好接受客户的连接。
客户程序则要向它的TCP模块发出主动打开请求,表示该客户需要连接特定的服务器。
然后即可开始建立TCP连接。
以客户端主动连接TCP连接为例,TCP连接建立过程如下:(1)客户端TCP发送一个SYN报文段。
该报文段包括源端口号、目的端口号、客户的初始序号、客户可接收的TCP报文段数据的最大长度(MSS)等信息。
(2)服务器端TCP收到客户端的SYN报文段后,返回一个SYN和ACK报文段。
该报文段使用ACK标志和确认号字段确认已经收到了客户端的SYN报文段,另外对服务器端的报文段进行初始化。
(3)客户端TCP收到服务器端的SYN和ACK报文段后,发送一个ACK报文段。
该报文段使用ACK标志和确认号字段确认已经收到了服务器端的SYN和ACK报文段。
TCP连接中的任何一方(客户或服务器)都可以关闭连接。
当一方的连接被终止时,另一方还可以继续向对方发送数据。
实验报告课程名称计算机网络实验项目传输控制协议TCP 实验仪器主服务器一台,装有HTTP、FTP、TELNET、MAIL、DHCP、DNS等服务、组控设备若干、实验机:运行网络协议仿真教学系统通用版程序系别计算机学院专业网络工程班级/学号 0802/2008011396学生姓名邵华强实验日期_____2010.10.17_________成绩_______________________指导教师_______高卓_____________实验二 传输控制协议TCP【实验目的】1. 掌握TCP 协议的报文格式2. 掌握TCP 连接的建立和释放过程3. 掌握TCP 数据传输中编号与确认的过程4. 掌握TCP 协议校验和的计算方法5. 理解TCP 重传机制 【实验学时】建议4学时 【实验环境配置】该实验采用网络结构一【实验原理】 一. TCP 报文格式16位源端口号16位目的端口号32位序号32位确认序号16位窗口大小4位首部长度保留(6位)A C K P S H R S T S Y N F I NU R G 16位检查和16位紧急指针选项数据1161732二. TCP 连接的建立TCP是面向连接的协议。
在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。
对于一个要建立的连接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack(指明希望收到的下一个八位组的编号)来同步,习惯上将同步信号写为SYN,应答信号写为ACK。
整个同步的过程称为三次握手,下图说明了这个过程:三. TCP连接的释放对于一个已经建立的连接,TCP使用四次握手来结束通话(使用一个带有FIN附加标记的报文段)。
TCP关闭连接的步骤如下图所示:四. TCP重传机制TCP每发送一个报文段,就对这个报文段设置一次计时器。
只要计时器设置的重传时间到期,但还没有收到确认,就要重传这一报文段。
【实验步骤】练习一:察看TCP连接的建立和释放1.主机B、C、D启动协议分析器进行数据捕获,并设置过滤条件(提取TCP协议)。
tcp实验报告TCP实验报告一、实验目的TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它在互联网通信中扮演着重要的角色。
本实验旨在通过实际操作和观察,深入理解TCP协议的工作原理和特点。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.93. 实验工具:Wireshark三、实验步骤与结果1. 建立TCP连接通过Python的socket库,我们可以轻松地创建TCP连接。
在本实验中,我们编写了一个简单的服务器端和客户端程序,通过本地主机进行通信。
2. 数据传输与流量控制在TCP连接建立后,我们进行了数据的传输实验。
首先,我们发送了一个较小的数据包,观察到数据包的传输过程中,TCP协议会自动进行流量控制,确保数据的可靠传输。
接着,我们发送了一个较大的数据包,发现TCP会将大数据包拆分成多个小数据包进行传输,并在接收端进行重组。
3. 拥塞控制为了模拟网络拥塞的情况,我们在实验中人为地降低了网络带宽。
通过Wireshark抓包分析,我们观察到TCP协议在发现网络拥塞时,会自动减少发送速率,以避免网络的过载。
同时,我们还注意到TCP协议会根据网络的状况动态调整拥塞窗口的大小,以提高网络的利用率。
4. 可靠性与重传机制为了测试TCP协议的可靠性,我们在实验中故意模拟了数据包丢失的情况。
通过Wireshark的分析,我们发现当发送端未收到确认消息时,会自动触发重传机制,确保数据的可靠传输。
同时,TCP还会根据超时时间的动态调整,以适应不同网络环境下的传输速度。
五、实验总结通过本次实验,我们深入了解了TCP协议的工作原理和特点。
TCP作为一种可靠的传输协议,在互联网通信中发挥着重要的作用。
它通过流量控制、拥塞控制和重传机制等手段,确保了数据的可靠传输,并适应了不同网络环境的变化。
在今后的学习和实践中,我们将进一步深入研究TCP协议的细节,并结合实际应用场景,优化网络通信的性能和可靠性。
实验二 tcp文件传输一,实验目的掌握实现网络文件传输的方法,并了解TCP连接是字符流的二,实验内容1,单线程的文件传输2,多线程的文件传输3,加入异常控制语句,增强程序的鲁棒性(Robust)三,实验平台Windows7, myeclipse, java四,实验原理1,tcp文件传输TCP的工作原理和服务的特性TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP 体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务。
TCP协议最主要的特点是:1) 是一种基于连接的协议。
2) 保证数据准确到达。
3) 保证各数据到达的顺序与数据发出的顺序相同。
4) 传输的数据无消息边界。
TCP协议通讯工作原理(TCP三次握手)传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。
面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。
可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。
TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。
要通过TCP传输数据,必须在两端主机之间建立连接。
TCP的特性 TCP有以下特性:面向数据流的处理方式:TCP采用连续方式对数据进行处理,即TCP能够以每次接收一个字节的方式来接收数据,而不是按预先格式化的数据块的方式来接收。
TCP将数据格式化成可变长的数据流,然后传送给网际层。
TCP套接字编程机制根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
综合课程设计报告基于 TCP协议的文件传输系统学生姓名:指导教师:所在系:所学专业:年级:2011年6月目录摘要⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2 1、的相关知 (3)1.1 、通信的模式 (3)1.1.1 、的可靠性 (3)1.2.1 、 TCP/IP 的网体系构 (3)1.2.2 、 TCP/IP 网 (4)1.2 . 3、 TCP——控制 (4)2、winsock 控件 (5)2.1.1 、 winsock 的重要属性、方法和事件 (5)2.1.2 、 winsock 控件通信的工作原理 (7)3、程序与 (8)3.1 、程序 (8)3.1.1 、体 (8)3.1.2 、模 (9)3.2 、程序 (10)3.2.1 、工作原理 (10)3.2.2 、服器端主程序 (11)3.2.3 、客端主程序 (14)4、 (17)参考文献...........................................................................................................17.成定 (18)基于TCP协议的文件传输系统摘要随着网络的普及,网络编程显得尤其重要。
本实验使用Winsock 控件实现两台计算机间的文件传输,描述了Winsock 控件的使用方法及有关文件传输的算法。
随着计算机网络的迅速发展,人们的生活越来越离不开网络,如今网络编程已成为计算机发展的热点,而在众多的网络通信中,又以TCP/IP 协议最为流行。
本文讨论的Winsock 控件,提供了访问TCP/IP 网络的捷径,使用它可以不必了解TCP/IP 的细节和调用Winsock API ,只要设置好相应的属性和触发事件后的处理,就可以实现计算机之间的数据通信,进行文件传输了。
同时为了便于传输文件过程中的中断现象,在实验时应该充分考虑断点续传问题,即中断文件传输后已经传输的文件不丢失,等到再传时,能继续接着传送。
一、实训背景随着互联网的普及,网络文件传输已经成为人们日常生活中不可或缺的一部分。
为了提高工作效率,降低成本,许多企业和个人都选择了网络文件传输的方式。
本次实训旨在让学生掌握网络文件传输的基本原理和操作方法,提高实际应用能力。
二、实训目的1. 了解网络文件传输的基本原理和常用协议;2. 掌握FTP、SFTP、FTPS等网络文件传输协议的使用方法;3. 学会使用常见的网络文件传输工具,如FileZilla、WinSCP等;4. 提高网络文件传输的安全性和效率。
三、实训内容1. 网络文件传输基本原理(1)TCP/IP协议:网络文件传输的基础协议,负责数据的传输和路由;(2)FTP(File Transfer Protocol):文件传输协议,是最常用的网络文件传输协议之一;(3)SFTP(Secure File Transfer Protocol):安全文件传输协议,基于SSH协议,具有更高的安全性;(4)FTPS(FTP Secure):基于SSL/TLS的FTP协议,提供了加密传输功能。
2. 网络文件传输工具使用(1)FTP客户端:FileZilla、FlashFXP等;(2)SFTP客户端:WinSCP、Cygwin等;(3)FTPS客户端:FileZilla、SecureCRT等。
3. 网络文件传输安全与效率(1)选择安全的传输协议,如SFTP、FTPS等;(2)使用强密码,并定期更换;(3)采用加密文件传输,提高数据安全性;(4)合理规划文件传输路径,提高传输效率。
四、实训步骤1. 安装FTP服务器:在虚拟机或本地计算机上安装FTP服务器,如WAMP、XAMPP 等;2. 配置FTP服务器:设置用户权限、目录权限等;3. 使用FTP客户端连接FTP服务器:在FileZilla、FlashFXP等FTP客户端中输入FTP服务器地址、端口、用户名和密码,连接服务器;4. 上传和下载文件:在FTP客户端选择需要上传或下载的文件,点击上传或下载按钮;5. 使用SFTP客户端进行安全文件传输:在WinSCP、Cygwin等SFTP客户端中输入SFTP服务器地址、端口、用户名和密码,连接服务器;6. 使用FTPS客户端进行加密文件传输:在FileZilla、SecureCRT等FTPS客户端中输入FTPS服务器地址、端口、用户名和密码,连接服务器。
综合课程设计报告基于TCP协议的文件传输系统学生姓名:指导教师:所在系:所学专业:年级:2011年6月目录摘要 (2)1、实验的相关知识 (3)1.1、通信的模式 (3)1.1.1、传输的可靠性 (3)1.2.1、TCP/IP的网络体系结构 (3)1.2.2、TCP/IP网络协议 (4)1.2.3、TCP——传输控制协议 (4)2、winsock控件 (5)2.1.1、winsock的重要属性、方法和事件 (5)2.1.2、winsock控件通信的工作原理 (7)3、程序设计与实现 (8)3.1、程序设计 (8)3.1.1、总体设计 (8)3.1.2、模块设计 (9)3.2、程序实现 (10)3.2.1、工作原理 (10)3.2.2、服务器端主程序 (11)3.2.3、客户端主程序 (14)4、实验总结 (17)参考文献...............................................................17. 成绩评定. (18)基于TCP协议的文件传输系统摘要随着网络的普及,网络编程显得尤其重要。
本实验使用Winsock控件实现两台计算机间的文件传输,描述了Winsock控件的使用方法及有关文件传输的算法。
随着计算机网络的迅速发展,人们的生活越来越离不开网络,如今网络编程已成为计算机发展的热点,而在众多的网络通信中,又以TCP/IP协议最为流行。
本文讨论的Winsock控件,提供了访问TCP/IP网络的捷径,使用它可以不必了解TCP/IP的细节和调用Winsock API,只要设置好相应的属性和触发事件后的处理,就可以实现计算机之间的数据通信,进行文件传输了。
同时为了便于传输文件过程中的中断现象,在实验时应该充分考虑断点续传问题,即中断文件传输后已经传输的文件不丢失,等到再传时,能继续接着传送。
关键词:TCP/IP协议,Winsock控件,网络编程,文件传输,断点续传。
1、实验的相关知识1.1通信的模式由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。
对于C/S 的模式,即分为客户端和服务端。
服务端用来接收客户端的连接,实现两端之间互相传输文件。
采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN中的server和client两方面的处理能力,极大的减少网络上的信息流通量。
C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。
1.1.1传输的可靠性要想实现文件的可靠性传输,可以使用流式套接字。
因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。
而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。
1、2、1TCP/IP的网络体系结构TCP/IP协议采用层次体系结构,如图1所示,从图中可以看出,每一层在逻辑上都与通信端的对应层相连接。
图中所示的服务器程序持续监听通信客户端;客户端仅周期性地与服务器相连接以交换数据,其中TCP协议层提供相当于OSI参考模型中传输层的服务,为收、发端应用程序提供通信;IP协议层负责提供统一的数据报;链路层主要功能是收、发IP层的IP数据报;TCP/IP 之上是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet、Token Ring、X.25公共分组交换网等。
图1 TCP/IP协议层模型(LAN)1、2、2 TCP/IP网络协议协议是对等的网络实体之间通信的规则,可以简单地理解为网络上各计算机彼此交流的一种“语言”。
网络通信协议设计的基本原则是层次化,层和协议的集合被称为网络体系结构。
相邻层之间的接口定义了下层向上层提供的基本操作和服务,下层向上层提供的服务分两种形式:面向连接的服务和无连接的服务。
计算机网络中已经形成的网络体系结构主要有两个:OSI参考模型和TCP/IP参考模型。
TCP/IP 参考模型是因特网(Internet)的基础。
和OSI的7层协议相比,TCP/IP协议只有4个层次。
通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族,包括100多个相互关联的协议,其中IP(Internet Protocol, 网际协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议是传输层中最主要的协议),一般认为IP、TCP、UDP是最根本的三种协议,是其他协议的基础。
1.2.3 TCP——传输控制协议面向连接的通信可以使用可靠通信,在这时候,第四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新传输。
TCP协议就使用这种可靠通信。
使用TCP协议的应用层协议包括HTTP、FTP、SMTP和Telnet等。
TCP要求在发送数据之前必须打开连接。
服务器应用程序必须执行一个称作被动打开(passive open)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求。
客户应用程序必须执行一个主动打开(active open),为此,它向服务器应用程序发送一个同步序列号(SYN)以标识连接。
客户应用程序可以将动态端口号作为本地端口使用。
服务器必须向客户发送一个确认(ACK)以及服务器的序列号(SYN)。
随后,客户回复一个ACK,这样就建立了链接。
现在可以发送和接收消息了。
接收消息后,总是返回ACK消息。
如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。
由于它的握手机制,所以TCP协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。
2. Winsock控件Winsock即Windows Sockets规范的简称,是目前最流行的网络通信应用程序接口之一。
所谓Socket,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。
Winsock控件工作在传输层上,在这一层上,目前主要流行的协议包括TCP和UDP两种:TCP协议适用于那些对于数据的可靠性要求比较高的情况,目前大多数的网络应用层协议都是基于TCP协议的(例如常用的HTTP、FTP、SMTP、POP3等协议);UDP协议适用于对数据可靠性要求不高而对速度要求较高的情况,这里主要包括一些需要大流量的(例如Real公司的RTSP协议,腾讯公司的QQ协议等)。
2.1.1 Winsock控件重要属性、方法和事件(1) 属性Protocol:通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。
可选的协议是TCP 和UDP,对应的VB中常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。
注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。
SocketHandle:SocketHandle返回当前socket连接的句柄,这是只读属性。
RemoteHostIP:返回远程计算机的IP地址。
在客户端,当使用了控件的Connect方法后,远程计算机的IP 地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。
如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。
ByteReceived:返回当前接收缓冲区中的字节数。
State:用于返回当前WinSock控件的状态。
如表2-1所示。
表1-1 返回WinSock控件当前的状态(2) 方法Bind:用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序能再使用这个端口。
Listen:只在使用TCP协议时有用。
它将应用程序置于监听检测状态。
Connect:当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。
Accept:当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的请求。
SendData:当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参数,就是要发送的数据。
GetData:当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓冲区中取出数据,可以使用GetData方法。
PeekData:和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。
(3) 事件ConnectRequest:当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。
SendProgress:当一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将被触发。
SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。
SendComplete:当所有数据发送完成时,被触发。
DataArrival:当建立连接后,接受到了新数据就会触发这个事件。
注意:如果在接受到新数据前,缓冲区中非空,就不会触发这个事件。
Error:当在工作中发生任何错误都会触发这个事件。
2.1.2 Winsock控件通信的工作原理Winsock控件是基于Socket规范创建的,所以其通信的实质是对Socket接口进行数据的读写操作。
如果两个应用程序需要通信,它们可以通过使用Socket类来建立套接字连接,可以将这个过程想象为一次电话呼叫过程:呼叫者通过拨号与被呼叫者连接,当电话接通时,双方都可以自由通话了,只不过这里的呼叫者被称为“客户”,被呼叫者则称为“服务器”,而号码则为“IP地址+端口”,但在建立连接之前,必须由“客户”发出呼叫,且此时的“服务器”正在监听。
因此,基于TCP/IP协议的通信,需要分别建立客户端应用程序和服务器端应用程序。
其大致流程如图1所示:图1 Winsock工作原理端口号被规定在0~65535范围内的某一个整数,其中0~1023被预先定义的服务器通信所占用(如telnet占用23,http占用端口80),所以最好使用1024~65535这些端口中的某一个,以免发生端口冲突。
3程序设计与实现3.1 程序设计3.1.1总体设计本程序的文件传输系统的实现应包含服务端模块、客户端模块等几个部分,整个程序采用VB 完成。