第1章 网络编程基础_第1页
第1章 网络编程基础_第2页
第1章 网络编程基础_第3页
第1章 网络编程基础_第4页
第1章 网络编程基础_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、 网络编程与开发技术 l实验一 基于netbios的数据报通信程序设计 l实验二 基于tcp/ip的会话通信程序设计 l实验三 端口扫描程序设计 l实验四 网络流量统计 网络编程与开发技术 随着网络的日趋复杂和规模的日趋庞大随着网络的日趋复杂和规模的日趋庞大, ,网络编网络编 程技术程技术已成为已成为计算机网络技术计算机网络技术的重要分支之一。的重要分支之一。 只有通过只有通过网络编程网络编程,才能在更深的层次理解,才能在更深的层次理解网网 络通信协议络通信协议的工作原理,并在此基础上进行的工作原理,并在此基础上进行网络网络 应用程序应用程序的开发。的开发。 主要介绍主要介绍网络通信软件网络通

2、信软件设计的原理和方法、设计的原理和方法、 windowswindows环境下的各种环境下的各种网络编程接口网络编程接口和和网络通信网络通信 程序程序设计技术。设计技术。 授课内容授课内容 第第1章章 网络编程基础网络编程基础 第第2章章 基于基于netbios的网络编程的网络编程 第第3章章 基于基于tcpip协议的网络编程协议的网络编程 第第4章章 进程间通信进程间通信 第第5章章 多线程结构的网络编程多线程结构的网络编程 第第6章章 高级网络编程高级网络编程 第第7章章 底层网络编程底层网络编程 第一章第一章 网络网络编程基础编程基础 内内 容容 提提 要要 1 1、网络编程概述、网络编

3、程概述 2 2、iso/osiiso/osi模型模型 3 3、四种网络编程接口、四种网络编程接口 4 4、网络通信方式、网络通信方式 面向连接和无连接面向连接和无连接 阻塞与非阻塞阻塞与非阻塞 多播与广播多播与广播 1.1 1.1 网络编程概述网络编程概述 网络编程的含义: 利用网络应用编程接口编写网络通信程序, 实现网络应用进程间的信息交互功能。 apiapi(application programming interfaceapplication programming interface) :应用程序:应用程序 编程接口编程接口。它是能用来操作组件、应用程序或者操作系统的一。它是能用来操

4、作组件、应用程序或者操作系统的一 组函数。典型的情况下,组函数。典型的情况下,api api 由一个或多个提供某种特殊功能由一个或多个提供某种特殊功能 的的 dll dll 组成。组成。 apiapi的的主要目的主要目的是提供应用程序与开发人员访问一组例程的是提供应用程序与开发人员访问一组例程的 能力,而又无需访问源码,或理解内部工作机制的细节。能力,而又无需访问源码,或理解内部工作机制的细节。 提供提供apiapi所定义的功能的软件称作此所定义的功能的软件称作此apiapi的实现的实现。apiapi是一种是一种 接口接口,是一种,是一种抽象抽象。 一组一组apiapi经常是一套经常是一套软件

5、开发工具包软件开发工具包(sdk)(sdk)的一部分。的一部分。 常用的常用的 api api 是是 windows apiwindows api,它包括构成,它包括构成 windows windows 操作系操作系 统的各种统的各种 dlldll。每个。每个 windows windows 应用程序都直接或间接地与应用程序都直接或间接地与 windows api windows api 互动。互动。 windows apiwindows api即为即为microsoft 32microsoft 32位平台的应用程序编程接口位平台的应用程序编程接口。 所有在所有在win32win32平台上运行

6、的应用程序都可以调用这些函数。平台上运行的应用程序都可以调用这些函数。 标准windows api函数可以分为以下几类: 窗口管理 窗口通用控制 shell特性 图形设备接口 系统服务 国际特性 网络服务函数-允许网络上的不同计算机的应用程序之间进行 通讯。如windows套接字(socket)、netbios函数等。 windows apiwindows api 1.1 1.1 网络编程概述网络编程概述 应用进程间的通信分为两种: 1.同一系统上的进程间的通信,这是通常意义上 的进程间通信。(第4章 内存文件映射) 2.不同系统上的进程间的通信,必须通过网络编 程接口访问网络协议提供的服务来

