收藏 分享(赏)

windows网络编程复习重点.docx

上传人:cjc2202537 文档编号:176160 上传时间:2018-03-23 格式:DOCX 页数:49 大小:82.67KB
下载 相关 举报
windows网络编程复习重点.docx_第1页
第1页 / 共49页
windows网络编程复习重点.docx_第2页
第2页 / 共49页
windows网络编程复习重点.docx_第3页
第3页 / 共49页
windows网络编程复习重点.docx_第4页
第4页 / 共49页
windows网络编程复习重点.docx_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、目录第一章 网络应用程序设计基础 .3分布式网络应用程序的特点及分类 .3面向应用的网络编程方法(3 点) .3基于 TCP/IP 的网络编程方法 .3面向原始帧的网络编程方法(4 种) .4第二章 网络程序通信模型 .4常见的网络编程通信模型 .4客户端、服务器的工作过程 .4P2P 模型的特点及其网络的拓扑结构 .5第三章 网络数据的内容与形态 .6网络字节顺序与主机字节顺序 .6网络字节顺序与主机字节顺序转换的函数 .6网络数据传输形态 .6字符编码 .7数据校验 .7第四章 软件协议接口 .7协议软件接口的位置与功能 .7WinSock DLL 的初始化与释放 .8WinSock 的地

2、址描述 .9套接字选项和 IO 控制命令 .9处理 WinSock 的错误 .9第五章 流式套按字编程 .9流式套接字通信的特点 .9流式套接字的适用场景 .10基本函数 .10流式套接字编程的一般过程 .12正确处理流数据的接收 .13接收定长和变长数据 .13流式套接字的编程实例 .14第六章 数据报套接字编程 .21数据报套接字数据通信的特点 .21数据报套接字的适用场景 .21数据报套接字的编程的一般过程 .21数据报套接字的常用函数 .22数据报套接字的编程实例 .23第七章原始套接字编程 .27原始套接字的特点 .27原始套接字的适用场景 .28原始套按字的编程的一般过程 .28原

3、始套接字的编程实例 .28第八章 网络通信中的 IO 操作 .38套接字的常见 IO 模式 .38同步、异步、阻塞、非阻塞的概念及区别 .38阻塞 IO 模型的工作原理与特点 .38非阻塞 IO 模型的工作原理与特点 .38IO 复用模型的工作原理与特点(选择模型) .38异步 IO 复用模型的工作原理与特点( WSAAsynsSelect) .39完成端口模型的工作原理与特点(异步) .39第九章 WinPcap 编程 .40Wpcap.dll 的工作流程 .40Wpcap.dll 的编程实例 .41Packet.dll 的工作流程 .45Packet.dll 编程实例 .46第一章 网络应

4、用程序设计基础分布式网络应用程序的特点及分类1、 特点:3 点A) 分布式网络应用程序将整个应用程序的处理分成几个部分,分别在不同的机器上运行,这里的“分布”包含两层含义:地理上的分布和数据处理的分布。B) 多台主机之间交互协作,共同完成一个任务。C) 就网络访问而言,分布式应用对用户来说是透明的,其目标在于提供一个环境,该环境隐藏了计算机和服务的地理位置,是使他们看上去像在本地一样。2、 分类:5 点A) 程序(远程协助,木马远程监控)B) 网络探测类用程序(端口扫描,操作系统探测,网络爬虫)C) 网络管理类应用程序(网络管理,上网监控,网络流量分析,入侵检测)D) 远程通信类应用程序(即时

5、通信,电子邮件客户端,联机游戏)E) 信息发布类应用程序(WWW 服务器,FTP 服务器,Whois 服务器)面向应用的网络编程方法(3 点)1、 WinInet 编程面向 Internet 常用协议中消息流的访问(HTTP 协议,FTP 协议, Gopher 文件传输协议)2、 基于 WWW 应用的网络编程用 html 表达信息,网站形式3、 面向 SOA 的 Web Service 网络编程面向服务的体系架构(SOA)可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。SOA 下服务之间通过简单,精确定义的接口进行通信。不涉及底层编程接口和通信模型。Web Servi

