《第一章 windows网络编程基础.ppt》由会员分享,可在线阅读,更多相关《第一章 windows网络编程基础.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Windows网络编程技术网络编程技术南昌大学何俊n n一一.学习目的学习目的 培养网络软件开发技术人员培养网络软件开发技术人员 n n二二.总学时:总学时:64 课时安排:理论课时安排:理论32,上机,上机32n n三三.理论学习内容理论学习内容 1 windows 网络编程基础网络编程基础 2 VC+6.0 3 基于基于winsock的网络编程的网络编程 4 单机资源共享的应用编程单机资源共享的应用编程 5 高级网络编程(高级网络编程(MFC)n n四四.上机实验内容上机实验内容n n(共包括共包括共包括共包括1616个实验,每个个实验,每个个实验,每个个实验,每个2 2个学时个学时个学时
2、个学时)n n实验一实验一实验一实验一 熟悉网络编程环境熟悉网络编程环境熟悉网络编程环境熟悉网络编程环境n n实验二实验二实验二实验二 创建创建创建创建WindowsWindows窗口应用程序窗口应用程序窗口应用程序窗口应用程序n n实验三实验三实验三实验三 创建菜单程序、对话框程序创建菜单程序、对话框程序创建菜单程序、对话框程序创建菜单程序、对话框程序n n实验四实验四实验四实验四 TCPTCP套接字编程套接字编程套接字编程套接字编程n n实验五实验五实验五实验五 UDPUDP套接字编程套接字编程套接字编程套接字编程n n实验六实验六实验六实验六 利用互斥对象实现线程同步利用互斥对象实现线程
3、同步利用互斥对象实现线程同步利用互斥对象实现线程同步n n实验七实验七实验七实验七 利用事件对象实现线程同步利用事件对象实现线程同步利用事件对象实现线程同步利用事件对象实现线程同步n n实验八实验八实验八实验八 利用关键代码段对象实现线程同步利用关键代码段对象实现线程同步利用关键代码段对象实现线程同步利用关键代码段对象实现线程同步n n实验九实验九实验九实验九 多线程聊天程序编程多线程聊天程序编程多线程聊天程序编程多线程聊天程序编程n n实验十实验十实验十实验十 基于消息的异步套接字编程基于消息的异步套接字编程基于消息的异步套接字编程基于消息的异步套接字编程n n实验十一实验十一实验十一实验十
4、一 基于剪贴板的进程通信基于剪贴板的进程通信基于剪贴板的进程通信基于剪贴板的进程通信n n实验十二实验十二实验十二实验十二 基于匿名管道的进程通信基于匿名管道的进程通信基于匿名管道的进程通信基于匿名管道的进程通信n n实验十三实验十三实验十三实验十三 基于命名管道的进程通信基于命名管道的进程通信基于命名管道的进程通信基于命名管道的进程通信n n实验十四实验十四实验十四实验十四 基于邮槽的进程通信基于邮槽的进程通信基于邮槽的进程通信基于邮槽的进程通信n n实验十五实验十五实验十五实验十五 动态链接库的创建与应用动态链接库的创建与应用动态链接库的创建与应用动态链接库的创建与应用n n实验十六实验十
5、六实验十六实验十六 基于基于基于基于MFCMFC编写一个网络应用程序编写一个网络应用程序编写一个网络应用程序编写一个网络应用程序参考书n n1.windows网络编程技术网络编程技术胡鸣,科学技胡鸣,科学技 术出版社术出版社.2008.6n n2.精通精通windows sockets孙海民,人孙海民,人 民邮电出版社民邮电出版社.2008.7n n3.windows网络编程网络编程第二版,琼斯第二版,琼斯,杨杨 合庆译,清华大学出版社。合庆译,清华大学出版社。考核方式n n作业作业n n考勤考勤第一章第一章 Windows网络编程基础网络编程基础南昌大学本章内容本章内容n n1.1 Wind
6、ows网络编程基础知识n n 1.1.1 1.1.1 常用的网络应用实例常用的网络应用实例 n n 1.1.2 1.1.2 网络应用的特点网络应用的特点n n 1.1.3 1.1.3 网络编程基础知识网络编程基础知识n n1.2 Windows环境下的应用程序n n 1.2.1 1.2.1 应用程序的形态应用程序的形态n n 1.2.2 1.2.2 应用程序的运行环境应用程序的运行环境n n 1.2.3 1.2.3 应用程序的开发环境应用程序的开发环境VC+VC+n n1.3 Windows环境下的网络应用程序n n 1.3.1 1.3.1 网络应用程序的系统支持网络应用程序的系统支持n n
7、1.3.2 1.3.2 网络应用程序运行环境的问题网络应用程序运行环境的问题n n 1.3.3 1.3.3 网络应用程序的应用模型网络应用程序的应用模型1.1 Windows网络编程基础知识网络编程基础知识n n1.1.11.1.1 常用的网络应用实例常用的网络应用实例常用的网络应用实例常用的网络应用实例n n目的:目的:目的:目的:开发网络应用程序,提供互联网服务开发网络应用程序,提供互联网服务n n浏览器:浏览新闻、文献检索、论坛、在线收看影视等浏览器:浏览新闻、文献检索、论坛、在线收看影视等n n电子邮件:可非即时收发。如电子邮件:可非即时收发。如foxmailfoxmail、outlo
8、okoutlook等等n n文件传输服务:可共享软件资源。如文件传输服务:可共享软件资源。如BTBT。n n个人聊天:个人聊天:QQQQ、MSNMSN、聊天室、聊天室n n网络游戏:网络围棋、三国等网络游戏:网络围棋、三国等n n网络安全:防火墙、杀毒软件,如瑞星等网络安全:防火墙、杀毒软件,如瑞星等n n网络应用:在线考试等网络应用:在线考试等1.1.2 网络应用的特点网络应用的特点n n1 1)网络服务至少需要)网络服务至少需要)网络服务至少需要)网络服务至少需要2 2台以上计算机支持;台以上计算机支持;台以上计算机支持;台以上计算机支持;n n2 2)每台计算机运行的网络应用进程与该计算
9、机上的其它)每台计算机运行的网络应用进程与该计算机上的其它)每台计算机运行的网络应用进程与该计算机上的其它)每台计算机运行的网络应用进程与该计算机上的其它进程共享该机器上的系统资源;进程共享该机器上的系统资源;进程共享该机器上的系统资源;进程共享该机器上的系统资源;n n3 3)网络应用进程之间的通信由标准化的)网络应用进程之间的通信由标准化的)网络应用进程之间的通信由标准化的)网络应用进程之间的通信由标准化的I/OI/O接口(如网卡)接口(如网卡)接口(如网卡)接口(如网卡)以及其它连接硬件支持;以及其它连接硬件支持;以及其它连接硬件支持;以及其它连接硬件支持;n n4 4)网络进程通信,由
10、计算机网络协议(如)网络进程通信,由计算机网络协议(如)网络进程通信,由计算机网络协议(如)网络进程通信,由计算机网络协议(如TCP/IPTCP/IP)支持。)支持。)支持。)支持。n n5 5)具有虚拟设备的功能。必须建立标准的通信规范。)具有虚拟设备的功能。必须建立标准的通信规范。)具有虚拟设备的功能。必须建立标准的通信规范。)具有虚拟设备的功能。必须建立标准的通信规范。1.1.3 网络编程基础知识网络编程基础知识AB网络网络192.168.0.118192.168.0.10协议协议协议协议端端口口号号端端口口号号IP地址地址nIP网络中每台主机都必须有一个唯一的网络中每台主机都必须有一个
11、唯一的IP地址;地址;nIP地址是一个逻辑地址;地址是一个逻辑地址;n因特网上的因特网上的IP地址具有全球唯一性;地址具有全球唯一性;n32位,位,4个字节,常用点分十进制的格式表个字节,常用点分十进制的格式表示,例如:示,例如:192.168.0.16协议协议n为进行网络中的数据交换(通信)而建立为进行网络中的数据交换(通信)而建立的规则、标准或约定。的规则、标准或约定。(=语义语义+语法语法+规则规则)n不同层具有各自不同的协议。不同层具有各自不同的协议。网络的状况网络的状况多种通信媒介有线、无线不同种类的设备通用、专用不同的操作系统Unix、Windows 不同的应用环境固定、移动不同业
12、务种类分时、交互、实时用户业务的延续性不允许出现大的跌宕起伏。它们互相交织,形成了非常复杂的系统应用它们互相交织,形成了非常复杂的系统应用环境。环境。网络异质性问题的解决网络异质性问题的解决n网络体系结构网络体系结构就是使这些用不同媒介连接起来的不同设备就是使这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种种业务需求的一种粘合剂粘合剂,它营造了一种,它营造了一种“生存空间生存空间”任何厂商的任何产品、以及任何技术只要遵守这个空间任何厂商的任何产品、以及任何技术只要遵守这个空间的行为规则,就能够在
13、其中生存并发展。的行为规则,就能够在其中生存并发展。n网络体系结构网络体系结构解决异质性问题采用的是解决异质性问题采用的是分层分层方法方法 把把复杂的网络互联问题划分为若干个较小的、单一的问题,复杂的网络互联问题划分为若干个较小的、单一的问题,在不同层上予以解决。在不同层上予以解决。就像我们在编程时把问题分解为很多小的模块来解决一样。就像我们在编程时把问题分解为很多小的模块来解决一样。ISO/OSI七层参考模型七层参考模型nOSI(Open System Interconnection)参考模参考模型将网络的不同功能划分为型将网络的不同功能划分为7层。层。应用层表示层物理层会话层传输层网络层数
14、据链路层处理网络应用数据表示主机间通信端到端的连接寻址和最短路径介质访问(接入)二进制传输ISO/OSI七层参考模型七层参考模型n n通信实体的对等层之间不允许直接通信。n n各层之间是严格单向依赖。n n上层使用下层提供的服务 Service user;n n下层向上层提供服务 Service provider。对等通信示例对等通信示例“你好你好”“Hello”传真传真中国中国教师教师翻译翻译秘书秘书“Hallo”“Hello”传真传真德国德国教师教师翻译翻译秘书秘书对交谈内容的共识对交谈内容的共识用英语对话用英语对话使用传真通信使用传真通信P3P2P1物理通信线路物理通信线路对等层通信的实
15、质对等层通信的实质n对等层实体之间虚拟通信。对等层实体之间虚拟通信。n下层向上层提供服务,实际通信在最底层下层向上层提供服务,实际通信在最底层完成。完成。OSI各层所使用的协议各层所使用的协议n n应用层应用层应用层应用层:远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3等。n传输层传输层:传输控制协议TCP、用户数据报协议UDP。TCP:面向连接的可靠的传输协议。UDP:是无连接的,不可靠的传输协议。n网络层:网络层:网际协议IP、Internet互联网控制报文协议ICMP、Internet组管理协议IGMP。数
16、据封装数据封装n一台计算机要发送数据到另一台计算机,一台计算机要发送数据到另一台计算机,数据首先必须打包,打包的过程称为数据首先必须打包,打包的过程称为封装封装。n封装就是在数据前面加上特定的协议头部。封装就是在数据前面加上特定的协议头部。数据数据数据数据协议头协议头数据封装数据封装nOSI参考模型中,对等层协议之间交换的信息单元统称为参考模型中,对等层协议之间交换的信息单元统称为协议数据单元协议数据单元(PDU,Protocol Data Unit)。nOSI参考模型中每一层都要依靠下一层提供的服务。参考模型中每一层都要依靠下一层提供的服务。n为了提供服务,下层把上层的为了提供服务,下层把上
17、层的PDU作为本层的数据封装,作为本层的数据封装,然后加入本层的头部(和尾部)。头部中含有完成数据传然后加入本层的头部(和尾部)。头部中含有完成数据传输所需的控制信息。输所需的控制信息。n这样,数据自上而下递交的过程实际上就是不断封装的过这样,数据自上而下递交的过程实际上就是不断封装的过程。到达目的地后自下而上递交的过程就是不断拆封的过程。到达目的地后自下而上递交的过程就是不断拆封的过程。由此可知,在物理线路上传输的数据,其外面实际上程。由此可知,在物理线路上传输的数据,其外面实际上被包封了多层被包封了多层“信封信封”。n但是,某一层只能识别由对等层封装的但是,某一层只能识别由对等层封装的“信
18、封信封”,而对于,而对于被封装在被封装在“信封信封”内部的数据仅仅是拆封后将其提交给上内部的数据仅仅是拆封后将其提交给上层,本层不作任何处理。层,本层不作任何处理。TCP/IP模型nTCP/IP起源于美国国防部高级研究规划署起源于美国国防部高级研究规划署(DARPA)的一项研究计划的一项研究计划实现若干台主实现若干台主机的相互通信。机的相互通信。n现在现在TCP/IP已成为已成为Internet上通信的工业标上通信的工业标准。准。nTCP/IP模型包括模型包括4个层次:个层次:n应用层应用层n传输层传输层n网络层网络层n网络接口网络接口TCP/IP与OSI参考模型的对应关系应用层应用层表示层表
19、示层会话层会话层传输层传输层物理层物理层数据链路层数据链路层网络层网络层7 76 65 54 43 32 21 1OSI参考模型参考模型应用层应用层传输层传输层网络接口网络接口网络层网络层TCP/IP模型模型端口端口n按照OSI七层模型的描述,传输层提供进程(应用程序)通信的能力。为 了标识通信实体中进行通信的进程(应用程序),TCP/IP协议提出了协议端口(protocol port,简称端口)的概念。n端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通
20、过该端口输出。n端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。n端口使用一个16位的数字来表示,它的范围是065535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。套接字(socket)的引入n为了能够方便的开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket(套接字)。socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。n随着Unix的应用推广,套接字在编写网络软件中得到了极大的
21、普及。后来,套接字又被引进了Windows等操作系统,成为开发网络应用程序的非常有效快捷的工具。n套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一区域的套接字交换数据(也有可能跨区域通信,但这只在执行了某种转换进程后才能实现)。Windows Sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。套接字模型套接字模型网络字节顺序网络字节顺序n n不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低位字节(低位先存),有的机器在起始地址存放高位字节(高位先存)
22、。基于Intel的CPU,即我们常用的PC机采用的是低位先存。为保证数据的正确性,在网络协议中需要指定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高位先存格式。n n所以在网络中不同主机进行通信时,要统一采用网络字节顺序。客户机服务器模式客户机服务器模式n在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(client/server),即客户向服务器提出请求,服务器接收到请求后,提供相应的服务。n客户机/服务器模式的建立基于以下两点模式的建立基于以下两点:首先首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源
23、的主机提供服务,资源较少的客户请求服务这一非对等作用。其次其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。客户机服务器模式客户机服务器模式n n客户机客户机客户机客户机/服务器模式在操作过程中采取的是主动请求的方式。服务器模式在操作过程中采取的是主动请求的方式。服务器模式在操作过程中采取的是主动请求的方式。服务器模式在操作过程中采取的是主动请求的方式。首先服务器方要先启动,并根据请求提供相应的服务:首先服务器方要先启动,并根据请求提供相应的服务
24、:首先服务器方要先启动,并根据请求提供相应的服务:首先服务器方要先启动,并根据请求提供相应的服务:打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求。客户请求。客户请求。客户请求。等待客户请求到达该端口。等待客户请求到达该端口。等待客户请求到达该端口。等待客户请求到达该端口。接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务接收到
25、重复服务请求,处理该请求并发送应答信号。接收到并发服务接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一个新的进程请求,要激活一个新的进程请求,要激活一个新的进程请求,要激活一个新的进程(或线程或线程或线程或线程)来处理这个客户请求。新进程来处理这个客户请求。新进程来处理这个客户请求。新进程来处理这个客户请求。新进程(或线程或线程或线程或线程)处理此客户请求,并不需要对其它请求作出应答。服务完成处理此客户请求,并不需要对其它请求作出应答。服务完成处理此客户请求,并不需要对其它请求作出应答。服务完成处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户
26、的通信链路,并终止。后,关闭此新进程与客户的通信链路,并终止。后,关闭此新进程与客户的通信链路,并终止。后,关闭此新进程与客户的通信链路,并终止。返回第二步,等待另一客户请求。返回第二步,等待另一客户请求。返回第二步,等待另一客户请求。返回第二步,等待另一客户请求。关闭服务器。关闭服务器。关闭服务器。关闭服务器。客户方:客户方:客户方:客户方:打开一个通信通道,并连接到服务器所在主机的特定端口。打开一个通信通道,并连接到服务器所在主机的特定端口。打开一个通信通道,并连接到服务器所在主机的特定端口。打开一个通信通道,并连接到服务器所在主机的特定端口。向服务器发服务请求报文,等待并接收应答;继续提
27、出请求。向服务器发服务请求报文,等待并接收应答;继续提出请求。向服务器发服务请求报文,等待并接收应答;继续提出请求。向服务器发服务请求报文,等待并接收应答;继续提出请求。请求结束后关闭通信通道并终止。请求结束后关闭通信通道并终止。请求结束后关闭通信通道并终止。请求结束后关闭通信通道并终止。1.2 Windows环境下的应用程序环境下的应用程序n n1.2.1 应用程序的形态n n1.2.2 应用程序的运行环境n n1.2.3 应用程序的开发环境VC+1.2.1 应用程序的形态应用程序的形态n n早期以早期以.com,.exe保存保存n nPEPE(Portable executablePort
28、able executable)格式是微软公司针对)格式是微软公司针对Windows NT,Windows 95Windows NT,Windows 95和和Win32sWin32s系统设计的系统设计的WindowsWindows下下可执行可执行的二进制文件格式的二进制文件格式。如何实现可执行文件在内存中运行?如何实现可执行文件在内存中运行?n n要解决两问题:字节顺序、内存地址映射要解决两问题:字节顺序、内存地址映射n n字节顺序字节顺序字节顺序字节顺序:分:分little endian,big endianlittle endian,big endian 两种。两种。n n例如:从内存地址
29、例如:从内存地址0 x00000 x0000开始存放开始存放n n 0 x0000 0 x120 x0000 0 x12n n 0 x0001 0 x34 0 x0001 0 x34n n 0 x0002 0 xab 0 x0002 0 xabn n若根据若根据big endianbig endian,则读出的是,则读出的是0 x1234ab0 x1234ab。例如。例如MotorolaMotorola系列的系列的CPUCPU、.bmp,.gif.bmp,.gifn n若根据若根据little endia,little endia,则读出的是则读出的是0 xab34120 xab3412。例如
30、。例如Intel86Intel86系列的系列的CPUCPU、.jpeg.jpeg如何实现可执行文件在内存中运行?如何实现可执行文件在内存中运行?n n内存地址映射:涉及内存地址映射:涉及文件地址、虚拟地址、相对虚拟地址文件地址、虚拟地址、相对虚拟地址3 3个概念。个概念。n n文件地址文件地址文件地址文件地址:用十六进制编辑器看到的地址。:用十六进制编辑器看到的地址。n n虚拟地址虚拟地址虚拟地址虚拟地址:程序中使用的地址。:程序中使用的地址。n n 段:偏移量段:偏移量n n 对对3232位系统,偏移量位系统,偏移量2 23232 4G4Gn n 这个这个4G4G空间实际是程序与操作系统共享
31、。空间实际是程序与操作系统共享。n n 当当PEPE被载入内存,称为被载入内存,称为“模块模块”。则从该模块。则从该模块句柄地址开始映射。句柄地址开始映射。n n相对虚拟地址相对虚拟地址相对虚拟地址相对虚拟地址:指相对于:指相对于PEPE载入点的内存偏移。载入点的内存偏移。在内存中装载在内存中装载PE可执行文件的主要步骤?可执行文件的主要步骤?n n1.1.PEPE装载器首先检查装载器首先检查DOS MZ headDOS MZ head里的里的PEPE偏移量。偏移量。n n2.PE2.PE装载器检查装载器检查PE headPE head的有效性。的有效性。n n3.3.遍历遍历PE headP
32、E head后面的段表,读取各个段的信息,采用文件后面的段表,读取各个段的信息,采用文件映射的方法将段映射到映射的方法将段映射到4G4G字节的空间字节的空间n nPEPE装载器在内核中创建进程对象,如果有多线程则创建主装载器在内核中创建进程对象,如果有多线程则创建主线程对象以及其它内容。线程对象以及其它内容。n nPEPE装载器搜索引入表,装载动态链接库。装载器搜索引入表,装载动态链接库。n nPEPE装载器指向内存中装载器指向内存中PEPE文件首部地址处的代码,应用程文件首部地址处的代码,应用程序准备执行。序准备执行。应用程序如何变成一种可运行状态?应用程序如何变成一种可运行状态?n n典型
33、的软件安装步骤典型的软件安装步骤典型的软件安装步骤典型的软件安装步骤:n n1.1.拷贝软件本身;拷贝软件本身;n n2.2.拷贝必要的动态链接库;拷贝必要的动态链接库;n n3.3.将用户设置、选项、将用户设置、选项、DLLDLL系统注册信息写入注册表;系统注册信息写入注册表;n n4.4.建立桌面快捷方式;建立桌面快捷方式;n n5.5.其它选项,如删除临时文件、解密信息等。其它选项,如删除临时文件、解密信息等。n n一般,可用一般,可用Windows InstallerWindows Installer构建安装软件,如构建安装软件,如setup.exesetup.exe1.2.2 应用程
34、序的运行环境应用程序的运行环境n n 应用程序进入系统运行过程应用程序进入系统运行过程应用程序进入系统运行过程应用程序进入系统运行过程n n要执行应用程序,操作系统内核要做两个方面的工作:要执行应用程序,操作系统内核要做两个方面的工作:进程管理、系进程管理、系统调用统调用n n如何应对多任务?如何应对多任务?应用程序的运行环境应用程序的运行环境n n进程管理进程管理进程管理进程管理:(虚线框中)(虚线框中)涉及涉及CPUCPU、内存、外存、内存、外存3 3个资源。个资源。管理进程的就绪、运行、阻塞管理进程的就绪、运行、阻塞3 3个状态。个状态。n n系统调用系统调用系统调用系统调用:(由内核执
35、行)当各个应用程序需要系统资源:(由内核执行)当各个应用程序需要系统资源时,即与阻塞态有关时出现的。时,即与阻塞态有关时出现的。n n二者对计算机系统的稳定与维护非常重要,故操作系统划二者对计算机系统的稳定与维护非常重要,故操作系统划分为分为用户态用户态、核心态核心态。n n一个应用程序的运行是用户态进程与核心态内核交替在一个应用程序的运行是用户态进程与核心态内核交替在CPUCPU运行。(图运行。(图1.71.7)用户态组件用户态组件n n系统支持进程:例如服务管理器、WIndows登陆、本地安全验证服务、会话管理器。n n服务进程:例如sevices.exe、spool32.exe、svch
36、ost.exe等。n n环境子系统:用于向应用程序提供操作系统功能调用接口。包括Win32、POSIX、OS/2 1.2。n n五种类型应用程序:Win32、Windows3.1、MS-DOS、POSIX、OS/2。如任务管理器。核心态组件核心态组件n n包含了最低级的操作系统功能:例如线程调度、中断、异包含了最低级的操作系统功能:例如线程调度、中断、异常调度、多处理器同步等。常调度、多处理器同步等。n n提供了提供了执行体执行体用来实现高级结构的一组例程和基本对象。用来实现高级结构的一组例程和基本对象。执行体执行体包含基本操作系统服务,如对象管理、安全控制、包含基本操作系统服务,如对象管理、
37、安全控制、虚拟内存管理、进程和线程管理、本地过程调用、虚拟内存管理、进程和线程管理、本地过程调用、I/OI/O进进程以及进程间通信。程以及进程间通信。n nI/OI/O管理程序。管理程序。n n图形引擎。即图形函数图形引擎。即图形函数n n硬件抽象层。将其它程序与硬件区分开。硬件抽象层。将其它程序与硬件区分开。1.2.3 应用程序的开发环境应用程序的开发环境VC+n n应用程序的生成过程应用程序的生成过程VC+概念概念n nVC+VC+:就是遵循:就是遵循C/C+C/C+语法规则,经过多层嵌套功能调语法规则,经过多层嵌套功能调用(每层调用就完成一次功能与数据封装)的组合扩展,用(每层调用就完成
38、一次功能与数据封装)的组合扩展,实现应用程序功能。实现应用程序功能。n n例如:例如:n n系统调用系统调用就是对一序列内核操作的数据对象与功能封装,就是对一序列内核操作的数据对象与功能封装,n n库函数调用库函数调用又是对系统调用和其它操作的数据抽象与功能又是对系统调用和其它操作的数据抽象与功能封装。封装。n nMFCMFC就是采用就是采用SDKSDK方法封装方法封装Win32Win32应用的大部分关联函数,应用的大部分关联函数,提供提供WindowsWindows窗口图形接口模板。窗口图形接口模板。n nMSDNMSDN(Microsoft developer networkMicroso
39、ft developer network)提供了大量的编程信)提供了大量的编程信息息编程需要考虑的几个问题编程需要考虑的几个问题n n影响性能因素:功能调用的层次。层次越低,开销越小,但复杂性越高。n n效率:支持静态与动态链接库两种软件复用技术,提高效率。其中,动态链接库节约内存空间资源。同步与异步同步与异步I/On n系统调用中影响最大的是系统调用中影响最大的是I/OI/O操作操作。操作系统提供。操作系统提供同步同步与与异步异步I/OI/O操作。在同步操作。在同步I/OI/O时,应用程序处于阻塞状态,在时,应用程序处于阻塞状态,在异步异步I/OI/O时,处于非阻塞状态,可提高效率。时,处于
40、非阻塞状态,可提高效率。(如图(如图1.131.13)n n为避免异步为避免异步I/OI/O操作完成时刻的不确定性以及同步操作完成时刻的不确定性以及同步I/OI/O的阻的阻塞问题,操作系统在基于同步塞问题,操作系统在基于同步I/OI/O基础上提出了两种应用基础上提出了两种应用程序的编程机制程序的编程机制进程进程与与线程线程。n n如果如果I/OI/O阻塞和没有阻塞的任务涉及较大程序代码,则应阻塞和没有阻塞的任务涉及较大程序代码,则应创建新的进程,否则只需在进程中创建新的线程。创建新的进程,否则只需在进程中创建新的线程。1.3 Windows环境下的网络应用程序环境下的网络应用程序n n1.3.
41、1 网络应用程序的系统支持n n1.3.2 网络应用程序运行环境的问题n n1.3.3 网络应用程序的应用模型1.3.1 网络应用程序的系统支持网络应用程序的系统支持Windows NT网络体系结构网卡网卡:负责实现链路层:负责实现链路层MACMAC子层的功能;子层的功能;网卡驱动程序网卡驱动程序:负责实:负责实现数据链路层的现数据链路层的LLCLLC子层、网络层、运输子层、网络层、运输层的功能。层的功能。NDISNDIS:底层物理设备的:底层物理设备的网络编程接口。网络编程接口。TDITDI:为上层数据与:为上层数据与NDISNDIS库函数调用提供库函数调用提供一个公用接口。一个公用接口。3
42、 3个高级网络编程接口个高级网络编程接口:NetBiosNetBios(用户级)(用户级)SocketsSockets(应用级)(应用级)WinpcapWinpcap(直接)(直接)网络应用程序的系统支持网络应用程序的系统支持n nNDIS(网络驱动程序接口规范):n n1)基于X86平台,提供统一调用实现驱动程序一级的开发。n n2)提供基于物理设备的网络编程与开发,应用于网络安全以及网络协议相关部分的开发。n nTDI(传输驱动程序接口):定义连接与非连接的协议低级接口,为所有各种驱动程序提供一个公用接口。(相当于中级驱动)3种编程接口:种编程接口:NetBios、Sockets、直接网络
43、编程直接网络编程n nNetBios(network basic input/output system)n n用户级编程接口,对应会话层与运输层。库函数嵌套层次高,提供了用户模式的DLL。1985年,IBM创建了NetBios扩展接口。n nSocketsn n应用级编程接口,对应运输层。如WinSock是TCP/IP的编程接口。n n直接网络编程直接网络编程n n可对运输层以下的网络层、链路层网络协议直接操作。如Winpcap针对网络数据包捕获的编程接口。1.3.2 网络应用程序运行环境的问题网络应用程序运行环境的问题n n并发环境n n异构环境n n网络I/O访问机制与效率n n可靠性与
44、服务机制并发环境并发环境n n并发并发:或者是多任务在多处理器上、或者是任务多分支时间共享。n n对应用程序而言,进入的网络请求可以看作是并发现象。n n一般采用多进程、多线程编程。n n在多线程与多进程应用中,系统调用与函数必须是可重入的。并发环境并发环境可重入函数可重入函数:可由多于一个任务并发使用,而不必担心数据:可由多于一个任务并发使用,而不必担心数据错误。一般或者使用局部变量或者在使用全局变量时保护错误。一般或者使用局部变量或者在使用全局变量时保护数据。相反,不可重入函数不能由超过一个任务共享。数据。相反,不可重入函数不能由超过一个任务共享。n n例:例:/code/coden nS
45、taticStatic int tmpint tmp Void swap1(int*x,int*y)/Void swap1(int*x,int*y)/不可重入函数不可重入函数 tmp=*x;*x=*;*y=tmp;tmp=*x;*x=*;*y=tmp;n nVoid swap2(int*x,int*y)/Void swap2(int*x,int*y)/可重入函数可重入函数 int tmpint tmp;tmp=*x;*x=*y;*y=tmp;tmp=*x;*x=*y;*y=tmp;原因:原因:原因:原因:操作系统会在操作系统会在swap1swap1还没有执行完的情况下,切换到还没有执行完的情况
46、下,切换到另一个线程中,而且,可能再次调用另一个线程中,而且,可能再次调用swap1swap1,导致出错。,导致出错。异构环境异构环境n n异构性异构性异构性异构性:表现在字节顺序、字的长度、字节定界:表现在字节顺序、字的长度、字节定界3 3个方面。个方面。n n1 1)字节顺序)字节顺序)字节顺序)字节顺序:例如:例如HP UNIXHP UNIX等采用等采用big endian,big endian,而而DOS,WINDOWSDOS,WINDOWS采用采用little endianlittle endian。TCP/IPTCP/IP采用采用big endianbig endian。n n2
47、2)字的长度)字的长度)字的长度)字的长度:例如:例如3232位与位与6464位操作系统中,位操作系统中,long intlong int长度长度不一样。而且进程空间大小不一样。不一样。而且进程空间大小不一样。n n3 3)字节定界)字节定界)字节定界)字节定界:不同平台结构体和共同体打包的方式不同。:不同平台结构体和共同体打包的方式不同。例如很多系统中结构体例如很多系统中结构体 struct unsigned char a;int bstruct unsigned char a;int b 长度是长度是8 8(按(按intint定界),而不是定界),而不是5 5(按字节定界)。(按字节定界)
48、。n n网络协议中一般采用网络协议中一般采用4 4字节定界。字节定界。网络网络I/O访问机制与效率访问机制与效率n n网络网络I/OI/O需要考虑需要考虑寻址方式、功能调用方式、数据传递机寻址方式、功能调用方式、数据传递机制的选择制的选择3 3个因素。个因素。n n1 1)寻址方式)寻址方式)寻址方式)寻址方式包括:包括:n n 底层网络寻址(网络驱动程序)底层网络寻址(网络驱动程序)n n 互联网虚拟网络寻址(互联网虚拟网络寻址(IPIP由系统配置)由系统配置)n n 进程寻址(网络应用代码)进程寻址(网络应用代码)n n2 2)功能调用方式)功能调用方式)功能调用方式)功能调用方式包括:包
49、括:n n 同步(阻塞,用多进程与多线程解决)同步(阻塞,用多进程与多线程解决)n n 异步(非阻塞)异步(非阻塞)n n3 3)数据传递机制)数据传递机制)数据传递机制)数据传递机制包括:包括:n n 缓冲与非缓冲缓冲与非缓冲n n 有状态与无状态(有状态通信减少通信)有状态与无状态(有状态通信减少通信)n n 应用程序之间的数据流分配和数据编码格式。应用程序之间的数据流分配和数据编码格式。可靠性与服务机制可靠性与服务机制n n包括2种可靠机制:n n1)请求确认应答确认 发送给接收发送请求接收内核给发送内核返回确认接收给发送应答发送内核给接收内核返回确认。(A-B-B-A)n n2)请求应答确认 发送给接收发送请求接收给发送应答发送内核给接收内核确认。(A-B-A)n n面向连接与无连接服务性能比较(P20表1.1)1.3.3 网络应用程序的应用模型网络应用程序的应用模型n n根据网络设计程序的发展,网络编程可划分为联机多用户应用、对等网络应根据网络设计程序的发展,网络编程可划分为联机多用户应用、对等网络应用、用、Client/ServerClient/Server网络应用、网络应用、RPCRPC远程调用、远程调用、Browser/ServerBrowser/Server网络应用、分布式网络应用、分布式网络应用网络应用6 6个应用模型。个应用模型。n n1 1)联机多用户应用
限制150内