1、网络编程与开发技术网络编程与开发技术网络编程与开发技术网络编程与开发技术天津职业技术师范大学天津职业技术师范大学天津职业技术师范大学天津职业技术师范大学信息学院信息学院信息学院信息学院杨晓辉杨晓辉杨晓辉杨晓辉第一章第一章 网网络络编程基础编程基础 内内 容容 提提 要要1 1、网络编程概述、网络编程概述2 2、ISO/OSIISO/OSI模型模型3 3、网络编程接口、网络编程接口4 4、网络通信方式、网络通信方式1.1 1.1 网络编程概述网络编程概述第一章第一章 网络编程基础网络编程基础网络编程的含义:网络编程的含义:利用网络应用编程接口编写网络通信程序,实现网络应用进程间的信息利用网络应用
2、编程接口编写网络通信程序,实现网络应用进程间的信息交互功能。交互功能。进程间的通信分为两种:进程间的通信分为两种:1.1.同一系统上的进程间的通信,这是通常意义上的进程间通信。同一系统上的进程间的通信,这是通常意义上的进程间通信。2.2.不同系统上的进程间的通信,必须通过网络编程接口访问网络协议提不同系统上的进程间的通信,必须通过网络编程接口访问网络协议提供的服务来实现。供的服务来实现。网络编程接口与网络协议:网络编程接口与网络协议:进进程程通通过过网网络络编编程程接接口口访访问问网网络络协协议议所所提提供供的的服服务务。不不同同的的网网络络协协议议可可能能提提供供不不同同的的服服务务访访问问
3、接接口口,同同一一网网络络编编程程接接口口可可以以访访问问多多种种网网络络协协议议。如如Socket Socket APlAPl,支支持持对对很很多多协协议议的的访访问问,如如TCPTCP、UDPUDP、rawIPrawIP、数数据据链链路路层层协议及协议及UnixUnix域协议等。域协议等。网络编程及相关开发技术涉及操作系统、网络协议、网络编程模式和方网络编程及相关开发技术涉及操作系统、网络协议、网络编程模式和方法以及并发程序设计等方面的知识。本课程介绍在法以及并发程序设计等方面的知识。本课程介绍在WindowsWindows环境下的各种网环境下的各种网络编程接口和网络通信程序设计与开发技术
4、。络编程接口和网络通信程序设计与开发技术。ISO/OSIISO/OSI模型模型 第一章第一章 网络编程基础网络编程基础ISO:国际标准化组织(国际标准化组织(International Standardization Organization)。)。OSI:开放系统互连模型(开放系统互连模型(Open System Interconnection Reference Model )是国际是国际标准化组织(标准化组织(ISO)从一个很高的层次上对网络系统进行的描述。从一个很高的层次上对网络系统进行的描述。物理媒体负责以一系列电子信号的形式,传出数据物理媒体负责以一系列电子信号的形式,传出数据物理
5、层物理层控制两个主机间的物理通信链路:同时还要负责对数据进行整形,以便控制两个主机间的物理通信链路:同时还要负责对数据进行整形,以便在物理媒体上传输。在物理媒体上传输。数据链路层数据链路层在两个主机之间提供一套定址在两个主机之间提供一套定址/寻址机制,同时负责数据包的路由选择。寻址机制,同时负责数据包的路由选择。网络层网络层提供数据传输服务(可靠或不可靠)。提供数据传输服务(可靠或不可靠)。传输层传输层控制两个主机间的通信链路(开放、操作和关闭)。控制两个主机间的通信链路(开放、操作和关闭)。会话层会话层完成数据的格式化。完成数据的格式化。表示层表示层为用户提供相应的界面,以便使用提供的连网功
6、能。为用户提供相应的界面,以便使用提供的连网功能。应用层应用层功能描述功能描述层次层次相邻层之间的关系称为接口,而不同网络实体间在相同层之间的关系就是网络通信协议。相邻层之间的关系称为接口,而不同网络实体间在相同层之间的关系就是网络通信协议。1.2 1.2 网络编程接口网络编程接口 第一章第一章 网络编程基础网络编程基础 理理论论上上讲讲,在在网网络络体体系系结结构构中中的的任任何何一一层层上上都都应应能能提提供供应应用用程程序序设设计计的的编编程程接接口口,但但是是实实际际上上并并非非如如此此。在在完完整整的的计计算算机机网网络络系系统统中中,仅仅提提供供了了基基于于网网络络操操作作系系统统
7、之之上上的的编编程程接接口口。例例如如Windows的的Winsock,Netware的的Ipx/Spx及及NetBios等。通常通信程序设计都是基于这些接口。等。通常通信程序设计都是基于这些接口。应用程序应用程序A A 应用程序应用程序B B网络编程接口,例如网络编程接口,例如Windows SocketsWindows Sockets网络通讯协议服务界面,例如网络通讯协议服务界面,例如TCP/IPTCP/IP物理通讯介质物理通讯介质操作系统,例如操作系统,例如WindowsWindows应用程序与网络编程接口关系图应用程序与网络编程接口关系图网络通信在指挥自动化系统中的应用网络通信在指挥自
8、动化系统中的应用指控系统网络结构指控系统网络结构作战指挥席内部通信设备系统时钟通信处理机服 务 器总领航席领 航 席领 航 席 领 航 席话音记录仪情报融合分发控制雷雷达达情情报报态势信息 引导指令1.2.1 1.2.1 网络编程接口网络编程接口第一章第一章 网络编程基础网络编程基础基于基于NETBIOSNETBIOS的网的网络编络编程程基于基于WinSock WinSock 的网的网络编络编程程直接网直接网络编络编程程基于物理基于物理设备设备的网的网络编络编程程1.2.1 1.2.1 基于基于NETBIOSNETBIOS的网络编程的网络编程第一章第一章 网络编程基础网络编程基础NetBIOS
9、NetBIOS(Network Basic Input/Output SystemNetwork Basic Input/Output System)网网络络基基本本输输入入输输出出系系统统,19831983年年由由SytekSytek公公司司专专为为IBMIBM开开发发成成功功,为网络通信定义了一种编程接口。为网络通信定义了一种编程接口。NetBEUINetBEUI(NetBIOS Extended User InterfaceNetBIOS Extended User Interface)NetBIOS NetBIOS 扩扩展展用用户户接接口口。19851985年年,IBMIBM创创制制了
10、了NetBIOS NetBIOS 扩扩展展用用户户接接口口,它同它同NetBIOS NetBIOS 接口集成在一起,终于构成了一套完整的协议。接口集成在一起,终于构成了一套完整的协议。NetBIOSNetBIOS同同时时提提供供了了“面面向向连连接接”的的会会话话服服务务以以及及“无无连连接接”的的数据报服务。数据报服务。NetBIOSNetBIOS编程接口对应于编程接口对应于OSIOSI模型的会话层和传输层。模型的会话层和传输层。值得注意的是值得注意的是NetBIOS NetBIOS 是一种是一种“非可路由非可路由”协议。协议。1.2.2 1.2.2 基于基于WinSockWinSock的网
11、络编程的网络编程 第一章第一章 网络编程基础网络编程基础WinsockWinsock编程接口:编程接口:是是WindowsWindows环环境境下下实实现现TCP/IPTCP/IP网网络络编编程程的的接接口口。WinsockWinsock规规范范定定义义了了如如何何使使用用APIAPI与与InternetInternet协协议议族族,它它包包含含了了一一组组针针对对WindowsWindows的的扩扩展展库库函函数数,以以使使程程序序员员能能充充分分地地利利用用WindowsWindows消消息息驱驱动机制进行编程。动机制进行编程。WinsockWinsock支持流套接口和数据报套接口。支持流
12、套接口和数据报套接口。TCP/IPTCP/IP协议协议:传传输输控控制制协协议议/网网际际协协议议是是发发展展至至今今最最成成功功的的通通信信协协议议之之一一。TCP/IPTCP/IP以以其其开开放放性性的的特特点点,成成了了InternetInternet的的基基础础,通通过过InternetInternet把全世界数以千万的计算机连接在一起,是事实上的工业标准。把全世界数以千万的计算机连接在一起,是事实上的工业标准。1.2.3 1.2.3 直接网络编程直接网络编程 第一章第一章 网络编程基础网络编程基础直接网络编程接口:直接网络编程接口:提提供供在在链链路路层层或或网网络络层层的的编编程程
13、方方法法。直直接接网网络络编编程程与与普普通通的的网网络络编编程程不不同同,在在程程序序中中会会涉涉及及底底层层网网络络协协议议及及其其协协议议数数据据单单元元。因因此此,需需要要对对链链路路层层帧帧与与网网络络协协议议数数据据单单元的结构有一定的了解。元的结构有一定的了解。主要用途:主要用途:直直接接网网络络编编程程可可以以在在较较低低的的层层次次上上(链链路路层层或或网网络络层层)操操作作网网络络。可可进进行行网网络络侦侦听听、协协议议分分析析和和检检测测。在在网网络络安安全性分析和网络对抗中具有广泛的用途。全性分析和网络对抗中具有广泛的用途。1.2.4 1.2.4 基于物理设备的网络编程
14、基于物理设备的网络编程 第一章第一章 网络编程基础网络编程基础基于物理设备的网络编程接口:基于物理设备的网络编程接口:也也称称为为MACMAC层层编编程程接接口口,在在这这种种编编程程接接口口上上进进行行网网络络程程序序设设计计,需需要要对对网网卡卡的的网网络络接接口口控控制制器器(NICNIC)进进行行程程序序编编程程控控制制。由由于于这这一一接接口口没没有有提提供供现现成成的的程程序序接接口口,因因此此,所所有有功功能能的的实实现都必须自行设计。现都必须自行设计。主要用途:主要用途:网网络络数数据据包包截截获获、网网络络协协议议分分析析、流流量量统统计计分分析析等等,或或设设计自己的安全协
15、议。计自己的安全协议。1.3 1.3 网网络络通信方式通信方式 第一章第一章 网络编程基础网络编程基础面向面向连连接和无接和无连连接通信接通信阻塞与非阻塞通信阻塞与非阻塞通信 广播广播多播多播1.3.1 1.3.1 面向面向连连接和无接和无连连接通信接通信 第一章第一章 网络编程基础网络编程基础 通通常常情情况况下下,一一个个协协议议提提供供面面向向连连接接(会会话话)和和无无连连接接(数数据据报报)两种通信服务。如两种通信服务。如NetBIOSNetBIOS和和TCP/IPTCP/IP协议均提供了这两种服务。协议均提供了这两种服务。面向连接服务:面向连接服务:通通信信双双方方建建立立通通信信
16、链链路路,这这样样既既确确定定了了通通信信方方之之间间存存在在路路由由,又又保保证证了了通通信信双双方方都都是是活活动动的的、都都可可彼彼此此响响应应,并并且且传传送送数数据据时时是是按按序序传传送送的,从而保证数据通信的可靠性。的,从而保证数据通信的可靠性。面向连接服务的三个阶段面向连接服务的三个阶段:连接建立、数据传输、连接释放。连接建立、数据传输、连接释放。适用场合适用场合:面面向向连连接接服服务务比比较较适适合合于于在在一一段段时时间间内内要要向向同同一一目目的的地地可可靠靠发发送送许许多报文的情况。多报文的情况。1.3.1 1.3.1 面向面向连连接和无接和无连连接通信接通信 第一章
17、第一章 网络编程基础网络编程基础无连接服务:无连接服务:通通信信双双方方不不用用建建立立可可靠靠的的通通信信链链路路,发发送送方方不不用用确确定定接接收收端端是否正在收听,随时可以发送数据。是否正在收听,随时可以发送数据。无连接服务的特点:无连接服务的特点:速速度度快快、使使用用灵灵活活,既既能能实实现现点点到到点点又又能能实实现现多多点点和和广广播播通通信。对数据量大且非重要的数据传输来说,数据报服务非常有用。信。对数据量大且非重要的数据传输来说,数据报服务非常有用。无连接服务的缺点:无连接服务的缺点:不不能能保保证证数数据据可可靠靠到到达达接接收收端端,同同样样也也不不能能保保证证数数据据
18、的的完完整整性,这些问题必须由应用程序根据需要自行解决。性,这些问题必须由应用程序根据需要自行解决。1.3.2 1.3.2 阻塞与非阻塞通信阻塞与非阻塞通信 第一章第一章 网络编程基础网络编程基础网络通信模式:网络通信模式:分阻塞和非阻塞两种模式。分阻塞和非阻塞两种模式。发送方:发送方:在在阻阻塞塞模模式式下下,如如果果低低层层协协议议没没有有可可用用空空间间来来存存放放用用户户数数据据,则应用进程将阻塞等待直到协议有可用的空间。则应用进程将阻塞等待直到协议有可用的空间。在非阻塞模式下,调用将直接返回而不需等待。在非阻塞模式下,调用将直接返回而不需等待。接收方:接收方:在在阻阻塞塞模模式式下下
19、,若若没没有有到到达达的的数数据据,则则调调用用将将一一直直等等待待直直到到有数据到达或出错;有数据到达或出错;在非阻塞模式下,将直接返回而不需等待。在非阻塞模式下,将直接返回而不需等待。1.3.2 1.3.2 阻塞与非阻塞通信阻塞与非阻塞通信 第一章第一章 网络编程基础网络编程基础面向连接服务建立连接:面向连接服务建立连接:等等待待连连接接方方(Server)(Server):在在阻阻塞塞模模式式下下,如如果果没没有有连连接接请请求求到到达达,则则阻阻塞塞直直到到有有连连接接请请求求到到达达;在在非非阻阻塞塞模模式式下下,如如果果没没有有连连接接请请求求到到达达,则直接返回。则直接返回。发发
20、起起连连接接方方(Client):(Client):不不管管是是阻阻塞塞还还是是非非阻阻塞塞模模式式,发发起起方方总总是是会会使进程阻塞,阻塞间隔最少等于到达服务器的一次往返时间。使进程阻塞,阻塞间隔最少等于到达服务器的一次往返时间。通信模式对应用程序的设计方法的影响:通信模式对应用程序的设计方法的影响:非非阻阻塞塞模模式式:应应用用程程序序需需通通过过轮轮询询或或异异步步事事件件的的方方式式查查看看是是否否有有数数据到达或有连接请求到达。这种方式耗费较多的据到达或有连接请求到达。这种方式耗费较多的CPUCPU时间。时间。阻阻塞塞模模式式:进进程程或或线线程程在在执执行行I/OI/O操操作作时
21、时将将被被阻阻塞塞而而不不能能执执行行其其他他的的工工作作,在在单单进进程程或或单单线线程程应应用用中中一一般般不不使使用用这这种种模模式式。在在多多线线程程应应用用中比较适合采用阻塞模式,一个线程被阻塞不影响其他线程的工作。中比较适合采用阻塞模式,一个线程被阻塞不影响其他线程的工作。1.3.3 1.3.3 多播与广播通信多播与广播通信 第一章第一章 网络编程基础网络编程基础广播通信:广播通信:数据从一个站发出,局域网内的其他所有工作站都能收到它。数据从一个站发出,局域网内的其他所有工作站都能收到它。广播通信的过程:广播通信的过程:一一个个工工作作站站在在LANLAN上上广广播播一一条条消消息
22、息,LANLAN内内每每台台机机器器上上的的网网卡卡都都会会收收到到这这条条消消息息,并并把把它它上上传传到到网网络络堆堆栈栈。然然后后,堆堆栈栈将将这这条条消消息息在在所所有有的的网网络络应应用用中中循循环环,看看它它们们是是否否应应该该接接收收这这条条消消息息。一一般般情情况况下下,路由器都不会传送广播包。路由器都不会传送广播包。缺点:缺点:使使用用广广播播消消息息的的不不利利之之处处是是每每台台机机器器都都必必须须对对该该消消息息进进行行处处理理,容易形成广播风暴。容易形成广播风暴。1.3.3 1.3.3 多播与广播通信多播与广播通信 第一章第一章 网络编程基础网络编程基础多播(组播)通
23、信多播(组播)通信:数数据据从从一一个个工工作作站站发发出出,这这些些数数据据将将由由一一个个或或多多个个接接收收端端进行接收。进行接收。进进程程加加入入一一个个多多播播通通信信的的方方法法与与采采用用的的底底层层协协议议有有关关。在在IPIP协协议议和和NetBIOSNetBIOS协协议议下下,多多播播是是广广播播的的一一种种变变形形,多多播播要要求求对对收收发发数数据据感感兴兴趣趣的的所所有有主主机机加加入入到到一一个个特特定定的的组组,进进程程希希望望加加入入多多播播组组时时,网网卡卡上上会会增增添添一一个个过过滤滤器器,这这样样,只只有有绑绑定定组组地地址址的的数数据据才才会会被被网网
24、络络硬硬件件捡捡起起,并并上上传传到到网网络络堆堆栈栈进进行行相相应应处处理。理。无无论论是是多多播播还还是是广广播播通通信信,它它们们都都是是建建立立在在无无连连接接服服务务协协议之上的,因此,数据传输的可靠性无法得到保证。议之上的,因此,数据传输的可靠性无法得到保证。习题与思考题习题与思考题 第一章第一章 网络编程基础网络编程基础1-1 1-1 网网络络编编程程接接口口的的作作用用是是什什么么?常常见见的的网网络络编编程程接接口口有有哪哪几几种?它与网络通信协议之间存在何种关系?种?它与网络通信协议之间存在何种关系?1-2 1-2 简述面向连接和无连接通信的特点及各自适用的场合。简述面向连接和无连接通信的特点及各自适用的场合。1-3 1-3 简述阻塞与非阻塞通信的基本过程。简述阻塞与非阻塞通信的基本过程。1-4 1-4 简简述点述点对对点通信、多播通信与广播通信的含点通信、多播通信与广播通信的含义义。