7、实现。 网络编程接口与网络协议关系 u 进程通过网络编程接口访问网络协议所提供的服务。 u 不同的网络协议可能提供不同的服务访问接口。 u 同一网络编程接口可以访问多种网络协议。如 socket apl,支持对很多协议的访问,如tcp、udp、 rawip、数据链路层协议及unix域协议等。 网络编程涉及的内容 n 网络编程及相关开发技术涉及操作系统、网络协 议、网络编程模式和方法以及并发程序设计等方面 的知识。 n 本课程介绍windows环境下的各种网络编程接口 和网络通信程序设计与开发技术。 1.21.2 iso/osiiso/osi模型模型 isoiso:国际标准化组织(interna

8、tional standardization organization )。 osiosi:开放系统互连模型( open system interconnection reference model )是 国际标准化组织(isoiso)从一个很高的层次上对网络系统进行的描述。 物理媒体负责以一系列电子信号的形式,传出数据物理层 控制两个主机间的物理通信链路,同时还要负责对数据进行整形,以便 在物理媒体上传输。 数据链路层 在两个主机之间提供一套定址/寻址机制,同时负责数据包的路由选择。网络层 提供数据传输服务(可靠或不可靠)。传输层 控制两个主机间的通信链路(开放、操作和关闭)。会话层 完成数

9、据的格式化。表示层 为用户提供相应的界面,以便使用提供的连网功能。应用层 功能描述层次 相邻层之间的关系称为相邻层之间的关系称为接口接口。 不同网络实体间在相同层之间的关系就是不同网络实体间在相同层之间的关系就是网络通信协议网络通信协议。 1.3 1.3 网络编程接口网络编程接口 在在网络体系结构网络体系结构中,并非所有层都提供应用程序设计的中,并非所有层都提供应用程序设计的 编程接口编程接口。 在完整的计算机网络系统中,仅提供了在完整的计算机网络系统中,仅提供了基于网络操作系基于网络操作系 统之上的编程接口统之上的编程接口。例如。例如windowswindows的的winsockwinsoc

10、k ,netwarenetware的的 ipx/spxipx/spx及及netbiosnetbios等。通常通信程序设计都是基于这些接口等。通常通信程序设计都是基于这些接口。 应用程序与网络编程接口关系图应用程序与网络编程接口关系图 应用程序应用程序a a应用程序应用程序b b 网络编程接口网络编程接口,例如,例如windows socketswindows sockets 网络通信协议网络通信协议服务界面,例如服务界面,例如tcp/iptcp/ip 物理通信介质物理通信介质 操作系统操作系统,例如,例如windowswindows 四种网络编程接口四种网络编程接口 基于基于 netbios

11、netbios 的网络编程的网络编程 基于基于 winsock winsock 的网络编程的网络编程 底层网络编程底层网络编程 基于物理设备的网络编程基于物理设备的网络编程 1.3.1 1.3.1 基于基于netbiosnetbios的网络编程的网络编程 nnetbios(network basic input/output system) 网络基本输入输出系统, 1983年由sytek公司专为ibm 开发 ,为网络通信定义了一种编程接口。 nnetbeui( netbios extended user interface) netbios 扩展用户接口。1985年,ibm创制了netbios

12、 扩展用户接口,它同netbios 接口集成在一起,构成了一套 完整的协议。 netbiosnetbios的特点的特点 u netbios同时提供了“面向连接”的会话服务以及 “无连接” 的数据报服务。 u netbios编程接口对应于osi模型的会话层和传输层。 u netbios 是一种“非可路由”协议,假定在客户机和假定在客户机和 服务器之间存在一个路由器,那么这种协议在两部机器服务器之间存在一个路由器,那么这种协议在两部机器 上的应用便无法沟通。上的应用便无法沟通。不能跨网段,适用于广播式网络, 如局域网。 1.3.2 1.3.2 基于基于winsockwinsock的网络编程的网络编