6、ce 是一种常见的 SOA 实现方式,是松散耦合可复用的软件模块。基于 TCP/IP 的网络编程方法基于 TCP/IP 协议栈是最基本的网络编程方式。主要是使用各种编程语言,可用操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。常用套接字类型包括 3 类:A) 流式套接字(用于在传输层提供面向连接、可靠的数据传输服务)B) 数据报套接字(用于在传输层提供无连接的数据传输服务)C) 原始套接字(用于网络层上的数据包访问)直接利用网络协议栈提供的服务来实现网络应用,所以层次比较低,编程者自由度较大。要求程序设计者深入了解 TCP/IP,掌握套接字编程接口的主要功能和使用方法。面向原始帧的

7、网络编程方法(4 种)基于网络上直接发送和接受数据帧是最原始的数据访问方式,能够直接控制网卡的工作模式,灵活地访问帧的各个字段。1、 直接网卡编程技术a) 多使用汇编语言,通过操纵网卡寄存器实现对网卡微处理器的控制,完成数据帧的发生于接受。b) 直接控制网卡工作,速度很快,通用性差。2、 基于 Packet Driver 的网络编程方法a) Packet Driver 作为一个网络编程标准,适用于所有网卡。b) 在上层应用软件和底层的网卡驱动程序之间提供一个接口。3、 基于 NDIS 的网络编程a) 网络驱动程序接口规范(NDIS)是一个较为成熟的驱动接口标准,它包含局域网网卡驱动程序标准,广

8、域网网卡驱动程序标准,存在于协议和网络之间的中间驱动程序标准。b) NDIS 为网络驱动程序抽象了网络硬件,指定了分层网络驱动间的标准接口,因此它为上层驱动(如网络传输)抽象了管理硬件的下层驱动。c) NDIS 维护了网络驱动和的状态信息和参数,包括函数的指针,句柄等。4、 WinPcap 编程a) WinPcap 提供了一套标准的网络数据包捕获接口。b) WinPcap 包括一个内核级数据包过滤器,一个底层的动态链接库(Packet.dll),一个高层的依赖于系统的库(wpcap.dll).c) WnPcap 可以独立于 tcp/ip 协议栈进行原始包数据的发送与接收。d) 提供了直接在网卡

9、上:捕获原始数据包、核心层数据包过滤,通过网卡直接发送原始数据包和网络流量统计等功能。第二章 网络程序通信模型常见的网络编程通信模型1、 客户/服务器模型2、 浏览器/服务器模型3、 P2P 模型客户端、服务器的工作过程服务器处于被动服务地位,首先服务器要先启动,并根据客户请求提供相应的服务:1、 打开一个通信通道,告知服务器进程所在主机将要在某一公认的端口(通常是RPC 文档中分配的知名端口或双方协商的端口)上接收客户请求。2、 等待客户的请求到达该端口。3、 服务器接收到服务请求,处理该请求并发送应答。4、 返回第二步,等待并处理另一个客户的请求。5、 当特定条件满足时关闭服务器。客户采取

10、主动请求的方式:1、 打开一个通信通道,告知客户进程所在主机将要向某一公认的端口()上请求服务。2、 向服务器发送请求报文,等待并接收应答,然后继续提出请求。3、 请求结束后,关闭通信通道并终止进程。注:在步骤 1 中使用 TCP 的客户需要首先连接到服务器所在主机的特定监听端口后请求服务,而使用 UDP 的客户只需要在指定服务器地址后直接发送服务请求。P2P 模型的特点及其网络的拓扑结构特点:7 点1、 非中心化P2P 是分布式系统,资源与服务分散在所有节点上,信息传输和服务实现直接在节点之间进行,无需中间环节和服务器介入。2、 可扩展性用户可以随时加入该网络,需求增加,系统资源和服务能力也

11、同步扩展。3、 健壮性具有耐攻击,高容错的优点。4、 自治性节点来着不同的所有者,不存在全局的控制者,节点可以随时加入或退出 P2P 系统。5、 高性价比P2P 可以有效利用互联网中散布的大量普通节点,将计算任务或存储资料发布到所有节点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。6、 隐私保护信息分散在各个节点上无需经过某个集中环节。7、 负载均衡P2P 网络环境下每个节点既是服务器又是用户,同时因为资源分布在多个节点上,更好地实现了整个网络的负载均衡。拓扑结构:4 种拓扑结构是指分布式系统中各个计算单元之间的物理或者逻辑的相互关系。1、 中心化拓扑a) 资源的发现依

