计算机网络客户服务器模式应用程序接口

上传人:百**** 文档编号:243394808 上传时间:2024-09-22 格式:PPT 页数:63 大小:407KB
返回 下载 相关 举报
计算机网络客户服务器模式应用程序接口_第1页
第1页 / 共63页
计算机网络客户服务器模式应用程序接口_第2页
第2页 / 共63页
计算机网络客户服务器模式应用程序接口_第3页
第3页 / 共63页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,互联网应用模式和API,客户服务器工作模式,应用程序接口API,1,客户服务器工作模式,C/S的基本概念,C/S关系与软件特点,C/S工作过程与并发,协议端口号,2,C/S模式部分的重点与难点,1、C/S模式的基本概念,2、C/S的工作过程,以及C/S软件的各自特点,3、*协议端口号及应用,4、插口地址概念,重点理解:,主要了解:,1、熟知的协议端口号与使用,2、互联网C/S工作模式与TCP/IP的关系,3、服务器并发处理,3,相互作用的客户-服务器,(,Client/Server),模型,在TCP/IP互联网中,进程间相互访问的模式主要是,客户服务器交互模式,客户和服务器分别是两个应用程序(,进程,)。客户向服务器发出服务请求,服务器做出响应。,服务器,客户,互联网,进程(,Process),就是运行中的程序。解决具体应用问题的逻辑处理和通信进程总称为“应用进程”。,4,为什么选择客户-服务器模式,第一个原因:,互联网中资源、运算能力和信息不均等的现实,。,资源、运算能力不均,:小到一个物理网络,往往是某些主机拥有大容量的外存,某些主机只有很少外存或没有外存,有些主机拥有打印机,有些主机没有;大到整个互联网,少数网点拥有超速运算能力,而大量网点由PC机构成.,信息分布不均,:比如名字信息、地址信息等。这些信息往往以数据库形式存在于少数特权主机当中,供局部或全局访问。这些信息一般具有公用性,为了节约整个网络的资源,没有必要在每一台机器上都维持一个拷贝。,不均等现象不可避免,而客户-服务器模式体现了这种现象并很好地适应了这种现象。,5,第二个原因:是技术性的,。,互联网进程通信与单机进程通信不同:互联网通信完全是异步的,无法知道哪个主机会在何时发起通信。,因此,需要一种机制,为准备通信的进程之间建立联系,为两者的数据交换提供同步。,C/S模式是客观现实与技术实现相结合的产物!,首先,什么是早期单机应用软件的工作方式,?,和早期单机应用软件一般只和本机资源交互,包括通信串,/,并口。当出现网络应用后,应用软件需要通过网络访问资源、交互信息,寻找一种基于网络的信息,交互,/,计算分布模式,。,6,网络中计算机进程间通信同样存在主叫和被叫,但没有,振铃机制,。通信进程间,收,/,发协调,怎么办?互联网采用最简单的约定方式,C/S,模式,电话通信的呼叫模式:主叫发起通信、被叫振铃和提机、开始通信,。,振铃机制实现依赖信令系统控制处理,协调双方通信(收,/,发)矛盾。,在网络环境下,许多问题的解决往往是通过位于,不同主机中的多个进程之间的通信和协同工作,来完成的。,网络的进程之间怎样相互协同开始工作,为什么要,C/S,模式?,7,2000,年前后,,SIP,协议的发展类似信令系统的互联网,会话(呼叫)系统,,可定义更丰富的,会话模式。,传统,TCP/IP,网络应用程序使用客户,/,服务器模式,,但,C/S,不是所有应用交互,会话模式,如,IP,电话、视频会议、多方游戏等。,在客户-服务器模式中,,每次通信均由客户进程发起,服务器进程从开机起就处于等待状态。,这可保证服务器随时对客户请求做出响应,8,C/S,模式是约定客户请求(发起)通信、服务器响应通信(提供特定的服务),基本可以理解为请求,/,应答的分布计算(会话)模式,。,互联网将网络软件分为客户,(client),、服务器,(server),,,客户和服务器都指,通信中所涉及的两个应用进程。,即本质是计算机软件。,9,客户软件的特点,在进行通信时临时成为客户,但它也可在本地进行其他的计算,提供用户端基本应用功能框架。,被用户调用,在用户本地计算机上运行,在需要时主动向远地服务器发起通信。,可与多个服务器进行通信。,通常不需要特殊的硬件和很复杂的操作系统。,10,服务器软件的特点,专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。,在共享计算机上运行。当系统启动时即自动调用并一直不断地运行着。,被动等待并接受来自多个客户的通信请求。,一般需要强大的硬件和高级的操作系统支持。,11,两个术语,在C/S模式中:,服务器,:被动等待通信的,程序,。,不是计算机,。,服务器级计算机,:运行服务器软件的功能强大的,计算机,。,硬件厂商把具有高速CPU、大容量存储器、功能强大的操作系统的计算机称为服务器,其实应该称为服务器级计算机。,12,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层, 发起连接建立请求,应用层,应用层,客,户,服务器,因特网, 接受连接接受请求,计算机,A,计算机,B,1 C/S 工作建立过程,请求、应答、数据交互,TCP/IP系统支持。,C/S都需要TCP/IP系统支持,C/S 工作过程和并发,13,C/S模式的传输机制,面向连接传输,:使用面向连接的传输协议时,两个应用必须首先建立一个连接,然后在该连接上发送数据。,无连接传输,:应用可以利用无连接接口在任何时间向任何目的发送消息。,客户和服务器在通信时,既可以使用面向连接传输协议,又可以使用无连接传输协议,。当使用面向连接传输时,客户需要首先形成一个到特定服务器的连接,该连接在客户发送请求和接收响应的过程中保持不变。当客户完成对服务的使用时,必须关闭这一连接。,14,一台计算机上可以运行多种服务器:,1.,充分利用硬件资源,。硬件可以被多种服务所共享。,减少系统管理负载,。因为这种情况可以减少被管理,的计算机系统的数量。,如果对服务的需求比较低,那么把服务器合并到一台,计算机上,能够显著地减少开销,,而且,并不会明显地降低性能,。,15,2 服务器多重服务,:,单计算机可安装多服务器软件来提供多重服务,在等待的时候不占用资源,但同时响应需要系统较多资源支持,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,应用层,应用层,应用层,计算机,A,计算机,B,计算机,C,客户1,服务器,1,服务器,2,客户,2,因特网,16,并发性,客户-服务器交互模型的基础,并发服务器可以同时为多个客户提供服务,并不需要每个客户等待前一个客户的请求完成,大多数并发服务器都是动态操作的。即只有当请求到达时,服务器才会动态地为到来的请求创建一个新的线程。,服务器程序由两部分组成:,主线程和服务线程。,主线程,:负责接收请求并为请求创建一个服务线程来处理请求。并使服务器保持活跃状态,主线程在创建处理请求的服务线程之后,会等待另一个请求的到来。,服务线程,:负责处理每个请求,然后终止。,如果N个客户同时请求一台计算机上的给定服务,则会有N+1个线程提供服务。主线程等待额外的请求,N个服务线程与每个客户进行交互,在互联网中,客户发起请求完全是随机的,很有可能出现多个请求同时到达服务器的情况。,17,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,应用层,应用层,应用层,计算机,A,计算机,B,计算机,C,客户1,因特网,客户,2,3 服务器并发:,服务器,1*副本,一个服务器同时响应多个请求,即服务器并发执行是基本的,而不是逐个响应。一个服务器软件包括:接收请求、处理单个请求和生成新线程三部分;当请求到达时,服务器将它交给一个控制线程(副本),和已有线程并发。,服务器,1,18,复杂的C/S交互:,实际大型网络应用S软件系统中,C/S的交互可能是复杂的过程。,1、客户应用不限制访问一个服务器,客户一个应用可以成为多个不同服务器(可能不同计算机上)的客户,要处理多个服务器通信。,2、提供某种服务的服务器同时能成为另一个服务的客户,如文件服务器在进行文件服务处理时需要记录时间,可能又要访问时间服务器。,3、可能发生服务器的循环依懒,在两个服务器间,或多服务器之间的依懒环。,19,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,N个服务器,因特网,计算机,A,计算机,B,N个客,户,协议,端口号,C与S之间怎样准确,识别特定服务?,20,一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请求?,解决方法,:,传输协议为每种服务分配一个惟一的,标识符,,服务器和客户必须使用这一标识符,。,服务器,开始运行时,它向,本地协议软件注册,它使用的服务标识符。客户访问远程服务器时,需要,指定,对应的服务标识符。,客户计算机,上的传输协议软件在发送请求时,向服务器计算机,发送,这一标识符,服务器计算机上的传输协议软件使用这一标识符决定处理这一请求的服务器程序。,21,端口,端口就是运输层服务访问点 TSAP,端口的,作用,就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。,从这个意义上讲,,端口是用来标志应用层的进程,。服务器通过它明确所提供的服务,22,F,T,P,T,E,L,N,E,T,S,M,T,P,D,N,S,T,F,T,P,S,N,M,P,TCP UDP,21,23,25,53,69,161,应用层,传输层,端口层,23,1028,23,.,源端口,目的端口,TELNET,B,目的端口号=23把包发送到我的TELNET应用中,A,B,24,端口,端口用一个 16 bit 端口号进行标志。,端口号只具有本地意义,即端口号只是,为了标志本计算机应用层中的各进程,。在因特网中不同计算机的相同端口号是没有联系的。,25,两类端口,一类是,熟知端口,,其数值一般为 01023。当一种新的应用程序出现时,必须为它指派一个熟知端口。,另一类则是,一般端口,,用来随时分配给请求通信的客户进程。,26,TCP/IP定义的应用程序熟知端口:,FTP: 21, Telnet: 23, SMTP: 25,DNS: 53, TFTP:69, HTTP : 80, SNMP: 161,协议,端口号定义,而一般端口,是可以由系统开发人员随时定义分配的。,27,名称,TCP,端口号,TCP,端口号,描述,Echo,Discard,Daytime,Chargen,Time,7,9,13,19,37,7,9,13,19,37,服务器返回客户发送的所有内容,服务器丢弃客户发送的所有内容,服务器以可读形式返回日期与时间,当客户发一个数据报时,服务器发送一连续字符流,直至客户中断连接;UDP发一随机长度的数据报,从服务器返回一个32bit数,表示UTC时间1900 .1.1午夜至今的秒数,通常TCP/IP的主要端口号:1225之间,,端口号2561023由Unix系统占用,,端口号10245000作为临时端口分配,,5000以上(作为其他服务器)不常出现。,标准简单服务,端口号,28,为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时自指定的,只具有本地意义?,为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时指定的?,答:协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。,一计算机可以有多个应用进程,通过不同的端口号(源不同/目的相同,源同/目的不同,均不同),同时进行多任务处理,此时TCP/UDP、IP完成复用与分用。,协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。,29,实际通过TCP应用,除端口外,还必须有IP地址。,TCP连接的两个端点(端与端通信),是由端点地址(IP地址,端口号)确定,,(IP地址,端口号)也被称为插口(Socket),或者端地址(Endpoint Address)。,实际通过TCP通信,除端口外,为什么必须有IP地址?,30,TCP/UDP协议插口,0 4 10 16 31,源端口,目的端口,TCP/UDP头部 数据,其它字段,TCP/UDP头部 数据,IP头部,32bit源地址,32bit目的地址,其它字段,从IP包结构看,网络应用进程通信需要端地址(IP地址,端口号),31,总结,1、什么是,C/S,工作模式,?,2、网络应用为什么需要C/S模式?,3、,为什么通常服务器软件复杂?,4、应用进程通信端口地址,为什么还要IP地址?是否需要物理网地址?,32,作业,1、客户软件和服务器软件主要特点。,2、,一个服务器软件通常需要包括哪些主要的功能部分。,3、,为什么通常服务器端口号是唯一定义的,而客户端的端口号可以临时指定?,33,应用程序接口API,1,应用程序接口概述,2 套接字API基本结构,3 实现套接字API的过程,4 套接字API的其它问题,5 套接字API实现实例,34,1、应用编程接口的概念与重要性,2、套接字API的特点/函数/参数,3、Socket,套接字API实现的基本过程,重点理解:,主要了解:,1、,套接字API主要过程的作用,2、套接字继承与服务器并发,35,应用程序接口概述,C/S模式解决了应用程序通过互联网交互方式等待/请求,并通过端口号来标识服务器提供的某种服务。,尽管TCP/IP 并不复杂,但应用程序编写当然不希望每次逐一填写TCP/IP的各个报头;应用程序对网络低层通信细节实际不想关心,所以在应用程序和通信网络之间怎样形成标准的接口API,应用程序只需要通过API就能完成通信和数据交互,是网络应用发展的一大进步。,互联网应用程序怎样和TCP/IP协议通信接口?,即C、S编程怎样使用TCP/IP协议进行通信与数据交互。,传统通过网络(DDN、FR、ATM)的交互,使用计算机串行接口或LAN仿真,通信网把数据传递到对方计算机,其余需要计算机应用处理。,1 网络编程接口发展,背景,存在问题:1、计算机应用和网络两层皮;2、计算机应用必须和底层硬件(接口)打交道;严重阻碍网络应用发展。,36,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,N个服务器,因特网,计算机,A,计算机,B,N个客,户,应用进程通过端地址建立可靠双工通信连接和收发数据,应用程序或编程人员怎样处理各种协议(TCP/IP/IGMP)的具体报格式?,需要逐一包文内容填写?,37,实际互联网应用程序只需要通过,API,完成通信和数据交互的调用,从而不需要处理网络的细节,是网络应用发展的一大进步。,API体现了现代网络又一个,重要思想,应用程序与网络,“一体”又“分离”,。,一体,:把网络通信对上抽象API成为计算机体系组成部分,网络API定义与设计已成为所有处理网络应用与网络通信底层接口的实际方法,在3G/4G,NGN网络中最大标准组就是解决其API的问题。,分离,:实现高效、简捷API,就意味着实现应用与网络通信底层“分离”,就可不关心通信实现的细节,大大降低了网络应用开发难度,促进应用发展。,38,应用程序接口API是应用程序通过TCP/IP协议软件进行通信交互的接口,它是一组定义的操作(非硬件),API决定了网络应用所能达到功能和这些功能编程开发的难度,。,应用程序接口API是一般,由操作系统(或编程系统),提供,是由应用程序调用的一个过程及过程所需的参数。通常一个API基本操作是独立过程,如API一个过程完成建立通信,另一个过程完成数据接收。,应用程序接口API概念,API:,Application Program Interface,,应用程序接口或应用编程接口,39,通信协议只是规定协议应该提供的操作,并不指定应用程序与协议进行交互时的API。,协议,端口与API接口有什么区别?,协议端口是服务器软件的标识,16位整数;API是一个执行过程。,40,套接字API(Socket API),互联网API主要有两类:,1、伯克利版API(Socket API,称为套接字API),从BSD,Unix版发展而来。,2、A&AT版TLI 运输层接口 Transport Lay Interface,尽管互联网允许OS系统选择API,但目前Windows(WinSoc)、Unix、Linux主流OS系统广泛接受,套接字API,所以成为事实上标准。,套接字API是操作系统的一个组成部分,。,41,Socket API,:,应用程序与TCP/IP协议之间的接口,它,作为一种通用的通信编程接口而设计。,42,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。,43,套接字API的基本结构,套接字API是Unix操作系统的发展而来的,套接字API网络通信描述基本保持Unix对设备、文件的操作风格。如 Unix文件操作采用“openreadwriteclose”过程模式,首先产生一个操作的描述符,然后每个过程由函数+参数具体组成。,套接字API同样用描述符的方法,在,使用通信协议前必须申请操作系统生成一个套接字,,系统返回一个小整型数(如3、5)作为描述符来识别这个套接字,以后通信过程中这个套接字作为参数,而不必每次传输时指明细节。,44,API过程中应用程序选择的端口、通信地址、客户或服务器、使用协议等怎么表达呢?,套接字API通过定义多个函数(,而不是单个,为什么?,),来确定参数和选项;既当创建套接字描述符后,调用多个函数过程说明套接字使用的具体细节。,总结:套接字API的使用是通过首先创建套接字(返回整型描述符),然后调用多个包含具体参数和选项的函数过程,完成应用程序和协议通信的接口。,为什么是多个而不是单个,单个绝对不行吗?,45,实现套接字API的过程,Socket过程,该过程创建一个套接字并返回一个整数描述字。,descriptor=socket(,protofamily,type,protocol,),close过程,该过程告诉系统终止对套接字的使用。,close(,socket,),bind过程,服务器使用该过程来提供服务器所使用的、用于等待连接的协议端口号。,bind(,socket,localaddr, addrlen),46,listen过程,服务器调用该过程来等待来自客户的连接。,listen(,socket,queuesize,),accept过程,面向连接的服务器必须调用accept过程才能接收下一个连接请求。,newsock=accept(,socket,caddress,caddresslen,),connect过程,客户调用该过程建立与特定服务器之间的连接。,connect(,socket,saddress,saddresslen,),47,send过程,如果套接字被连接,可以利用该过程发送数据。,send(,socket,data,length,flags,),sendto过程 和sendmsg 过程,允许客户或服务器使用无连接套接字发送数据。,sendto(,socket,data,length,flags,destaddress,addresslen,),sendmsg( socket,msgstruct, flags),是一个结构,该结构包含了关于目的地址,目的地址的长度,发送的消息,以及消息的长度等信息。,48,recv过程,应用可以调用该过程从连接套接字中接收数据。,recv( socket,buffer, length, flags),recvfrom过程 和recvmsg过程,如果套接字并没有被连接,应用可以用于接收来自任意发送者的消息,recvfrom( socket, buffer, length, flags,sndraddr,saddrlen,),recvmsg( socket,msgstruct, flags),是一个结构,该结构含有接收消息的地址和发送者的IP地址。,49,实现套接字API的过程,1、,创建一个套接字并返回一个,返回整型描述符,Descri,A,ptor=socket(pf,type,protocol),Pf:协议栈TCP/IP/Apple Talk,type:连接/无连接, protocol:具体协议tcp/udp,2、Bind过程,Bind(socket,locaaddr,addrlen),服务器,使用Bind过程赋予套接字特定的,端地址,,实现socket 和端地址联编,使用无连接协议时已准备好接收信息。,Locaaddr是本地端地址的一般socket地址描述结构,TCP/IP地址和协议端口号将按socket地址结构表达。,50,4、Listen过程,Listen(socket,queuesize),如服务器是面向连接的,需要使用Listen 过程将套接字设置为被动模式,然后必须接受一个连接请求。,Queuesize:客户请求队列的长度,开始为空。,3、Close过程,close (socket),close过程的调用告诉系统终止对一个套接字socket的使用,系统对套接字进行释放,应用程序与传输协议间停止数据交互。如果套接字在使用面向连接的传输时,在关闭套接字前先关闭连接。,51,5、Accept过程,newsock=accept(caddress,caddresslen),使用面向连接通信时, Accept过程在套接字中确定了连接客户的地址,服务器通过调用Accept过程接受下一个连接。然后Accept为该连接创建一个新套接字newsock 返回调用者,服务器将用这个新套接字和客户通信,直至与该客户通信结束。,caddress:按照socket地址结构表达的客户端IP地址。,4-5步骤是面向连接通信时服务器必须的过程调用,完成被动地接受一个连接请求,然后创建一个服务器与特定客户TCP连接的新的套接字,依次通信,同时原套接字仍保持不变;当该客户连接结束后,使用原套接字接受来自下一个客户的连接。,52,6、客户端Connect过程,Connect(socket,saddress,saddresslen),当使用面向连接的TCP, Connect过程启动一个指定服务器的运输层连接,本质上说Connect是客户与已经调用了Accept过程的服务器进行连接的过程。 saddress是按一般socket地址结构表达的服务器IP地址和协议端口号。,非常有意思的是,当客户使用无连接的UDP协议时,也可以使用 Connect过程,此时并不启动一个连接,而仅仅使得 socket与,服务器端地址联编。,通常对无连接的传输一般每一个IP报指明目的地址,但许多应用客户只和一个服务器通信,也即具有同样的端目的地址。此时客户可以通过套接字的地址记录,发送多条信息,而不必每条指明地址。,无连接传输的Connect过程调用,建立连续无地址的IP包传输,实际上理解为客户 程序不需要给API指明端地址,而使用API默认地址。,53,7、Send过程,send(socket,data,length,flags),当套接字连接建立后, 客户与服务器就需要发送信息,客户与服务器使用Send 过程完成数据发送。,data 是内存待发数据的地址,length是数据字节数 , flags 特殊选项位(常用于系统调试)。,sendto(socket,data,length,flags,destaddress,addresslen),sendto过程是客户或服务器在未连接时发送信息, destaddress 是目的地址的socket结构表达。,sendmgs(socket,mgsstrucct,flags),sendmgs过程完全同sendto,但定义结构简化参数表达, mgsstrucct是包括目的地址、地址长度,待发信息位置和信息长度的结构表达(具体不展开)。,允许客户或服务器使用无连接套接字发送数据。,54,8、Recv过程,recv(socket,buffer,length,flags),当套接字连接建立后, 客户与服务器也同样需要接收信息,客户与服务器使用Recv过程完成从一个连接的套接字中接收数据。,buffer 是内存中存放接收到的数据的地址,length是缓冲区大小,flags 控制细节选项。,recvfrom(socket,buffer,length,flags,sndraddr,saddrlen),recvfrom过程是客户或服务器在未连接时接收任一客户发来的信息,同时对应每收到的信息返回发送地址作为应答,sndraddr是发送地址的socket结构表达。,recvmgs(socket,mgsstrucct,flags),recvmgs过程完全同recvfrom ,简化参数的表达,并和 sendmgs过程对应。,mgsstrucct,是一个结构,该结构含有接收消息的地址和发送者的IP地址。,55,其他套接子过程:,1.,getpeername过程,:服务器在调用accept过程接收连接,请求之后,可以调用该过程,以获得启动连接的远程,客户的完整地址。,2.,gethostname过程,:客户或服务器可以调用该过程来,获取运行该程序的计算机的信息。,3.,gethostbyname过程,:通过计算机名字返回该计算机,的IP地址。客户经常使用该过程将用户输入的名字转,换成相应的协议软件所需的IP地址。,4.,gethostbyaddr过程,:给出一台计算机的IP地址,它将,返回该计算机的名字。当要向人们显示主机信息时,客,户或服务器就可以使用该过程。,write(socket, buffer,length),read (socket, buffer,length),套接字API继承Unix的I/O一般操作,对已建立连接的套接字,可通过,write-read套接字进行网络数据传输,其功能同send-recv过程。,56,客户-服务器模式的socket实现框架,服务器,Socket( ),bind( ),listen( ),accept( ),阻塞,等待客户连接请求,recv( ),处理服务请求,send( ),Socket( ),connect( ),send( ),recv( ),客户,建立连接,服务请求,服务响应,面向连接的客户-服务器,服务器必须首先启动,直到它执行完accept()调用,进入等待状态后,方能接受客户请求。假如客户先启动,则connect()将返回出错代码,连接不成功。,服务器 端地址联编,创建套接字,等待连接请求,请求队列长度,客户地址新套接,字建立连接,服务器端地址,获取IP地址与定义端口,57,套接字、并发与线程,套接字API设计需要适应服务器并发,当服务器并发创建一个副本时,每个新创建的线程从创建的线程继承所有套接字的一个副本,也即继承拥有了所有套接字的访问权。,一个并发服务器首先打开一个套接字以接受连接,但系统在连接请求到达时,接着创建一个新套接字处理特定的连接;主线程不使用新的套接字,新线程也不会使用旧套接字。,58,简单例子的API实例:,客户建立一个与服务器的连接,然后等待输出。当一个连接,请求到达时,服务器创建一条ASCII文本消息,记录访问它的,客户的数目,然后通过连接发送这一消息,最后关闭连接。,客户显示接收的数据,然后退出。,如果一个客户向该服务器连接了10次,则客户接到并打印的信息为:,This server has been contacted 10 times.,59,该实例套接字过程调用顺序,getprotobyname,socket,bind,listen,accept,send,close,服务器,客户,gethostbyname,getprotobyname,socket,connect,recv,close,产生协议内部二进制标识,创建一个套接字,说明一个本地协议端口,将该套接字置于被动方式,接收连结请求,向客户发送报文,关闭新的连结,无限循环,将计算机名转换为IP地址,跟服务器建立连结,接收来自服务器的数据,这是客户构造一个连接并等待服务器输出,一个服务器每收到一个请求返回一个可打印信息的,然后关闭连接的实例,对,Socket,API的调用过程。,Getprotobyname是 计算机名(IP地址)转化Socket使用的二进制形式。,60,为什么客户端没有Socket与端地址联编(绑定)?,对客户端来说:本地IP地址是确定,而端口定义也是只有本地意义缺省(即可以使用缺省),所以Socket过程不需特别绑定,在IP/TCP/UDP;而服务器则一定需要端口绑定Bind过程。,61,套接字API实现的主要过程:,Bind,创 建套接字,Listen,协议,连接方式,服务器 端地址联编,连接,等待连接请求, 请求队列长度,Accept,客户地址新套接字建立连接,Send Recv,Connect,服务器 端地址,Send Recv,SendtoRecvto,非连接,服务器:,客 户:,创 建套接字,客 户:,创 建套接字,有连接服务,无连接服务,Close,本地机IP地址与默认端口,获取IP地址与定义端口,62,作业,1、API是否由TCP/IP所定义的,目前互联网最常用的API体系是什么。,2、API接口与协议端口、插口有什么区别?,3、对一个面向连接的TCP通信,服务器端,套接字API的实现要经过那些过程调用?,4、,对一个非连接通信,客户端,套接字API的实现要经过那些过程调用?,答2:两者都是应用程序与通信层交互所定义的。但API是编程接口,用一组编程规范来解决应用程序怎样调用TCP/IP通信;而协议端口只是TCP中的一个参数,指明通信是与哪一个应用程序交互。,63,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!