TCP、IP协议技术与应用编程报告.doc_第1页
TCP、IP协议技术与应用编程报告.doc_第2页
TCP、IP协议技术与应用编程报告.doc_第3页
TCP、IP协议技术与应用编程报告.doc_第4页
TCP、IP协议技术与应用编程报告.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、基础知识 计算机网络的概念 网络体系结构与OSI参考模型 TCP/IP的体系结构 客户机/服务器模型 IP地址的概述1、计算机网络的概念 计算机网络是通过通信链路连接到一起的一组计算机或设备的集合,是现代通信技术与计算机技术相结合的产物。 通过网络,不同计算机用户之间可以一起共享资源,如磁盘上的文件及打印机等,也可以彼此之间互相交换数据信息。2、网络体系结构与OSI参考模型 网络的体系结构指的是通信系统的整体框架。它的目的是为网络硬件、软件、协议、存取控制和拓扑结构提供标准。 网络体系结构的关键要素是协议和拓扑。 协议定义了通信的方式和进行通信的时间,主要包括语法、语义和同步3个关键要素。 语法:定义了所交换数据的格式和结构,以及数据出现的顺序。 语义:定义了发送者或接受者所要完成的操作,包括对协议控制报文组成成分含义的约定。 同步:定义了事件实现顺序以及速度匹配。体现在当两个实体进行通信时,数据发送的事件以及发送的速率。 协议是指在计算机网络中,为进行网络中的数据交换而建立的规则、标准或约定的集合,如交换数据的格式、编码方式、同步方式等。分层的体系结构 每个实体通常定义两种不同的接口:一个是为同一计算机上使用它的通信服务的其他上层实体定义的服务接口,简称服务;另一个是为另一台计算机上对等实体定义的对等接口,即协议。 计算机网络的各层及其协议的集合就构成了网络的体系结构,即计算机网络及其构成所完成的精确定义。OSI参考模型 OSI参考模型传输数据的基本过程 两主机间使用OSI参考模型交换数据的基本过程 经过中间节点数据传递的过程3、TCP/IP的体系结构Telnet、FTP、HTTP、DNS、SNMP和SMTP等TCP和UDPIP、ICMP和IGMP设备驱动程序和网络接口卡等第3层 传输层第1层 网络接口层第2层 网际层第4层 应用层TCP/IP协议的层次结构各层常用的协议4、客户机/服务器模型 客户机/服务器模型的工作模型5、IP地址概述 由于不同物理网络的硬件地址编码方法不同、编址空间也不同,当不同物理网络组织在一起时,整个互联网络中的物理设备就无法用统一的编址方法和编址空间对其进行唯一标识。为此,在TCP/IP协议族中引入了IP地址来统一因特网中所有物理设备的编址,进而确保每个物理设备在因特网中都有一个唯一的标识。 在IPv4中,IP地址是由32位二进制数组成,其地址空间是02321。 一般将组成IP地址的32位二进制分成4段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样IP地址就可表示成: 这种表示方法通常称为点分十进制表示法。二、网络编程1、网络中两个通信程序如何相互识别对方2、Windows Sockets介绍3、使用MFC类库设计网络程序4、WinInet程序设计知识1、网络中两个通信程序如何相互识别对方 在网络中为了标识通信的进程,首先要标识网络中进程所在的主机,其次要标识主机上不同的进程。关于网络环境下不同主机的识别问题,在讲传输层协议时,我们知道为了完成端到端进程之间的通信,在互联网中使用IP地址来标识不同的主机。关于主机上不同的进程问题,在前面讲端口号时已经说明过,在网络协议中使用端口号来标识主机上的不同进程。还有一个问题,就是前面我们讨论的都是在TCP/IP协议下,端到端进程的标识问题,其实网络应用程序由于不同的主机可能使用不同的网络协议,其工作方式不同,地址的表示格式也不同,因此,网络中进程的通信还要解决多种协议的识别问题。这样为了惟一的标识网络中通信的一个进程(即通信的某一方)就要使用一个如下的三元组: (本地协议,本地IP地址,本地端口号) 这样一个三元组由于它只指定了通信时一条连接的半个部分,即通信的一方,所以叫一个半相关(half-association)。如果要完整的表示网络中进行通信的两个进程,那么就要使用一个如下结构的六元组: (本地协议,本地地址,本地端口号,远地协议,远地地址,远地端口号)2 、Windows Sockets介绍Windows Sockets的概念 Windows Sockets顾名思义,它就是在Windows环境下使用的一套网络编程机制(或规范),常常简称为Winsock。该规范是在上个世纪90年代初制定的。这套规范是在Windows操作系统下得到广泛应用的、开放的、支持多种协议的网络编程接口。该规范从1991年的1.0版到1997年的2.2.1版,经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的大力支持下,现在已经成为Windows环境下网络编程事实上的标准。 套接口的概念 Windows Sockets API依靠套接口(Socket)进行通讯,那么什么是套接口(Socket)呢?对于初学网络程序设计的人们来说,套接口是一个既抽象且又很重要的概念。因此要注意对于套接口这个概念的理解与体会。 套接口可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点,这个端点是一个逻辑上的概念。通信时其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡(Network Interface Cards, NIC)相连的传输介质将这段信息发送到另外一台主机的Socket中,使这段信息能传送到其他程序中,如图所示。 为了满足不同的通信程序对通信质量和性能的要求,一般的网络系统提供了三种不同类型的套接口,以供用户在设计网络应用程序时根据不同的要求来选择。这三种套接口分别是: 流式套接口(SOCK_STREAM):它提供了一种可靠的、面向连接的双向数据传输服务。实现了数据的无差错、无重复地发送。内设流量控制,被传输的数据看作是无记录边界的字节流。在TCP/IP协议族中,使用TCP协议来实现字节流的传输,当用户想要发送大批量的数据,或者对数据的传输有较高的要求时使用流式套接口。 数据报套接口(SOCK_DGRAM):它提供了一种无连接、不可靠的双向数据传输服务。数据包以独立的包形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端数据按发送顺序接收。在TCP/IP协议族,使用UDP协议(Winsock 2也支持其它的协议)来实现数据报套接口。在同一台计算机上或负载较轻的LAN上,因为出现差错的可能性较小,可以使用数据报套接口进行数据传输,这样通信的质量可以得到保证,并且通信的效率较高。另外,在前面的章节中我们已经说过,UDP还可以实现广播通信。 原始套接口(SOCK_RAW):该套接口允许对较低层协议(如IP或ICMP)进行直接访问。常用于检验新的网络协议实现,也可用于测试新配置或安装的网络设备。要说明的是Windows Sockets规范并没有规定Windows Sockets DLL必须支持原始套接口。3、使用MFC类库设计网络程序MFC类库简介 MFC(Microsoft Foundation Classes)是微软公司提供的用于C+程序设计的基础类库,它由两大部分组成:一部分是通常所说的C+类库,是MFC类库的主体部分,这些类构成了MFC应用程序框架;另一部分是MFC预定义宏、全局变量和全局函数,是MFC类库的辅助部分。这两部分都是用MFC进行Windows应用程序开发不可缺少的组成部分。 在MFC类库中,与网络程序设计有关的类有以下几种: (1)文件服务类(File Services) 在有关文件服务类的定义中有一个CSocketFile类,其实它并不是用来在双方套接口上发送文件的,而是将需要序列化的数据,比如一些结构体数据传给对方。要注意的是CSocketFile类虽然派生自CFile类,但它屏蔽掉了CFile:Open()等函数,也就是说不能调用CSocketFile的Open函数来打开一个实实在在的文件,否则会导致例外。 (2)Internet服务器API类(Internet Server API) 在Internet服务器API类中,主要定义了一些与HTTP协议有关的类,这些类是CHtmlStream、CHttpFilter、CHttpFilterContext、CHttpServer和CHttpServerContext (3)Internet服务类(Internet Serveices) Internet服务类中有与Internet会话有关的CInternetSession类,与Internet连接有关的CInternetConnection类,CInternetConnection有3个派生类,它们是CFtpConnection、CGopherConnection和CHttpConnection。与查找文件有关的CFileFind类,该类有两个派生类,它们是CFtpFileFind和CGopherFileFind类。 (4)Windows套接口类(Windows Sockets) MFC中定义了一个Windows套接口程序设计类CAsyncSocket,MFC还定义了一个派生于CAsyncSocket的CSocket类,这两个类简单易用,用户可以使用它们来实现自己的网络程序。 以上四种类型的类中,Windows套接口类是最基本的,也是最常用的网络程序设计类。4、WinInet程序设计知识 WinInet编程的简介 WinInet的最大优点是提供了对普通Internet协议的访问功能,这些协议包括HTTP、FTP和Gopher。这样程序员使用WinInet可以编写出高水平的Internet客户端程序,而不必去了解Winsock、TCP/IP和特定Internet协议的细节。这为那些对Internet协议了解不多,但又想设计Internet应用程序的人员提供了极大的方便。WinInet还为这三种协议提供了统一的函数集,既Win32 API接口。如果底层协议改变(如从FTP到HTTP),利用统一的函数集,只用修改少量的代码就可以完成这种改变。 在VC+中,提供了两种使用WinInet的方法: l调用Win32 Internet函数; l使用VC+提供的WinInet类库。MFC将WinInet封装在一个标准的、易于使用的类集合中。 在编写WinInet客户端程序时,既可以直接调用WinInet函数,也可以使用WinInet类库。 下面我们首先介绍WinInet函数,然后再讨论如何使用WinInet类库。在介绍WinInet函数之前,我们先介绍几个与WinInet函数有关的概念。三、编程实例MFC WinInet类应用程序编程实例在因特网上有很多FTP服务器,他们存有丰富的软件和信息资源,至今仍然是因特网提供的主要服务之一。现在也有很多FTP客户端软件,比如CuteFtp程序等,本小节就通过一个使用MFC WinInet类编制的FTP客户端程序的例子,说明MFC WinInet应用程序的编程方法。程序要实现的功能程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登录客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。应用程序的类型是基于对话框的,主对话框用户界面如图Ftp客户端程序的主对话框三个文本编辑框,分别用于输入FTP服务器域名,登录用户名和登录口令。一个列表框,用来显示FTP服务器当前目录的内容,并允许用户从中选择文件下载。四个命令按钮分别执行查询、上传、下载和退出的功能。用户执行程序的流程是:进行各种操作之前,应首先输入服务器域名,登录用户名和口令。如果要进行查询,可以点击查询按钮,调用OnQuery函数。该函数获得用户当前输入的服务器名、登录用户名和口令等信息,清除列表框的内容;然号创建Internet会话类对象,进行服务器的登录,试图建立与指定FTP服务器的连接;如果连接成功,就创建CFtpFileFind文件检索类对象,查找服务器上当前目录的任意文件,找到了第一个文件后,继续找其它的文件,并将找到的文件或目录名显示在列表框中。所有文件找到后,结束查询,并依次删除文件查询对象、FTP连接对象和Internet 会话对象,结束会话。此时,可以从服务器下载文件。从列表框中选择一个文件,会产生LBN_SELCHANGE事件,自动调用相应的OnSelchangeListFile函数,禁用用来输入的文本框控件,禁用查询和上传按钮,激活下载按钮。此时,用户可以点击下载按钮,产生BN_CLICKED事件,自动调用OnDownload函数,调用Download函数,下载该文件。下载完毕,禁用下载按钮,激活查询和上传按钮,激活用来输入的文本框控件。而Download函数重新创建Internet会话,建立FTP连接,下载文件后,将会话对象和连接对象清除。如果要向FTP服务器上传文件,点击“上传“按钮,产生BN_CLICKED事件,调用OnUpload函数,该函数获得当前输入的服务器名、登录用户名和口令,禁用用于输入的文本框控件,禁用查询按钮,禁用用于输入的文本框控件,弹出小对话框,获得待上传的本地机文件路径和文件名,调用Upload函数上传文件。上传完毕,激活查询按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论