12、赖中心化的目录结构b) 优点:维护简单,资源发现效率高c) 缺点:与传统 C/S 结构类似,容易出现单点故障、访问的“热点”现象和版权纠纷。2、 全分布式非结构化拓扑a) 在重叠网络上采用随机图的组织方式,节点的度数服从 Power-law 规律(幂律法则)能够较快发现目标节点,面对网络的动态变化,体现了较好的容错能力,因此具有较好的可用性。3、 全分布式结构化拓扑a) 主要采用分布式散列表(DHT)技术来组织网络中的节点b) DHT 可以精准发现节点。4、 半分布式拓扑a) 吸取了中心化拓扑和全分布式非结构化拓扑的优点,选择性能较高(处理,存储,带宽等)的节点作为超级节点,在各个超级节点上存

13、储了系统中其它部分节点的信息,发现算法仅在超级节点之间转发,超级节点再将查询请求转发给适当的叶子节点。b) 也是一个层次式结构。第三章 网络数据的内容与形态网络字节顺序与主机字节顺序主机字节顺序:不同机器以系统相关的方式定义他们的字节顺序。这些字节顺序是指整数在内存中保存的顺序,被称为主机字节顺序。 (x86 小端顺序,某些嵌入式平台则是大端顺序) 。网络字节顺序:用于网络中发送和接收的数据都采用大端顺序。注:A) 由于 IP、UDP、TCP 都把用户数据看作没有结构的字节集合,所以不关心用户数据中整数是否为网络字节顺序。B) 因此用户数据的字节顺序必须由开发者达成一致,在发送前使用 hton

14、*()函数将主机字节顺序的数据转换为网络字节顺序,并在接收后使用 ntoh*()函数将网络字节顺序的数据转换回主机字节顺序。网络字节顺序与主机字节顺序转换的函数hton*()函数将主机字节顺序的数据转换为网络字节顺序ntoh*()函数将网络字节顺序的数据转换回主机字节顺序网络数据传输形态一般情况下,网络通信两端进行数据交互的数据格式有文本串和二进制串两种形态。文本串:A) HTTP 协议、MSN 通信协议,这些协议通常以连续的 ascii 字母作为命令组织数据。文本由符号或字符序列组成。B) 消息传递的一般做法:i. 定义消息命令ii. 定义消息标识iii. 选择文本表示方式iv. 选择编码方

15、式二进制格式:A) 消息采用固定大小的数据区域存储消息,是表示信息的常用方式,代表:IP、TCP,这些协议通常以固定格式的协议首部存储协议控制命令。B) 需要注意以下问题i. 不同实现以不同的格式存储二进制数据ii. 不用实现在存储相同数据类型时可能也不同iii. 不同实现为协议打包的方式也不同解决方法:将二进制数值的数据作为文本串的形式传递,或者显式定义二进制结构,包括其成员的位数、位置、字节顺序,并尽量做到显式对齐。字符编码对字母和符号进行编码的二进制代码称为字符编码。字符编码的发展阶段:1、 字符编码的产生:ASCII2、 字符编码的本地化:ANSI(GB2312、BIG5、JIS )3

16、、 字符编码的国际化:Unicode常用的文本化传输编码标准1、 Base642、 UTF-73、 QP数据校验Ipv4、ICMPv4 、 IGMPv4、ICMPv6、UDP、TCP 都采用首先把校验和字段置为 0,然后对缓冲区中每个 16 位进行二进制反码求和,然后把计算得到的结果存储在校验和字段中。第四章 软件协议接口协议软件接口的位置与功能位置:协议软件接口承担应用程序与操作系统协议实现之间的桥梁作用,他封装了协议实现的基本功能,开放系统调用接口以简化操作,使得应用程序可以用系统调用的方式方便地使用协议实现提供的数据传输功能。功能:13 点 分配用于通信的本地资源 指定本地与远程通信端点

