网络编程实用教程第1章.ppt
《网络编程实用教程第1章.ppt》由会员分享,可在线阅读,更多相关《网络编程实用教程第1章.ppt(75页珍藏版)》请在三一办公上搜索。
1、网络编程,主讲:梅芳,吉林大学软件学院,第一页 最后一页,吉林大学软件学院,课程简介,使用教材网络编程实用教程人民邮电出版社 叶树华 高志红 编著考核方式考试 80 分考勤 20 分,第一页 最后一页,吉林大学软件学院,主要内容,网络通信编程基本概念和编程模式UNIX套接字编程Sockets规范WinInet API和MFC WinInet类Win32的多进程机制5种套接字I/O模型电子邮件系统的构成和工作原理,第1章 网络编程基础,进程通信的概念因特网中网间进程的标识方法网络协议的特征TCP/IP中用户数据报协议UDP和传输控制协议TCP的特点 目前的网络编程现状网络应用程序的客户服务器交互
2、模式,第一页 最后一页,吉林大学软件学院,1.1 网络编程相关的基本概念,1.1.1 网络编程与进程通信1进程与线程的基本概念进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位。一个进程实体由三部分构成。程序代码:规定进程所做的计算。数据:计算的对象。进程控制块:是操作系统为了控制进程建立的数据结构,用来管理进程的内核对象,系统用来存放关于进程的统计信息。,第一页 最后一页,吉林大学软件学院,1.1 网络编程相关的基本概念,操作系统给进程分配内存空间:静态分配空间:用来装入进程所有的可执行模块或动态链接库模块的代码及数据。动态分配空间:如线程堆栈和堆分配空间。各种计算机应用程序
3、在运行时,都以进程的形式存在,网络应用程序也不例外。Windows系统不但支持多进程,还支持多线程。进程是分配资源的单位;线程是执行和调度的单位。由线程负责执行包含在进程的地址空间中的代码.,第一页 最后一页,吉林大学软件学院,一个进程可以包含若干个线程,同时执行进程地址空间中的代码。当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。每个线程拥有自己的一组CPU寄存器和堆栈。进程至少拥有一个线程,否则将被撤销。Windows 2000能在有多个CPU的计算机上运行,每个CPU上运行不同的线程,达到多线程运行。,第一页 最后
4、一页,吉林大学软件学院,图1.1 单CPU分时地运行进程中的各个线程,第一页 最后一页,吉林大学软件学院,2网络应用进程在网络体系结构中的位置从计算机网络体系结构的角度来看,网络应用进程处于网络层次结构的最上层。从功能上,可以将网络应用程序分为两部分:专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据进行加工。两部分模块相互配合来实现网络应用程序功能。,第一页 最后一页,吉林大学软件学院,图1.2 网络应用程序在网络体系结构中的位置,第一页 最后一页,吉林大学软件学院,
5、网络应用程序这两部分的关系:通信模块,是网络分布式应用的基础;其他模块,对网络交换的数据进行加工处理。网络应用程序要实现网络资源的共享,共享的基础就是必须能够通过网络轻松地传递各种信息。网络编程首先要解决网间进程通信的问题。然后才能在通信的基础上开发各种应用功能。,第一页 最后一页,吉林大学软件学院,3实现网间进程通信必须解决的问题网间进程通信,是指网络中不同主机中的应用进程之间的相互通信问题,必须解决以下问题:网间进程的标识问题(不能只用进程号标识);如何与网络协议栈连接的问题(通过定义套接字网络编程接口来解决);多重协议识别问题(不同协议工作方式不同);不同的通信服务的问题(要求不同,如文
6、件传输要求可靠、无差错、无乱序、无丢失,网络聊天要求不高,可选TCP和UDP服务)。,第一页 最后一页,吉林大学软件学院,1传输层在网络通信中的地位,1.1.2 因特网中网间进程的标识,第一页 最后一页,吉林大学软件学院,TCP/IP协议栈的特点是“两头大、中间小”应用层有多个应用进程,使用不同应用层协议;网络接口层,有多种数据链路层协议,支持不同的物理网络连接;网络层有IP协议,传输层有TCP和UDP协议。按照OSI七层协议的描述,传输层与网络层在功能上的最大区别,是传输层提供进程通信的能力。TCP/IP协议提出了传输层协议端口(简称端口)的概念,成功地解决了通信进程的标识问题。,传输层是计
7、算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程通信的关键的一层。,第一页 最后一页,吉林大学软件学院,图1.3 基于TCP/IP协议栈的进程间的通信,2端口的概念端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。在OSI七层协议描述中,将其称为应用层进程与传输层协议实体间的服务访问点(SAP)。应用层进程通过系统调用与某个传输层端口进行绑定,然后通过该接口接收或发送数据。类似于文件描述符,每个端口都拥有一个叫作端口号(port number)的16位整数型标识符。可以用端口标识通信的网络应用程序。,第一页 最后一页,吉林大学软件学院,传输层TCP和UDP两个
8、协议是完全独立的软件模块,因此各自的端口号也独立。使用时必须说明是UDP端口还是TCP端口,两种协议的端口间没有任何联系。如同所示,都可以提供65535个端口。端口是操作系统可分配的一种资源。,第一页 最后一页,吉林大学软件学院,图1.4 UDP与TCP的报文格式,从实现的角度讲,端口是一种抽象的软件机制,包括一些数据结构和I/O缓冲区。进程通过系统调用与某端口建立绑定关系后,传输层传给该端口的数据都被相应进程接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP实现中端口操作类似于一般的I/O操作。进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问。,第一页
9、最后一页,吉林大学软件学院,3端口号的分配机制网络进程通信前必须获知对方的进程地址。由于网络应用程序大多采用C/S模式开发,通信总是由客户机发起,因此事先只需让客户机知道服务器的进程地址即可。Internet中为客户服务的众所周知的服务有限。TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于TCP或UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。,第一页 最后一页,吉林大学软件学院,保留端口号,范围是01023,又称为众所周知的端口或熟知端口(well-known port),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机
10、构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。,第一页 最后一页,吉林大学软件学院,表1.1 一些典型的应用层协议分配到的保留端口,自由端口号,范围是102465535,采用本地分配,又称为动态分配。TCP或UDP端口的分配规则是:端口0:不使用,或者作为特殊的使用;端口1-255:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;端口256-1023:保留给其他的服务,如路由;端口1024-4999:可用作任意客户的端口;端口5000-65535:可用作用户的服务器端口。,第一页 最后一页,吉林大学软件学院,在这样
11、的端口分配机制下,客户进程C与服务器进程S第一次通信的情景。,第一页 最后一页,吉林大学软件学院,图1.5 客户与服务器的第一次通信,为确保服务器进程为多个客户机进程服务,服务器的保留端口是专门用来监听客户端的连接请求的。当服务器从保留端口接收到一个客户机的请求后,立即创建另外一个线程,并为这个线程分配一个保留端口(在500065535选择分配),然后继续接收新的客户机请求。,第一页 最后一页,吉林大学软件学院,4进程的网络地址的概念在因特网中,用一个三元组可以在全局中唯一地标识一个应用层进程:应用层进程地址=(传输层协议,主机的IP地址,传输层的端口号)这个三元组叫做一个半相关(half-a
12、ssociation),它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址。,第一页 最后一页,吉林大学软件学院,5网络中进程通信的标识一个完整的网间通信需要一个五元组在全局中唯一地来标识:(传输层协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口)这个五元组称为一个全相关(association),即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。,第一页 最后一页,吉林大学软件学院,在网络分层体系结构中,各层之间是严格单向依赖的,各层次的分工和协作集中体现在相邻层之间的接口上。服务是描述相邻层之间关系的抽象概念。下层是服务提
13、供者、上层是服务使用者;服务的表现形式是原语操作,一般以系统调用或函数库的形式提供。系统调用是操作系统内核向网络应用程序或高层协议提供的服务原语。N层要向N+1层提供比N-1层更完善的服务。,1.1.3 网络协议的特征,第一页 最后一页,吉林大学软件学院,网络层及以下各层称为通信子网,提供点到点通信,没有程序或进程的概念。传输层实现的是端到端的通信,引进了网间进程的概念,同时还要解决差错控制、流量控制、报文排序和连接管理等问题。不同的传输层协议以不同的方式向应用层提供不同的服务。网络程序开发者应了解常用网络协议的基本特征,掌握特定协议在程序中的行为方式。,第一页 最后一页,吉林大学软件学院,1
14、面向消息的协议与基于流的协议(1)面向消息的协议面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。保护消息边界:是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息,即接收端一次只能接收发送端发出的一个数据包。,第一页 最后一页,吉林大学软件学院,图1.6 保护消息边界的数据报传输服务,第一页 最后一页,吉林大学软件学院,UDP就是面向消息的,适合于交换结构化数据。,(2)基于流的协议基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。发送端允许系统将
15、原始消息分解成几条小消息分别发送,或把几条消息积累在一起形成大数据包发送,多次发送的数据统一编号。如果发送端连续发送数据,接收端有可能在一次接收动作中接收两个或更多的数据包。只要数据一到达,网络堆栈就开始读取并将其缓存,等待进程处理。,第一页 最后一页,吉林大学软件学院,图1.7 无消息边界的流传输服务,第一页 最后一页,吉林大学软件学院,TCP是基于流的协议。流传输,把数据当作一串数据流,不认为数据是一个一个的消息,编程时不要忽略这一点。,2面向连接的服务和无连接的服务一个协议可以提供面向连接的服务,或者提供无连接的服务。面向连接服务,是电话系统服务模式的抽象,即每一次完整的数据传输都要经过
16、建立连接、使用连接、终止连接的过程。传输过程中数据分组不携带目的地址;TCP提供面向连接的虚电路服务,建立连接时确定通信路径,并经过协商做好通信准备。连接需要很多开销,如差错控制和流量控制。,第一页 最后一页,吉林大学软件学院,无连接服务,是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。不能保证分组按序到达,不能进行分组出错的恢复与重传,不能保证传输的可靠性。通信前不需建立连接,不管接收端是否做好准备接收数据。UDP是无连接协议。,第一页 最后一页,吉林大学软件学院,3可靠性和次序性可靠性,保证了发送端发出的每个字节都能到达既定的接收端,不出错,不丢失,不重复,保证
17、数据的完整性,称为保证投递。次序性,是指对数据到达接收端的顺序进行处理。保护次序性的协议保证接收端收到数据的顺序就是数据的发送顺序,称为按序递交。协议的可靠性和次序性与是否面向连接密切相关,面向连接的协议可保证可靠性和次序性。,第一页 最后一页,吉林大学软件学院,1.1.4 高效的用户数据报协议UDP,第一页 最后一页,吉林大学软件学院,用户数据报协议(User Datagram Protocol,UDP),是一种尽力传送的、无连接的、不保障可靠的传输服务,是一种保护消息边界的数据传输。基于UDP的应用程序在高可靠性、低延迟的网络中运行良好;在网络层的基础上只增加了端口号的支持;传输效率高,适
18、用于交易型的应用程序,如TFTP、SNMP、DNS等应用进程。,1.1.5 可靠的传输控制协议TCP,1可靠性是很多应用的基础 2TCP为应用层提供的服务TCP为应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务。IP为TCP提供的是无连接的、尽力传送的、不可靠的传输服务,TCP为了向应用层进程提供可靠的传输服务,采取了一系列保障机制。TCP提供流传输服务,对传输数据的内部结构一无所知,只负责将字节流原封不动的传送到对方的应用进程。,第一页 最后一页,吉林大学软件学院,TCP被称作一种端对端(end to end)协议,因为它提供一个直接从一台
19、计算机上的应用进程到另一远程计算机上的应用进程的连接。应用进程能请求TCP构造一个连接,通过这个连接发送和接收数据,以及关闭连接。由TCP提供的连接叫做虚连接(VC),虚连接是由软件实现的。底层的因特网系统并不对连接提供硬件或软件支持,只是两台机器上的TCP软件模块通过交换消息来实现连接的虚拟。,3.TCP利用IP数据报实现了端对端的传输服务,第一页 最后一页,吉林大学软件学院,图1.8 TCP是一个端到端的传输协议,第一页 最后一页,吉林大学软件学院,从TCP角度来看,整个Internet是一个通信系统,能够接收和传递消息,而不会改变和干预消息的内容。,4三次握手为确保连接的建立和终止都是可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 实用教程
链接地址:https://www.31ppt.com/p-5451573.html