13、程 winsockwinsock编程接口:编程接口: 是windows环境下实现tcp/ip网络编程的接口。 winsock规范定义了如何使用api与internet协议族,它 包含了一组针对windows的扩展库函数,使程序员能充 分利用windows消息驱动机制进行编程。 winsock支持流套接字(即会话套接字)和数据报 套接字。 1.3.3 1.3.3 底层网络编程底层网络编程 底层网络编程接口:底层网络编程接口: 提供在提供在链路层链路层或或网络层网络层的编程方法。的编程方法。底层网络编程底层网络编程与与 普通的网络编程不同,在程序中会涉及普通的网络编程不同,在程序中会涉及底层网络协

14、议底层网络协议及其及其 协议数据单元协议数据单元。 主要用途:主要用途: 底层网络编程可以在底层网络编程可以在较低的层次较低的层次上(链路层或网络层)上(链路层或网络层) 操作网络。可进行操作网络。可进行网络侦听、协议分析和检测网络侦听、协议分析和检测。在网络安。在网络安 全性分析和网络对抗中具有广泛的用途。全性分析和网络对抗中具有广泛的用途。 1.3.4 1.3.4 基于物理设备的网络编程基于物理设备的网络编程 基于物理设备的网络编程接口:基于物理设备的网络编程接口: 也称为也称为macmac层编程接口层编程接口,在这种编程接口上进行网络程序,在这种编程接口上进行网络程序 设计,需要对网卡的