17、 (客户端)启动连接 (服务端)等待连接到来 发送或接收数据 判断数据何时到达 产生紧急数据 处理到来的紧急数据 从容终止连接 处理来自远程端点的连接终止 异常终止通信 处理错误条件或连接异常终止 连接结束后释放本地资源目前常用的协议软件接口有哪些?Berkeley Socket、Transport Layer Interface、Windows SocketWinSock DLL 的初始化与释放初始化:调用 WSAStartup()WSADATA wsaData;int iResult;iResult = WSAStartup(MAKEWORD(2,2), if (iResult != 0)

18、printf(“WSAStartup failed: %dn“, iResult);return -1;释放:调用 WSACleanup()int iResult;iResult = WSACleanup();if (iResult != 0)printf(“WSACleanup failed: %dn“, iResult);return -1;WinSock 的地址描述1、 地址种类:物理地址、IP 地址、端口号2、 端口地址:A) AF_INET IPv4 地址族B) AF_INET6 Ipv6 地址族C) AF_IPX IPX/SPX 地址族D) AF_NETBIOS NetBIOS 地

19、址族3、 地址结构:地址族,端点地址4、 地址的转换:A) inter_addr()能够将 IPv4 字符形式的点分十进制地址转换为无符号 4 字节整数形式的地址。B) inet_ntoa()将 IPv4 的因特网地址转换为因特网标准的点分十进制地址形式。套接字选项和 IO 控制命令1、 套接字选项:获取和设置套接字的函数分别为 int getsockopt()/int setsockopt()2、 I/O 控制命令(ioctl):WinSock1.1:int ioctlsocket()(控制套接字的 I/O 模式) ,WinSock2:int WSAIoctl()(提供了对套接字的控制能力)

20、 。处理 WinSock 的错误1、 SOCKET_ERROR(-1)2、 INVALID_SOCKET(0xffff )3、 NULL第五章 流式套接字编程流式套接字通信的特点1、 TCP 协议的传输特点:A) 端到端通信B) 建立可靠连接C) 可靠交付D) 具有流控的传输E) 双工传输F) 流模式2、 流式套接字依托传输控制协议(TCP 协议)提供面向连接的,可靠的数据传输服务,该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。基于流的特点,使用流式套接字传输的数据形态是没有记录边界的有序数据流。3、 面向连接的特点决定了流式套接字的传输代价大,且只适合一对一的数据传输;可靠性的特

21、点意味着上层应用程序在设计开发时不需要过多地考虑传输过程中的丢失、乱序、重复的问题。流式套接字的适用场景1、 大数据量的数据传输应用。传输内容可以是任意大的数据,类型可以使字符串文本也可以是二进制文件。2、 可靠性要求高的传输引用。可靠性是传输过程中首先要满足的要求。基本函数socket()/bind()/connect()/listent()/accept()/send()/recv()socket():实现同步传输套接字的创建/*返回值为通信实例的句柄(套接字描述符) ,非负数表示成功, -1 表示失败*/SOCKET WSAAPI socket(int af, /确定套接字的地址族 AF

22、_XXX 不能与 PF_XXX 混淆int type, /指定套接字类型,流式套接字使用 SOCK_STREAM,数据报套接字使用SOCK_DGRAMint protocol /指定要使用的特定传输协议,指定 0,在 TCP/IP 中只有一种选择);bind(): 将一本地名字赋予一个未命名的套接字,实现将套接字与本地地址相关联/*成功返回 0,否则返回 -1*/int bind(SOCKET s; /调用 socket()返回的描述符const struct sockaddr *name, /地址参数,通常使用 sockaddr_in(用于 IPv4)或sokaddr_in6(v6)int namelen /地址结构大小);connect():客户通过调用该函数请求与服务器连接/*connect()函数的调用会触发操作系统完成一系列客户准备建立连接过程:1、 对于一个未绑定的套接字,请求操作系统分配尚未使用的本地端口号,分配本地 Internet地址,形成唯一的端点地址与套接字绑定。2、 向套接字注册 name 参数中声明的服务器地址。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报