资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1,2026/10/22,1,网络编程技术,主 讲 教 师,:,吕 建 勇,电 子 邮 箱,:,2,-32,主要内容,第一章,网络编程基础,第二章,基于NetBIOS的网络编程,第三章,基于TCPIP协议的网络编程,第四章,进程间通信,第五章,多线程结构的网络编程,第六章 高级网络编程,第七章 底层,网络编程,1,3,2,3,-32,第一章 网络编程基础,2,网络编程概述,ISO/OSI,模型,网络编程接口,网络通信方式,4,-32,4,1.1,网络编程概述,网络编程的含义:,利用,网络应用编程接口,编写网络通信程序,实现,网络应用进程间,的信息,交互,功能。,进程间的通信分为两种:,1.,同一系统上的进程间的通信,这是通常意义上的,进程间通信,。,2.,不同系统上的进程间的通信,必须通过,网络编程接口访问网络协议提供的服务,来实现。,网络编程接口与网络协议:,进程,通过,网络编程接口访问网络协议所提供的服务,。不同的网络协议可能提供不同的服务访问接口,同一网络编程接口可以访问多种网络协议。如,NETBOIS,、,Socket API,,支持对很多协议的访问,如,TCP,、,UDP,、,rawIP,、数据链路层协议及,Unix,域协议等,(,多对多,),。,网络编程及相关开发技术,涉及操作系统、网络协议、网络编程模式和方法以及并发程序设计,等方面的知识。本课程介绍在,Windows,环境下的各种网络编程接口和网络通信程序设计与开发技术。,报文段,端,-,端,所有传输遗留问题;复用;流量;可靠,应用程序,-,应用程序(源端口,-,目的端口,即,运输起点,和终点);流量控制(,运输快慢,)、可靠(包括无差错和按序,其中无差错主要指包丢失等链路层未解决的情况,即,运输可靠性,),传输层,(,运输层,),4,数据报,网络,(,点,-,点,),路由(,IP,寻址);拥塞控制,路由、拥塞控制等,网络,问题,网络层,3,帧,链路,检错与纠错(,CRC,码);多路访问;寻址,相邻节点(,链路,)无差错,数据链路层,2,bit,物理线路,定义机械特性;电气特性;功能特性;规程特性,物理层,1,单位,负责范围,主要功能,主要问题,名称,序号,物理,上可达,报文,应用程序,针对特定应用规定各层协议、时序、表示等,进行封装。,在端系统中用软件来实现,如,HTTP,等,针对特定,应用,选择各层协议,进行统一封装;,应用层,7,报文,应用程序,规定数据的格式化表示,数据格式的转换等,压缩、加密等,表示,问题,表示层,6,报文,应用程序,规定通信时序;数据交换的定界、同步,建立检查点等,通信时序问题(什么时候连接、传输和关闭等,会话,时序问题),会话层,5,单位,负责范围,主要功能,主要问题,名称,序号,8,-32,ISO/OSI,模型,10,-32,1.1.2,TCP/IP,与,OSI,的模型对比,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层,网络接口层,IP,层,传输层,应用层,11,-32,发送方传递过程,5,4,3,2,1,5,4,3,2,1,发送方,AP,2,AP,1,接收方,比特流,101,比 特 流,110101110101,H,3,H,4,H,5,应 用 程 序 数 据,H,2,链路层,首部,H,4,H,5,应 用 程 序 数 据,H,3,网络层首部,应用层首部,H,5,应 用 程 序 数 据,H,5,应 用 程 序 数 据,H,4,运输层首部,T,2,链路层,尾部,物理传输媒体,电信号(或光信号)在物理媒体中传播,应 用 程 序 数 据,帧,数据报,报文段,报文,PDU,每层传递的数据分为首部字段和有效载荷字段两部分,有效载荷是相邻上层传下来的数据。,13,-32,接收方传递过程,5,4,3,2,1,AP,2,接收方,H,3,H,4,H,5,应 用 程 序 数 据,H,2,T,2,H,3,H,4,H,5,应 用 程 序 数 据,15,-32,接收方传递过程,5,4,3,2,1,AP,2,接收方,H,5,应 用 程 序 数 据,H,4,H,5,应 用 程 序 数 据,16,-32,接收方传递过程,5,4,3,2,1,AP,2,接收方,应 用 程 序 数 据,H,5,应 用 程 序 数 据,我收到了,AP,1,发来的,应用程序数据!,说明:,报文很长,传输时先分成多个报文段,每个报文段在网络层再分成多个数据报。接收端需还原成报文段。,18,-32,IP,(统一、分组交换、尽力传递),TCP,UDP,TELNET,,,FTP,,,SMTP,,,DNS,,,HTTP,HDLC,,,PPP,,,LAN,,,X.25,,,FR,,,ATM,Application,Transport,Network,Data Link,Physical,1.1.3,常用协议,19,-32,1.2,网络编程接口,理论上讲,在,网络体系结构中的任何一层上,都应能提供应用程序设计的,编程接口,,但是实际上并非如此。在完整的计算机网络系统中,,仅,提供了基于,网络操作系统之上的编程接口,。例如,Windows,的,Winsock,,,Netware,的,Ipx/Spx,及,NetBios,等。通常通信程序设计都是基于这些接口。,应用程序,A,应用程序,B,网络编程接口,例如,Windows Sockets,网络通讯协议服务界面,例如,TCP/IP,物理通讯介质,操作系统,例如,Windows,应用程序与网络编程接口关系图,20,-32,1.2.1,网络编程接口,基于,NETBIOS,的网络编程,基于,WinSock,的网络编程,直接网络编程,基于物理设备的网络编程,21,-32,1.2.1,基于,NETBIOS,的网络编程,NetBIOS,(,Network Basic Input/Output System,),网络基本输入输出系统,1983,年由,Sytek,公司专为,IBM,开发成功,为网络通信定义了一种编程接口。,NetBEUI,(,NetBIOS Extended User Interface,),NetBIOS,扩展用户接口。,1985,年,,IBM,创制了,NetBIOS,扩展用户接口,它同,NetBIOS,接口集成在一起,终于构成了一套完整的协议。,NetBIOS,同时提供了,“,面向连接,”,的会话服务以及,“,无连接,”,的数据报服务。,NetBIOS,编程接口对应于,OSI,模型的,会话层和传输层,。,值得注意的是,NetBIOS,是一种,“,非可路由,”,协议。,22,-32,1.2.2,基于,WinSock,的网络编程,Winsock,编程接口:,是,Windows,环境下实现,TCP/IP,网络编程的接口。,Winsock,规范定义了如何使用,API,与,Internet,协议族,它包含了一组针对,Windows,的扩展库函数,以使程序员能充分地利用,Windows,消息驱动机制进行编程。,Winsock,支持,流套接口,和,数据报套接口,。,TCP/IP,协议,:,传输控制协议,/,网际协议是发展至今最成功的通信协议之一。,TCP/IP,以其开放性的特点,成了,Internet,的基础,通过,Internet,把全世界数以千万的计算机连接在一起,是事实上的工业标准。,24,-32,1.2.4,基于物理设备的网络编程,基于物理设备的网络编程接口:,也称为,MAC,层编程接口,,在这种编程接口上进行网络程序设计,需要对网卡的网络接口控制器(,NIC,)进行程序编程控制。由于这一接口没有提供现成的程序接口,因此,所有功能的实现都必须自行设计。,主要用途:,网络数据包截获、网络协议分析、流量统计分析等,或设计自己的安全协议。,25,-32,1.3,网络通信方式,面向连接和无连接通信,阻塞与非阻塞通信,广播,多播,26,-32,1.3.1,面向连接和无连接通信,通常情况下,一个协议提供,面向连接(会话)和无连接(数据报),两种通信服务。如,NetBIOS,和,TCP/IP,协议均提供了这两种服务。,面向连接服务:,通信双方建立通信链路,这样既确定了通信方之间存在路由,又保证了通信双方都是活动的、都可彼此响应,并且传送数据时是,按序,传送的,从而保证数据通信的,可靠,性。,面向连接服务的三个阶段,:,连接建立、数据传输、连接释放。,适用场合,:,面向连接服务比较适合于在一段时间内要向同一目的地可靠发送许多报文的情况。,28,-32,1.3.2,阻塞与非阻塞通信,网络通信模式:,分阻塞和非阻塞两种模式。,发送方:,在阻塞模式下,如果低层协议没有可用空间来存放用户数据,则应用进程将阻塞等待直到协议有可用的空间。,在非阻塞模式下,调用将直接返回而不需等待。,接收方:,在阻塞模式下,若没有到达的数据,则调用将一直等待直到有数据到达或出错;,在非阻塞模式下,将直接返回而不需等待。,29,-32,1.3.2,阻塞与非阻塞通信,面向连接服务建立连接:,等待连接方,(Server),:在阻塞模式下,如果没有连接请求到达,则阻塞直到有连接请求到达;在非阻塞模式下,如果没有连接请求到达,则直接返回。,发起连接方,(Client):,不管是阻塞还是非阻塞模式,发起方总是会使进程阻塞,阻塞间隔最少等于到达服务器的一次往返时间。,通信模式对应用程序的设计方法的影响:,非阻塞模式:应用程序需通过,轮询、回调或异步消息,(,事件,),的方式查看是否有数据到达或有连接请求到达。这种方式耗费较多的,CPU,时间。,阻塞模式:进程或线程在执行,I/O,操作时将被阻塞而不能执行其他的工作,在单进程或单线程应用中一般不使用这种模式。在多线程应用中比较适合采用阻塞模式,一个线程被阻塞不影响其他线程的工作。,31,-32,1.3.3,多播与广播通信,多播(组播)通信,:,数据从一个,工作站发出,,这些数据将由,一个或多个接收端,进行,接收,。,进程加入一个多播通信的方法与采用的底层协议有关。在,IP,协议和,NetBIOS,协议下,多播是广播的一种变形,多播要求对收发数据感兴趣的所有主机加入到一个,特定的组,,进程希望加入多播组时,网卡上会增添一个过滤器,这样,,只有绑定组地址,的数据才会被网络硬件捡起,并上传到网络堆栈进行相应处理。,无论是,多播还是广播通信,,它们都是建立在,无连接,服务协议之上的,因此,数据传输的,可靠性无法得到保证,。,32,-32,习题与思考题,1-1,网络编程接口的作用是什么?常见的网络编程接口有哪几种?它与网络通信协议之间存在何种关系?,1-2,简述面向连接和无连接通信的特点及各自适用的场合。,1-3,简述阻塞与非阻塞通信的基本过程。,1-4,简述点对点通信、多播通信与广播通信的含义,。,
展开阅读全文