15、设计,需要对网卡的网络接口控制器(网络接口控制器(nicnic)进行程序编程控进行程序编程控 制。由于这一接口没有提供现成的程序接口,因此,所有功制。由于这一接口没有提供现成的程序接口,因此,所有功 能的实现都必须自行设计。能的实现都必须自行设计。 主要用途:主要用途: 网络数据包截获、网络协议分析、流量统计分析等,或网络数据包截获、网络协议分析、流量统计分析等,或 设计自己的安全协议。设计自己的安全协议。 1.4 1.4 网络通信方式网络通信方式 面向连接的通信和无连接通信面向连接的通信和无连接通信 阻塞通信与非阻塞通信阻塞通信与非阻塞通信 广播通信与多播通信广播通信与多播通信 1.4.1

16、1.4.1 面向连接和无连接通信面向连接和无连接通信 通常情况下,一个协议提供两种通信服务:通常情况下,一个协议提供两种通信服务: 面向连接(会话)面向连接(会话)的服务的服务 无连接(数据报)无连接(数据报)的服务的服务 netbiosnetbios和和tcp/iptcp/ip协议协议均提供了这两种服务。均提供了这两种服务。 面向连接的服务面向连接的服务 特点:特点: 通信双方事先建立一条通信双方事先建立一条通信链路通信链路,这样既确定了通,这样既确定了通 信方之间存在路由,又保证了通信双方都是活动的、都可彼信方之间存在路由,又保证了通信双方都是活动的、都可彼 此响应,并且传送数据时是此响应

17、,并且传送数据时是按序按序传送的,从而保证数据通信传送的,从而保证数据通信 的的可靠性可靠性。 面向连接服务的三个阶段:面向连接服务的三个阶段: 连接建立、数据传输、连接释放。连接建立、数据传输、连接释放。 适用场合:适用场合: 面向连接服务比较适合于在一段时间内要向同一目的地面向连接服务比较适合于在一段时间内要向同一目的地 可靠发送许多报文的情况。可靠发送许多报文的情况。 缺点:缺点: 建立和维持连接、保证可靠性需要增加开销。建立和维持连接、保证可靠性需要增加开销。 通信双方不用建立可靠的通信链路,发送方不用确定接收通信双方不用建立可靠的通信链路,发送方不用确定接收 端是否正在收听,随时可以

18、发送数据。端是否正在收听,随时可以发送数据。 无连接服务的特点:无连接服务的特点: 速度快、使用灵活,既能实现速度快、使用灵活,既能实现点到点点到点又能实现又能实现多点多点和和广广 播播通信。对非重要的数据传输来说,数据报服务非常有用。通信。对非重要的数据传输来说,数据报服务非常有用。 适合于传送少量零星报文。适合于传送少量零星报文。 无连接服务的缺点:无连接服务的缺点: 不能保证数据可靠到达接收端,同样也不能保证数据的不能保证数据可靠到达接收端,同样也不能保证数据的 完整性,这些问题必须由应用程序根据需要自行解决。完整性,这些问题必须由应用程序根据需要自行解决。 无连接服务无连接服务 1.4

19、.2 1.4.2 阻塞与非阻塞通信阻塞与非阻塞通信 网络通信模式:网络通信模式: 阻塞和非阻塞两种模式。阻塞和非阻塞两种模式。 u 发送方:发送方: 在在阻塞模式阻塞模式下,如果低层协议没有可用空间来存放用户下,如果低层协议没有可用空间来存放用户 数据,则应用进程将数据,则应用进程将阻塞等待阻塞等待直到协议有可用的空间。直到协议有可用的空间。 在在非阻塞模式非阻塞模式下,调用将下,调用将直接返回直接返回而而不需等待不需等待。 u 接收方:接收方: 在在阻塞模式阻塞模式下,若没有到达的数据,则调用将一直下,若没有到达的数据,则调用将一直等待等待 直到有数据到达或出错;直到有数据到达或出错; 在在

20、非阻塞模式非阻塞模式下,将下,将直接返回直接返回而而不需等待不需等待。 面向连接服务的连接建立阶段:面向连接服务的连接建立阶段: 等待连接方等待连接方(server)(server):在在阻塞模式阻塞模式下,如果没有连接请求下,如果没有连接请求 到达,则阻塞直到有连接请求到达;在到达,则阻塞直到有连接请求到达;在非阻塞模式非阻塞模式下,如果没下,如果没 有连接请求到达,则直接返回。有连接请求到达,则直接返回。 发起连接方发起连接方(client):(client):不管是不管是阻塞阻塞还是还是非阻塞非阻塞模式,发起方模式,发起方 总是会使进程阻塞,阻塞间隔最少等于到达服务器的一次往返总是会使进

21、程阻塞,阻塞间隔最少等于到达服务器的一次往返 时间。时间。 通信模式对应用程序的设计方法的影响:通信模式对应用程序的设计方法的影响: 非阻塞模式:非阻塞模式:应用程序需通过应用程序需通过轮询轮询或异步事件的方式或异步事件的方式查看查看是是 否有数据到达或有连接请求到达。这种方式耗费较多的否有数据到达或有连接请求到达。这种方式耗费较多的cpucpu时间。时间。 阻塞模式:阻塞模式:进程或线程在执行进程或线程在执行i/oi/o操作时将被阻塞而不能执行操作时将被阻塞而不能执行 其他的工作,所以在其他的工作,所以在单进程或单线程单进程或单线程应用中一般不使用这种模式。应用中一般不使用这种模式。 在在多

22、线程应用多线程应用中比较适合采用中比较适合采用阻塞模式阻塞模式,一个线程被阻塞不影响,一个线程被阻塞不影响 其他线程的工作。其他线程的工作。 1.4.3 1.4.3 多播与广播通信多播与广播通信 广播通信:广播通信: 数据从一个站发出,局域网内的其他所有工作站都能收到它。适数据从一个站发出,局域网内的其他所有工作站都能收到它。适 用于无连接协议。用于无连接协议。 广播通信的过程:广播通信的过程: 一个工作站在一个工作站在lanlan上广播一条消息,上广播一条消息, lanlan内每台机器上的内每台机器上的网卡网卡都都 会收到这条消息,并把它上传到协议栈。然后,协议栈将这条消息在会收到这条消息,

23、并把它上传到协议栈。然后,协议栈将这条消息在 所有的网络应用中循环,看它们是否应该接收这条消息。一般情况下,所有的网络应用中循环,看它们是否应该接收这条消息。一般情况下, 路由器路由器不会传送广播包。不会传送广播包。 缺点:缺点: 使用广播消息的不利之处是每台机器都必须对该消息进行处理,使用广播消息的不利之处是每台机器都必须对该消息进行处理, 高广播通信流会使高广播通信流会使lanlan上的机器陷入困境,容易形成上的机器陷入困境,容易形成广播风暴广播风暴。 多播(组播)通信多播(组播)通信: 数据从一个工作站发出,这些数据将由一个或多个接收端数据从一个工作站发出,这些数据将由一个或多个接收端 进行接收。进行接收。 u 进程加入一个多播通信的方法与采用的底层协议有关。进程加入一个多播通信的方法与采用的底层协议有关。 u 在

温馨提示

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

评论

0/150

提交评论