版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章:互联网应用模式和API第3.1节、客户—服务器工作模式第3.2节、应用程序接口API1第3章:互联网应用模式和API第3.1节、客户—服务器工作模第3.1节、客户—服务器工作模式3.1.1C/S的基本概念3.1.2C/S关系与软件特点3.1.3C/S工作过程与并发3.1.4协议端口号谢希仁教材1.6节2第3.1节、客户—服务器工作模式3.1.1C/S的基本概念C/S模式部分的重点与难点1、C/S模式的基本概念2、C/S的工作过程,以及C/S软件的各自特点3、**协议端口号及应用4、插口地址概念重点理解:主要了解:1、熟知的协议端口号与使用2、互联网C/S工作模式与TCP/IP的关系3、服务器并发处理3C/S模式部分的重点与难点1、C/S模式的基本概念重点理解:相互作用的客户-服务器(Client/Server)模型在TCP/IP互联网中,进程间相互访问的模式主要是客户—服务器交互模式客户和服务器分别是两个应用程序(进程)。客户向服务器发出服务请求,服务器做出响应。服务器客户互联网进程(Process)就是运行中的程序。解决具体应用问题的逻辑处理和通信进程总称为“应用进程”。4相互作用的客户-服务器(Client/Server)模型为什么选择客户-服务器模式第一个原因:互联网中资源、运算能力和信息不均等的现实。资源、运算能力不均:小到一个物理网络,往往是某些主机拥有大容量的外存,某些主机只有很少外存或没有外存,有些主机拥有打印机,有些主机没有;大到整个互联网,少数网点拥有超速运算能力,而大量网点由PC机构成…….信息分布不均:比如名字信息、地址信息等。这些信息往往以数据库形式存在于少数特权主机当中,供局部或全局访问。这些信息一般具有公用性,为了节约整个网络的资源,没有必要在每一台机器上都维持一个拷贝。不均等现象不可避免,而客户-服务器模式体现了这种现象并很好地适应了这种现象。5为什么选择客户-服务器模式第一个原因:互联网中资源、运算能力第二个原因:是技术性的。
互联网进程通信与单机进程通信不同:互联网通信完全是异步的,无法知道哪个主机会在何时发起通信。因此,需要一种机制,为准备通信的进程之间建立联系,为两者的数据交换提供同步。
C/S模式是客观现实与技术实现相结合的产物!首先,什么是早期单机应用软件的工作方式?和早期单机应用软件一般只和本机资源交互,包括通信串/并口。当出现网络应用后,应用软件需要通过网络访问资源、交互信息,寻找一种基于网络的信息交互/计算分布模式。6第二个原因:是技术性的。C/S模式是客观现实与技术实现相结合网络中计算机进程间通信同样存在主叫和被叫,但没有振铃机制。通信进程间收/发协调怎么办?互联网采用最简单的约定方式—C/S模式电话通信的呼叫模式:主叫发起通信、被叫振铃和提机、开始通信。振铃机制实现依赖信令系统控制处理,协调双方通信(收/发)矛盾。在网络环境下,许多问题的解决往往是通过位于不同主机中的多个进程之间的通信和协同工作来完成的。网络的进程之间怎样相互协同开始工作,为什么要C/S模式?7网络中计算机进程间通信同样存在主叫和被叫,但没有振铃机制。通2000年前后,SIP协议的发展类似信令系统的互联网会话(呼叫)系统,可定义更丰富的会话模式。传统TCP/IP网络应用程序使用客户/服务器模式,但C/S不是所有应用交互会话模式,如IP电话、视频会议、多方游戏等。在客户-服务器模式中,每次通信均由客户进程发起,服务器进程从开机起就处于等待状态。这可保证服务器随时对客户请求做出响应82000年前后,SIP协议的发展类似信令系统的互联网会话(呼C/S模式是约定客户请求(发起)通信、服务器响应通信(提供特定的服务),基本可以理解为请求/应答的分布计算(会话)模式。互联网将网络软件分为客户(client)、服务器(server),客户和服务器都指通信中所涉及的两个应用进程。即本质是计算机软件。9C/S模式是约定客户请求(发起)通信、服务器响应通信(提供特客户软件的特点在进行通信时临时成为客户,但它也可在本地进行其他的计算,提供用户端基本应用功能框架。被用户调用,在用户本地计算机上运行,在需要时主动向远地服务器发起通信。可与多个服务器进行通信。通常不需要特殊的硬件和很复杂的操作系统。
10客户软件的特点在进行通信时临时成为客户,但它也可在本地进行服务器软件的特点专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。在共享计算机上运行。当系统启动时即自动调用并一直不断地运行着。被动等待并接受来自多个客户的通信请求。一般需要强大的硬件和高级的操作系统支持。11服务器软件的特点专门用来提供某种服务的程序,可同时处理多个两个术语在C/S模式中:服务器:被动等待通信的程序。不是计算机。服务器级计算机:运行服务器软件的功能强大的计算机。硬件厂商把具有高速CPU、大容量存储器、功能强大的操作系统的计算机称为服务器,其实应该称为服务器级计算机。12两个术语在C/S模式中:硬件厂商把具有高速CPU、大容量存储数据链路层物理层运输层网络层数据链路层物理层运输层网络层①发起连接建立请求应用层应用层客户服务器因特网②接受连接接受请求计算机A计算机B1C/S工作建立过程请求、应答、数据交互,TCP/IP系统支持。C/S都需要TCP/IP系统支持C/S工作过程和并发13数据链路层物理层运输层网络层数据链路层物理层运输层网络层①C/S模式的传输机制面向连接传输:使用面向连接的传输协议时,两个应用必须首先建立一个连接,然后在该连接上发送数据。无连接传输:应用可以利用无连接接口在任何时间向任何目的发送消息。客户和服务器在通信时,既可以使用面向连接传输协议,又可以使用无连接传输协议。当使用面向连接传输时,客户需要首先形成一个到特定服务器的连接,该连接在客户发送请求和接收响应的过程中保持不变。当客户完成对服务的使用时,必须关闭这一连接。14C/S模式的传输机制面向连接传输:使用面向连接的传输协议时,一台计算机上可以运行多种服务器:1.充分利用硬件资源。硬件可以被多种服务所共享。减少系统管理负载。因为这种情况可以减少被管理的计算机系统的数量。如果对服务的需求比较低,那么把服务器合并到一台计算机上能够显著地减少开销,而且并不会明显地降低性能。15一台计算机上可以运行多种服务器:1.充分利用硬件资源。硬2服务器多重服务:单计算机可安装多服务器软件来提供多重服务,在等待的时候不占用资源,但同时响应需要系统较多资源支持数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1服务器1服务器2客户2因特网162服务器多重服务:单计算机可安装多服务器软件来提供多重服并发性
—客户-服务器交互模型的基础并发服务器可以同时为多个客户提供服务,并不需要每个客户等待前一个客户的请求完成大多数并发服务器都是动态操作的。即只有当请求到达时,服务器才会动态地为到来的请求创建一个新的线程。服务器程序由两部分组成:主线程和服务线程。主线程:负责接收请求并为请求创建一个服务线程来处理请求。并使服务器保持活跃状态,主线程在创建处理请求的服务线程之后,会等待另一个请求的到来。服务线程:负责处理每个请求,然后终止。如果N个客户同时请求一台计算机上的给定服务,则会有N+1个线程提供服务。主线程等待额外的请求,N个服务线程与每个客户进行交互在互联网中,客户发起请求完全是随机的,很有可能出现多个请求同时到达服务器的情况。17并发性
—客户-服务器交互模型的基础并发数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1因特网客户23服务器并发:服务器1*副本一个服务器同时响应多个请求,即服务器并发执行是基本的,而不是逐个响应。一个服务器软件包括:接收请求、处理单个请求和生成新线程三部分;当请求到达时,服务器将它交给一个控制线程(副本),和已有线程并发。服务器118数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据复杂的C/S交互:实际大型网络应用S软件系统中,C/S的交互可能是复杂的过程。1、客户应用不限制访问一个服务器,客户一个应用可以成为多个不同服务器(可能不同计算机上)的客户,要处理多个服务器通信。2、提供某种服务的服务器同时能成为另一个服务的客户,如文件服务器在进行文件服务处理时需要记录时间,可能又要访问时间服务器。3、可能发生服务器的循环依懒,在两个服务器间,或多服务器之间的依懒环。19复杂的C/S交互:实际大型网络应用S软件系统中,C/S的交互数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户协议端口号C与S之间怎样准确识别特定服务?20数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请求?解决方法:
传输协议为每种服务分配一个惟一的标识符,服务器和客户必须使用这一标识符。服务器开始运行时,它向本地协议软件注册它使用的服务标识符。客户访问远程服务器时,需要指定对应的服务标识符。客户计算机上的传输协议软件在发送请求时,向服务器计算机发送这一标识符,服务器计算机上的传输协议软件使用这一标识符决定处理这一请求的服务器程序。21一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请端口端口就是运输层服务访问点TSAP端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。服务器通过它明确所提供的服务22端口端口就是运输层服务访问点TSAP22FTPTELNETSMTPDNSTFTPSNMPTCPUDP2123255369161应用层传输层端口层23FTSDTS2123255369161应用层传输层端口层23102823…..源端口目的端口TELNETB目的端口号=23把包发送到我的TELNET应用中AB24102823…..源端口目的端口TELNET目的端口号=23端口端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。25端口端口用一个16bit端口号进行标志。25两类端口一类是熟知端口,其数值一般为0~1023。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。26两类端口一类是熟知端口,其数值一般为0~1023。当一种TCP/IP定义的应用程序熟知端口:FTP:21,Telnet:23,SMTP:25,DNS:53,TFTP:69,HTTP:80,SNMP:161,协议端口号定义而一般端口,是可以由系统开发人员随时定义分配的。27TCP/IP定义的应用程序熟知端口:协议端口号定义而一般端口名称TCP端口号TCP端口号描述EchoDiscardDaytimeChargenTime7913193779131937服务器返回客户发送的所有内容服务器丢弃客户发送的所有内容服务器以可读形式返回日期与时间当客户发一个数据报时,服务器发送一连续字符流,直至客户中断连接;UDP发一随机长度的数据报从服务器返回一个32bit数,表示UTC时间1900.1.1午夜至今的秒数通常TCP/IP的主要端口号:1—225之间,端口号256—1023由Unix系统占用,端口号1024—5000作为临时端口分配,5000以上(作为其他服务器)不常出现。标准简单服务端口号28名称TCPTCP描述Echo77服务器返回客户发送的所有内容为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时自指定的,只具有本地意义?
为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时指定的?答:协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。一计算机可以有多个应用进程,通过不同的端口号(源不同/目的相同,源同/目的不同,均不同),同时进行多任务处理,此时TCP/UDP、IP完成复用与分用。
协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。29为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按实际通过TCP应用,除端口外,还必须有IP地址。
TCP连接的两个端点(端与端通信),是由端点地址(IP地址,端口号)确定,(IP地址,端口号)也被称为插口(Socket),或者端地址(EndpointAddress)。实际通过TCP通信,除端口外,为什么必须有IP地址?30实际通过TCP应用,除端口外,还必须有IP地址。TCP连接TCP/UDP协议插口04101631
源端口
目的端口
TCP/UDP头部数据其它字段TCP/UDP头部数据IP头部32bit源地址32bit目的地址其它字段从IP包结构看,网络应用进程通信需要端地址(IP地址,端口号)31TCP/UDP协议插口04第3.1总结1、什么是C/S工作模式?
2、网络应用为什么需要C/S模式?3、为什么通常服务器软件复杂?4、应用进程通信端口地址,为什么还要IP地址?是否需要物理网地址?32第3.1总结1、什么是C/S工作模式?2、网络应用为什第3.1章作业1、客户软件和服务器软件主要特点。2、一个服务器软件通常需要包括哪些主要的功能部分。3、为什么通常服务器端口号是唯一定义的,而客户端的端口号可以临时指定?
33第3.1章作业1、客户软件和服务器软件主要特点。33第3.2节、应用程序接口API3.2.1应用程序接口概述3.2.2套接字API基本结构3.2.3实现套接字API的过程3.2.4套接字API的其它问题3.2.5套接字API实现实例34第3.2节、应用程序接口API3.2.1应用程序接口概述3第3.2节:重点与难点1、应用编程接口的概念与重要性2、套接字API的特点/函数/参数3、Socket套接字API实现的基本过程重点理解:主要了解:1、套接字API主要过程的作用2、套接字继承与服务器并发35第3.2节:重点与难点1、应用编程接口的概念与重要性重点理解3.2.1应用程序接口概述C/S模式解决了应用程序通过互联网交互方式—等待/请求,并通过端口号来标识服务器提供的某种服务。尽管TCP/IP并不复杂,但应用程序编写当然不希望每次逐一填写TCP/IP的各个报头;应用程序对网络低层通信细节实际不想关心,所以在应用程序和通信网络之间怎样形成标准的接口—API,应用程序只需要通过API就能完成通信和数据交互,是网络应用发展的一大进步。互联网应用程序怎样和TCP/IP协议通信接口?即C、S编程怎样使用TCP/IP协议进行通信与数据交互。传统通过网络(DDN、FR、ATM)的交互,使用计算机串行接口或LAN仿真,通信网把数据传递到对方计算机,其余需要计算机应用处理。网络编程接口发展背景存在问题:1、计算机应用和网络两层皮;2、计算机应用必须和底层硬件(接口)打交道;严重阻碍网络应用发展。363.2.1应用程序接口概述C/S模式解决了应用程序通过互数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户应用进程通过端地址建立可靠双工通信连接和收发数据,应用程序或编程人员怎样处理各种协议(TCP/IP/IGMP)的具体报格式?需要逐一包文内容填写?37数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个实际互联网应用程序只需要通过API完成通信和数据交互的调用,从而不需要处理网络的细节,是网络应用发展的一大进步。API体现了现代网络又一个重要思想——应用程序与网络“一体”又“分离”。一体:把网络通信对上抽象API成为计算机体系组成部分,网络API定义与设计已成为所有处理网络应用与网络通信底层接口的实际方法,在3G/4G,NGN网络中最大标准组就是解决其API的问题。分离:实现高效、简捷API,就意味着实现应用与网络通信底层“分离”,就可不关心通信实现的细节,大大降低了网络应用开发难度,促进应用发展。38实际互联网应用程序只需要通过API完成通信和数据交互的调用,应用程序接口API是应用程序通过TCP/IP协议软件进行通信交互的接口,它是一组定义的操作(非硬件),API决定了网络应用所能达到功能和这些功能编程开发的难度。应用程序接口API是一般由操作系统(或编程系统)提供,是由应用程序调用的一个过程及过程所需的参数。通常一个API基本操作是独立过程,如API一个过程完成建立通信,另一个过程完成数据接收。应用程序接口API概念API:ApplicationProgramInterface,应用程序接口或应用编程接口39应用程序接口API是应用程序通过TCP/IP协议软件进行通信通信协议只是规定协议应该提供的操作,并不指定应用程序与协议进行交互时的API。协议端口与API接口有什么区别?协议端口是服务器软件的标识,16位整数;API是一个执行过程。40通信协议只是规定协议应该提供的操作,并不指定应用程序与协议进套接字API(SocketAPI)互联网API主要有两类:1、伯克利版API(SocketAPI,称为套接字API),从BSDUnix版发展而来。2、A&AT版TLI运输层接口TransportLayInterface尽管互联网允许OS系统选择API,但目前Windows(WinSoc)、Unix、Linux主流OS系统广泛接受套接字API,所以成为事实上标准。套接字API是操作系统的一个组成部分。41套接字API(SocketAPI)互联网API主要有两类:SocketAPI:应用程序与TCP/IP协议之间的接口,它作为一种通用的通信编程接口而设计。42SocketAPI:应用程序与TCP/IP协议之间的接口,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
43Socket是应用层与TCP/IP协议族通信的中间软件抽象层套接字API的基本结构套接字API是Unix操作系统的发展而来的,套接字API网络通信描述基本保持Unix对设备、文件的操作风格。如Unix文件操作采用“open—read—write—close”过程模式,首先产生一个操作的描述符,然后每个过程由函数+参数具体组成。套接字API同样用描述符的方法,在使用通信协议前必须申请操作系统生成一个套接字,系统返回一个小整型数(如3、5)作为描述符来识别这个套接字,以后通信过程中这个套接字作为参数,而不必每次传输时指明细节。44套接字API的基本结构套接字API是Unix操作系统的发展而API过程中应用程序选择的端口、通信地址、客户或服务器、使用协议等怎么表达呢?套接字API通过定义多个函数(而不是单个,为什么?),来确定参数和选项;既当创建套接字描述符后,调用多个函数过程说明套接字使用的具体细节。总结:套接字API的使用是通过首先创建套接字(返回整型描述符),然后调用多个包含具体参数和选项的函数过程,完成应用程序和协议通信的接口。为什么是多个而不是单个,单个绝对不行吗?45API过程中应用程序选择的端口、通信地址、客户或服务器、使用实现套接字API的过程Socket过程该过程创建一个套接字并返回一个整数描述字。descriptor=socket(protofamily,type,protocol)close过程该过程告诉系统终止对套接字的使用。close(socket)bind过程服务器使用该过程来提供服务器所使用的、用于等待连接的协议端口号。bind(socket,localaddr,addrlen)46实现套接字API的过程Socket过程该过程创建一个套接listen过程服务器调用该过程来等待来自客户的连接。listen(socket,queuesize)accept过程面向连接的服务器必须调用accept过程才能接收下一个连接请求。newsock=accept(socket,caddress,caddresslen)connect过程客户调用该过程建立与特定服务器之间的连接。connect(socket,saddress,saddresslen)47listen过程服务器调用该过程来等待来自客户的连接。asend过程如果套接字被连接,可以利用该过程发送数据。send(socket,data,length,flags)sendto过程和sendmsg过程允许客户或服务器使用无连接套接字发送数据。sendto(socket,data,length,flags,destaddress,addresslen)sendmsg(socket,msgstruct,flags)是一个结构,该结构包含了关于目的地址,目的地址的长度,发送的消息,以及消息的长度等信息。48send过程如果套接字被连接,可以利用该过程发送数据。srecv过程应用可以调用该过程从连接套接字中接收数据。recv(socket,buffer,length,flags)recvfrom过程和recvmsg过程如果套接字并没有被连接,应用可以用于接收来自任意发送者的消息recvfrom(socket,buffer,length,flags,sndraddr,saddrlen)recvmsg(socket,msgstruct,flags)是一个结构,该结构含有接收消息的地址和发送者的IP地址。49recv过程应用可以调用该过程从连接套接字中接收数据。r实现套接字API的过程1、创建一个套接字并返回一个返回整型描述符DescriAptor=socket(pf,type,protocol)Pf:协议栈TCP/IP/AppleTalk,type:连接/无连接,protocol:具体协议tcp/udp2、Bind过程Bind(socket,locaaddr,addrlen)服务器使用Bind过程赋予套接字特定的端地址,实现socket和端地址联编,使用无连接协议时已准备好接收信息。Locaaddr是本地端地址的一般socket地址描述结构,TCP/IP地址和协议端口号将按socket地址结构表达。50实现套接字API的过程1、创建一个套接字并返回一个返回整型描4、Listen过程Listen(socket,queuesize)如服务器是面向连接的,需要使用Listen过程将套接字设置为被动模式,然后必须接受一个连接请求。Queuesize:客户请求队列的长度,开始为空。3、Close过程close(socket)close过程的调用告诉系统终止对一个套接字socket的使用,系统对套接字进行释放,应用程序与传输协议间停止数据交互。如果套接字在使用面向连接的传输时,在关闭套接字前先关闭连接。514、Listen过程3、Close过程515、Accept过程newsock=accept(caddress,caddresslen)使用面向连接通信时,Accept过程在套接字中确定了连接客户的地址,服务器通过调用Accept过程接受下一个连接。然后Accept为该连接创建一个新套接字newsock返回调用者,服务器将用这个新套接字和客户通信,直至与该客户通信结束。caddress:按照socket地址结构表达的客户端IP地址。4-5步骤是面向连接通信时服务器必须的过程调用,完成被动地接受一个连接请求,然后创建一个服务器与特定客户TCP连接的新的套接字,依次通信,同时原套接字仍保持不变;当该客户连接结束后,使用原套接字接受来自下一个客户的连接。525、Accept过程4-5步骤是面向连接通信时服务器必须的过6、客户端Connect过程Connect(socket,saddress,saddresslen)当使用面向连接的TCP,Connect过程启动一个指定服务器的运输层连接,本质上说Connect是客户与已经调用了Accept过程的服务器进行连接的过程。saddress是按一般socket地址结构表达的服务器IP地址和协议端口号。非常有意思的是,当客户使用无连接的UDP协议时,也可以使用Connect过程,此时并不启动一个连接,而仅仅使得socket与服务器端地址联编。通常对无连接的传输一般每一个IP报指明目的地址,但许多应用客户只和一个服务器通信,也即具有同样的端目的地址。此时客户可以通过套接字的地址记录,发送多条信息,而不必每条指明地址。无连接传输的Connect过程调用,建立连续无地址的IP包传输,实际上理解为客户程序不需要给API指明端地址,而使用API默认地址。536、客户端Connect过程非常有意思的是,当客户使用无连接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是包括目的地址、地址长度,待发信息位置和信息长度的结构表达(具体不展开)。允许客户或服务器使用无连接套接字发送数据。547、Send过程sendto(socket,data,l8、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地址。558、Recv过程recvfrom(socket,buff其他套接子过程: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其他套接子过程:1.getpeername过程:服务器在调用客户-服务器模式的socket实现框架服务器Socket()bind()listen()accept()阻塞,等待客户连接请求recv()处理服务请求send()Socket()connect()send()recv()客户建立连接服务请求服务响应面向连接的客户-服务器服务器必须首先启动,直到它执行完accept()调用,进入等待状态后,方能接受客户请求。假如客户先启动,则connect()将返回出错代码,连接不成功。服务器端地址联编创建套接字等待连接请求,请求队列长度客户地址新套接字建立连接服务器端地址获取IP地址与定义端口57客户-服务器模式的socket实现框架服务器Socket(套接字、并发与线程套接字API设计需要适应服务器并发,当服务器并发创建一个副本时,每个新创建的线程从创建的线程继承所有套接字的一个副本,也即继承拥有了所有套接字的访问权。一个并发服务器首先打开一个套接字以接受连接,但系统在连接请求到达时,接着创建一个新套接字处理特定的连接;主线程不使用新的套接字,新线程也不会使用旧套接字。58套接字、并发与线程套接字API设计需要适应服务器并发,当服务简单例子的API实例:客户建立一个与服务器的连接,然后等待输出。当一个连接请求到达时,服务器创建一条ASCII文本消息,记录访问它的客户的数目,然后通过连接发送这一消息,最后关闭连接。客户显示接收的数据,然后退出。如果一个客户向该服务器连接了10次,则客户接到并打印的信息为:Thisserverhasbeencontacted10times.59简单例子的API实例:客户建立一个与服务器的连接,然后等待输该实例套接字过程调用顺序getprotobynamesocketbindlistenacceptsendclose服务器客户gethostbynamegetprotobynamesocketconnectrecvclose产生协议内部二进制标识创建一个套接字说明一个本地协议端口将该套接字置于被动方式接收连结请求向客户发送报文关闭新的连结无限循环将计算机名转换为IP地址跟服务器建立连结接收来自服务器的数据这是客户构造一个连接并等待服务器输出,一个服务器每收到一个请求返回一个可打印信息的,然后关闭连接的实例,对SocketAPI的调用过程。Getprotobyname是计算机名(IP地址)转化Socket使用的二进制形式。60该实例套接字过程调用顺序getprotobynamesock为什么客户端没有Socket与端地址联编(绑定)?对客户端来说:本地IP地址是确定,而端口定义也是只有本地意义缺省(即可以使用缺省),所以Socket过程不需特别绑定,在IP/TCP/UDP;而服务器则一定需要端口绑定Bind过程。61为什么客户端没有Socket与端地址联编(绑定)?61套接字API实现的主要过程:Bind创建套接字Listen协议连接方式服务器端地址联编连接等待连接请求,请求队列长度Accept客户地址新套接字建立连接SendRecvConnect服务器端地址SendRecvSendtoRecvto非连接服务器:客户:创建套接字客户:创建套接字有连接服务无连接服务Close本地机IP地址与默认端口获取IP地址与定义端口62套接字API实现的主要过程:Bind创建套接字List作业1、API是否由TCP/IP所定义的,目前互联网最常用的API体系是什么。2、API接口与协议端口、插口有什么区别?3、对一个面向连接的TCP通信,服务器端套接字API的实现要经过那些过程调用?4、对一个非连接通信,客户端套接字API的实现要经过那些过程调用?答2:两者都是应用程序与通信层交互所定义的。但API是编程接口,用一组编程规范来解决应用程序怎样调用TCP/IP通信;而协议端口只是TCP中的一个参数,指明通信是与哪一个应用程序交互。63作业1、API是否由TCP/IP所定义的,目前互联网最常用的思考题有人认为API是应用程序和互联网之间的接口,也有人说API是应用程序与操作系统之间的接口,哪种说法正确,为什么?64思考题有人认为API是应用程序和互联网之间的接口,也有增强品质意识,强化安全观念。11月-2211月-22Sunday,November6,2022是建立洁净亮丽,整齐舒适,安全高效的法宝。01:00:1801:00:1801:0011/6/20221:00:18AM清洁-拥有清爽明亮的工作环境。11月-2201:00:1801:00Nov-2206-Nov-22太太平平万家康乐,安安顺顺事业腾飞。01:00:1801:00:1801:00Sunday,November6,2022质量是交通建设的灵魂和生命。11月-2211月-2201:00:1801:00:18November6,2022麻痹是最大的隐患失职是最大的祸根。2022年11月6日1:00上午11月-2211月-22一心一意保安全,同心同德谋发展。06十一月20221:00:18上午01:00:1811月-22隐患不除,危机四伏。十一月221:00上午11月-2201:00November6,2022市场调查勤分析,掌握顾客之所需。2022/11/61:00:1801:00:1806November2022以厂为校,以厂为家,互相学习,互相关怀。1:00:18上午1:00上午01:00:1811月-22学一分消防知识,多十分平安保障。11月-2211月-2201:0001:00:1801:00:18Nov-22相信自己,相信伙伴。2022/11/61:00:18Sunday,November6,2022麻痹是最大的隐患,失职是最大的祸根。11月-222022/11/61:00:1811月-22谢谢大家!增强品质意识,强化安全观念。11月-2211月-22Wedn第3章:互联网应用模式和API第3.1节、客户—服务器工作模式第3.2节、应用程序接口API66第3章:互联网应用模式和API第3.1节、客户—服务器工作模第3.1节、客户—服务器工作模式3.1.1C/S的基本概念3.1.2C/S关系与软件特点3.1.3C/S工作过程与并发3.1.4协议端口号谢希仁教材1.6节67第3.1节、客户—服务器工作模式3.1.1C/S的基本概念C/S模式部分的重点与难点1、C/S模式的基本概念2、C/S的工作过程,以及C/S软件的各自特点3、**协议端口号及应用4、插口地址概念重点理解:主要了解:1、熟知的协议端口号与使用2、互联网C/S工作模式与TCP/IP的关系3、服务器并发处理68C/S模式部分的重点与难点1、C/S模式的基本概念重点理解:相互作用的客户-服务器(Client/Server)模型在TCP/IP互联网中,进程间相互访问的模式主要是客户—服务器交互模式客户和服务器分别是两个应用程序(进程)。客户向服务器发出服务请求,服务器做出响应。服务器客户互联网进程(Process)就是运行中的程序。解决具体应用问题的逻辑处理和通信进程总称为“应用进程”。69相互作用的客户-服务器(Client/Server)模型为什么选择客户-服务器模式第一个原因:互联网中资源、运算能力和信息不均等的现实。资源、运算能力不均:小到一个物理网络,往往是某些主机拥有大容量的外存,某些主机只有很少外存或没有外存,有些主机拥有打印机,有些主机没有;大到整个互联网,少数网点拥有超速运算能力,而大量网点由PC机构成…….信息分布不均:比如名字信息、地址信息等。这些信息往往以数据库形式存在于少数特权主机当中,供局部或全局访问。这些信息一般具有公用性,为了节约整个网络的资源,没有必要在每一台机器上都维持一个拷贝。不均等现象不可避免,而客户-服务器模式体现了这种现象并很好地适应了这种现象。70为什么选择客户-服务器模式第一个原因:互联网中资源、运算能力第二个原因:是技术性的。
互联网进程通信与单机进程通信不同:互联网通信完全是异步的,无法知道哪个主机会在何时发起通信。因此,需要一种机制,为准备通信的进程之间建立联系,为两者的数据交换提供同步。
C/S模式是客观现实与技术实现相结合的产物!首先,什么是早期单机应用软件的工作方式?和早期单机应用软件一般只和本机资源交互,包括通信串/并口。当出现网络应用后,应用软件需要通过网络访问资源、交互信息,寻找一种基于网络的信息交互/计算分布模式。71第二个原因:是技术性的。C/S模式是客观现实与技术实现相结合网络中计算机进程间通信同样存在主叫和被叫,但没有振铃机制。通信进程间收/发协调怎么办?互联网采用最简单的约定方式—C/S模式电话通信的呼叫模式:主叫发起通信、被叫振铃和提机、开始通信。振铃机制实现依赖信令系统控制处理,协调双方通信(收/发)矛盾。在网络环境下,许多问题的解决往往是通过位于不同主机中的多个进程之间的通信和协同工作来完成的。网络的进程之间怎样相互协同开始工作,为什么要C/S模式?72网络中计算机进程间通信同样存在主叫和被叫,但没有振铃机制。通2000年前后,SIP协议的发展类似信令系统的互联网会话(呼叫)系统,可定义更丰富的会话模式。传统TCP/IP网络应用程序使用客户/服务器模式,但C/S不是所有应用交互会话模式,如IP电话、视频会议、多方游戏等。在客户-服务器模式中,每次通信均由客户进程发起,服务器进程从开机起就处于等待状态。这可保证服务器随时对客户请求做出响应732000年前后,SIP协议的发展类似信令系统的互联网会话(呼C/S模式是约定客户请求(发起)通信、服务器响应通信(提供特定的服务),基本可以理解为请求/应答的分布计算(会话)模式。互联网将网络软件分为客户(client)、服务器(server),客户和服务器都指通信中所涉及的两个应用进程。即本质是计算机软件。74C/S模式是约定客户请求(发起)通信、服务器响应通信(提供特客户软件的特点在进行通信时临时成为客户,但它也可在本地进行其他的计算,提供用户端基本应用功能框架。被用户调用,在用户本地计算机上运行,在需要时主动向远地服务器发起通信。可与多个服务器进行通信。通常不需要特殊的硬件和很复杂的操作系统。
75客户软件的特点在进行通信时临时成为客户,但它也可在本地进行服务器软件的特点专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。在共享计算机上运行。当系统启动时即自动调用并一直不断地运行着。被动等待并接受来自多个客户的通信请求。一般需要强大的硬件和高级的操作系统支持。76服务器软件的特点专门用来提供某种服务的程序,可同时处理多个两个术语在C/S模式中:服务器:被动等待通信的程序。不是计算机。服务器级计算机:运行服务器软件的功能强大的计算机。硬件厂商把具有高速CPU、大容量存储器、功能强大的操作系统的计算机称为服务器,其实应该称为服务器级计算机。77两个术语在C/S模式中:硬件厂商把具有高速CPU、大容量存储数据链路层物理层运输层网络层数据链路层物理层运输层网络层①发起连接建立请求应用层应用层客户服务器因特网②接受连接接受请求计算机A计算机B1C/S工作建立过程请求、应答、数据交互,TCP/IP系统支持。C/S都需要TCP/IP系统支持C/S工作过程和并发78数据链路层物理层运输层网络层数据链路层物理层运输层网络层①C/S模式的传输机制面向连接传输:使用面向连接的传输协议时,两个应用必须首先建立一个连接,然后在该连接上发送数据。无连接传输:应用可以利用无连接接口在任何时间向任何目的发送消息。客户和服务器在通信时,既可以使用面向连接传输协议,又可以使用无连接传输协议。当使用面向连接传输时,客户需要首先形成一个到特定服务器的连接,该连接在客户发送请求和接收响应的过程中保持不变。当客户完成对服务的使用时,必须关闭这一连接。79C/S模式的传输机制面向连接传输:使用面向连接的传输协议时,一台计算机上可以运行多种服务器:1.充分利用硬件资源。硬件可以被多种服务所共享。减少系统管理负载。因为这种情况可以减少被管理的计算机系统的数量。如果对服务的需求比较低,那么把服务器合并到一台计算机上能够显著地减少开销,而且并不会明显地降低性能。80一台计算机上可以运行多种服务器:1.充分利用硬件资源。硬2服务器多重服务:单计算机可安装多服务器软件来提供多重服务,在等待的时候不占用资源,但同时响应需要系统较多资源支持数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1服务器1服务器2客户2因特网812服务器多重服务:单计算机可安装多服务器软件来提供多重服并发性
—客户-服务器交互模型的基础并发服务器可以同时为多个客户提供服务,并不需要每个客户等待前一个客户的请求完成大多数并发服务器都是动态操作的。即只有当请求到达时,服务器才会动态地为到来的请求创建一个新的线程。服务器程序由两部分组成:主线程和服务线程。主线程:负责接收请求并为请求创建一个服务线程来处理请求。并使服务器保持活跃状态,主线程在创建处理请求的服务线程之后,会等待另一个请求的到来。服务线程:负责处理每个请求,然后终止。如果N个客户同时请求一台计算机上的给定服务,则会有N+1个线程提供服务。主线程等待额外的请求,N个服务线程与每个客户进行交互在互联网中,客户发起请求完全是随机的,很有可能出现多个请求同时到达服务器的情况。82并发性
—客户-服务器交互模型的基础并发数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1因特网客户23服务器并发:服务器1*副本一个服务器同时响应多个请求,即服务器并发执行是基本的,而不是逐个响应。一个服务器软件包括:接收请求、处理单个请求和生成新线程三部分;当请求到达时,服务器将它交给一个控制线程(副本),和已有线程并发。服务器183数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据复杂的C/S交互:实际大型网络应用S软件系统中,C/S的交互可能是复杂的过程。1、客户应用不限制访问一个服务器,客户一个应用可以成为多个不同服务器(可能不同计算机上)的客户,要处理多个服务器通信。2、提供某种服务的服务器同时能成为另一个服务的客户,如文件服务器在进行文件服务处理时需要记录时间,可能又要访问时间服务器。3、可能发生服务器的循环依懒,在两个服务器间,或多服务器之间的依懒环。84复杂的C/S交互:实际大型网络应用S软件系统中,C/S的交互数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户协议端口号C与S之间怎样准确识别特定服务?85数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请求?解决方法:
传输协议为每种服务分配一个惟一的标识符,服务器和客户必须使用这一标识符。服务器开始运行时,它向本地协议软件注册它使用的服务标识符。客户访问远程服务器时,需要指定对应的服务标识符。客户计算机上的传输协议软件在发送请求时,向服务器计算机发送这一标识符,服务器计算机上的传输协议软件使用这一标识符决定处理这一请求的服务器程序。86一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请端口端口就是运输层服务访问点TSAP端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。服务器通过它明确所提供的服务87端口端口就是运输层服务访问点TSAP22FTPTELNETSMTPDNSTFTPSNMPTCPUDP2123255369161应用层传输层端口层88FTSDTS2123255369161应用层传输层端口层23102823…..源端口目的端口TELNETB目的端口号=23把包发送到我的TELNET应用中AB89102823…..源端口目的端口TELNET目的端口号=23端口端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。90端口端口用一个16bit端口号进行标志。25两类端口一类是熟知端口,其数值一般为0~1023。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。91两类端口一类是熟知端口,其数值一般为0~1023。当一种TCP/IP定义的应用程序熟知端口:FTP:21,Telnet:23,SMTP:25,DNS:53,TFTP:69,HTTP:80,SNMP:161,协议端口号定义而一般端口,是可以由系统开发人员随时定义分配的。92TCP/IP定义的应用程序熟知端口:协议端口号定义而一般端口名称TCP端口号TCP端口号描述EchoDiscardDaytimeChargenTime7913193779131937服务器返回客户发送的所有内容服务器丢弃客户发送的所有内容服务器以可读形式返回日期与时间当客户发一个数据报时,服务器发送一连续字符流,直至客户中断连接;UDP发一随机长度的数据报从服务器返回一个32bit数,表示UTC时间1900.1.1午夜至今的秒数通常TCP/IP的主要端口号:1—225之间,端口号256—1023由Unix系统占用,端口号1024—5000作为临时端口分配,5000以上(作为其他服务器)不常出现。标准简单服务端口号93名称TCPTCP描述Echo77服务器返回客户发送的所有内容为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时自指定的,只具有本地意义?
为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时指定的?答:协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。一计算机可以有多个应用进程,通过不同的端口号(源不同/目的相同,源同/目的不同,均不同),同时进行多任务处理,此时TCP/UDP、IP完成复用与分用。
协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。94为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按实际通过TCP应用,除端口外,还必须有IP地址。
TCP连接的两个端点(端与端通信),是由端点地址(IP地址,端口号)确定,(IP地址,端口号)也被称为插口(Socket),或者端地址(EndpointAddress)。实际通过TCP通信,除端口外,为什么必须有IP地址?95实际通过TCP应用,除端口外,还必须有IP地址。TCP连接TCP/UDP协议插口04101631
源端口
目的端口
TCP/UDP头部数据其它字段TCP/UDP头部数据IP头部32bit源地址32bit目的地址其它字段从IP包结构看,网络应用进程通信需要端地址(IP地址,端口号)96TCP/UDP协议插口04第3.1总结1、什么是C/S工作模式?
2、网络应用为什么需要C/S模式?3、为什么通常服务器软件复杂?4、应用进程通信端口地址,为什么还要IP地址?是否需要物理网地址?97第3.1总结1、什么是C/S工作模式?2、网络应用为什第3.1章作业1、客户软件和服务器软件主要特点。2、一个服务器软件通常需要包括哪些主要的功能部分。3、为什么通常服务器端口号是唯一定义的,而客户端的端口号可以临时指定?
98第3.1章作业1、客户软件和服务器软件主要特点。33第3.2节、应用程序接口API3.2.1应用程序接口概述3.2.2套接字API基本结构3.2.3实现套接字API的过程3.2.4套接字API的其它问题3.2.5套接字API实现实例99第3.2节、应用程序接口API3.2.1应用程序接口概述3第3.2节:重点与难点1、应用编程接口的概念与重要性2、套接字API的特点/函数/参数3、Socket套接字API实现的基本过程重点理解:主要了解:1、套接字API主要过程的作用2、套接字继承与服务器并发100第3.2节:重点与难点1、应用编程接口的概念与重要性重点理解3.2.1应用程序接口概述C/S模式解决了应用程序通过互联网交互方式—等待/请求,并通过端口号来标识服务器提供的某种服务。尽管TCP/IP并不复杂,但应用程序编写当然不希望每次逐一填写TCP/IP的各个报头;应用程序对网络低层通信细节实际不想关心,所以在应用程序和通信网络之间怎样形成标准的接口—API,应用程序只需要通过API就能完成通信和数据交互,是网络应用发展的一大进步。互联网应用程序怎样和TCP/IP协议通信接口?即C、S编程怎样使用TCP/IP协议进行通信与数据交互。传统通过网络(DDN、FR、ATM)的交互,使用计算机串行接口或LAN仿真,通信网把数据传递到对方计算机,其余需要计算机应用处理。网络编程接口发展背景存在问题:1、计算机应用和网络两层皮;2、计算机应用必须和底层硬件(接口)打交道;严重阻碍网络应用发展。1013.2.1应用程序接口概述C/S模式解决了应用程序通过互数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户应用进程通过端地址建立可靠双工通信连接和收发数据,应用程序或编程人员怎样处理各种协议(TCP/IP/IGMP)的具体报格式?需要逐一包文内容填写?102数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个实际互联网应用程序只需要通过API完成通信和数据交互的调用,从而不需要处理网络的细节,是网络应用发展的一大进步。API体现了现代网络又一个重要思想——应用程序与网络“一体”又“分离”。一体:把网络通信对上抽象API成为计算机体系组成部分,网络API定义与设计已成为所有处理网络应用与网络通信底层接口的实际方法,在3G/4G,NGN网络中最大标准组就是解决其API的问题。分离:实现高效、简捷API,就意味着实现应用与网络通信底层“分离”,就可不关心通信实现的细节,大大降低了网络应用开发难度,促进应用发展。103实际互联网应用程序只需要通过API完成通信和数据交互的调用,应用程序接口API是应用程序通过TCP/IP协议软件进行通信交互的接口,它是一组定义的操作(非硬件),API决定了网络应用所能达到功能和这些功能编程开发的难度。应用程序接口API是一般由操作系统(或编程系统)提供,是由应用程序调用的一个过程及过程所需的参数。通常一个API基本操作是独立过程,如API一个过程完成建立通信,另一个过程完成数据接收。应用程序接口API概念API:ApplicationProgramInterface,应用程序接口或应用编程接口104应用程序接口API是应用程序通过TCP/IP协议软件进行通信通信协议只是规定协议应该提供的操作,并不指定应用程序与协议进行交互时的API。协议端口与API接口有什么区别?协议端口是服务器软件的标识,16位整数;API是一个执行过程。105通信协议只是规定协议应该提供的操作,并不指定应用程序与协议进套接字API(SocketAPI)互联网API主要有两类:1、伯克利版API(SocketAPI,称为套接字API),从BSDUnix版发展而来。2、A&AT版TLI运输层接口TransportLayInterface尽管互联网允许OS系统选择API,但目前Windows(WinSoc)、Unix、Linux主流OS系统广泛接受套接字API,所以成为事实上标准。套接字API是操作系统的一个组成部分。106套接字API(SocketAPI)互联网API主要有两类:SocketAPI:应用程序与TCP/IP协议之间的接口,它作为一种通用的通信编程接口而设计。107SocketAPI:应用程序与TCP/IP协议之间的接口,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
108Socket是应用层与TCP/IP协议族通信的中间软件抽象层套接字API的基本结构套接字API是Unix操作系统的发展而来的,套接字API网络通信描述基本保持Unix对设备、文件的操作风格。如Unix文件操作采用“open—read—write—close”过程模式,首先产生一个操作的描述符,然后每个过程由函数+参数具体组成。套接字API同样用描述符的方法,在使用通信协议前必须申请操作系统生成一个套接字,系统返回一个小整型数(如3、5)作为描述符来识别这个套接字,以后通信过程中这个套接字作为参数,而不必每次传输时指明细节。109套接字API的基本结构套接字API是Unix操作系统的发展而API过程中应用程序选择的端口、通信地址、客户或服务器、使用协议等怎么表达呢?套接字API通过定义多个函数(而不是单个,为什么?),来确定参数和选项;既当创建套接字描述符后,调用多个函数过程说明套接字使用的具体细节。总结:套接字API的使用是通过首先创建套接字(返回整型描述符),然后调用多个包含具体参数和选项的函数过程,完成应用程序和协议通信的接口。为什么是多个而不是单个,单个绝对不行吗?110API过程中应用程序选择的端口、通信地址、客户或服务器、使用实现套接字API的过程Socket过程该过程创建一个套接字并返回一个整数描述字。descriptor=socket(protofamily,type,protocol)close过程该过程告诉系统终止对套接字的使用。close(socket)bind过程服务器使用该过程来提供服务器所使用的、用于等待连接的协议端口号。bind(socket,localaddr,addrlen)111实现套接字API的过程Socket过程该过程创建一个套接listen过程服务器调用该过程来等待来自客户的连接。listen(socket,queuesize)accept过程面向连接的服务器必须调用accept过程才能接收下一个连接请求。newsock=accept(socket,caddress,caddresslen)connect过程客户调用该过程建立与特定服务器之间的连接。connect(socket,saddress,saddresslen)112listen过程服务器调用该过程来等待来自客户的连接。asend过程如果套接字被连接,可以利用该过程发送数据。send(socket,data,length,flags)sendto过程和sendmsg过程允许客户或服务器使用无连接套接字发送数据。sendto(socket,data,length,flags,destaddress,addresslen)sendmsg(socket,msgstruct,flags)是一个结构,该结构包含了关于目的地址,目的地址的长度,发送的消息,以及消息的长度等信息。113send过程如果套接字被连接,可以利用该过程发送数据。srecv过程应用可以调用该过程从连接套接字中接收数据。recv(socket,buffer,length,flags)recvfrom过程和recvmsg过程如果套接字并没有被连接,应用可以用于接收来自任意发送者的消息recvfrom(socket,buffer,length,flags,sndraddr,saddrlen)recvmsg(socket,msgstruct,flags)是一个结构,该结构含有接收消息的地址和发送者的IP地址。114recv过程应用可以调用该过程从连接套接字中接收数据。r实现套接字API的过程1、创建一个套接字并返回一个返回整型描述符DescriAptor=socket(pf,type,protocol)Pf:协议栈TCP/IP/AppleTalk,type:连接/无连接,protocol:具体协议tcp/udp2、Bind过程Bind(socket,locaaddr,addrlen)服务器使用Bind过程赋予套接字特定的端地址,实现socket和端地址联编,使用无连接协议时已准备好接收信息。Locaaddr是本地端地址的一般socket地址描述结构,TCP/IP地址和协议端口号将按socket地址结构表达。115实现套接字API的过程1、创建一个套接字并返回一个返回整型描4、Listen过程Listen(socket,queuesize)如服务器是面向连接的,需要使用Listen过程将套接字设置为被动模式,然后必须接受一个连接请求。Queuesize:客户请求队列的长度,开始为空。3、Close过程close(socket)close过程的调用告诉系统终止对一个套接字socket的使用,系统对套接字进行释放,应用程序与传输协议间停止数据交互。如果套接字在使用面向连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购销合同协议书模板示例
- 购销合同签订中的合同终止问题
- 购销框架合同范本及签订流程
- 软件开发及外包合同
- 轮胎购买合约范本
- 轻松培养小学生英语兴趣的方法解析
- 迟到情况说明与保证
- 郑州地理一模解析版大地特征解析
- 配电箱设备安装安全技术规程
- 酒店服务合同的培训要求
- 配送部管理制度
- 脑卒中溶栓相关知识考核试卷(试题与答案)
- 物业小区档案管理
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
- 新苏教版2022-2023六年级科学上册《专项学习:像工程师那样》课件
- DB14T2392-2021 燃气锅炉能效指标与测试规则
- 小班主题审议爱上幼儿园新版ppt
- 《汽车文化》教案(全)
- 草地学21草地退化与恢复课件
- 2020年注册会计师(CPA)19第十九章债务重组(2020新教材版)课件
- 人教部编版《司马光》教学课件(23张)
评论
0/150
提交评论