第一节 应用程序接口概念(识记)

  • 网络操作系统中 应用程序编程接口 称为“ 网络API ”( Application Programming Interface ),也称为 应用程序接口 应用程序编程接口 是一组定义,程序及协议的集合,通过 API 接口可以实现计算机软件之间的相互通信。 API 的一个主要功能是提供通用的功能集。
  • 操作系统的用户接口包括 命令输入 系统调用 应用程序接口API 是完成某一个功能的多个系统调用或命令的组合,其功能是完成一个特定的操作。
  • 从网络的 开放系统互连参考模型 OSIRM )来看, API 所采用的基本构造技术就是分层使用。
  • 为了便于用户使用网络和开发网络应用程序,各种网络在各个层次上为用户和第三方开发者提供了方便灵活的编程接口。这些接口统称为 应用程序编程接口API
  • API同时也可以看作是一种中间件,为各种不同平台提供数据共享途径。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型。
    1. 远程过程调用 RPC )。远程过程调用通过作用在共享数据缓冲区中的进程(或任务)实现程序间的通信。
    2. 标准查询语句 SQL )。标准查询语句是标准的访问数据的查询语句,通过通用数据库实现应用程序间的数据共享。
    3. 文件传输 。文件传输通过发送结构化文件实现应用程序间数据共享。
    4. 信息交付 。信息交付指松耦合或紧耦合应用程序间的小型结构化信息,通过程序间的直接通信实现数据共享。
  • 某些商用产品会将 API 作为其公共开放的系统。即产品制定自己的系统接口标准,当需要执行系统整合,自定义和程序应用等操作时,系统所有成员都可以通过该接口标准调用程序代码,该接口也被称之为 开放式API 开放式API 目前有三种。
    1. AT&T的UNIX System V,提供的TLI/XTI接口。
    2. 伯克利的软件分发系统BSD,提供Socket接口。
    3. Microsoft的Windows系列,提供WinSock接口。

一,TLI/XTI概述(识记)

  • TLI Transport Layer Interface )一开始提供了一个传输层接口API。ISO传输服务为此定义了其所基于的模型。迄今为止,TLI提供了OSI传输层和会话层之间的API。
  • XTI X/Open Transport Interface )接口由TLI接口演变而来,代表该系列接口的未来发展方向。使用XTI与使用TLI接口的应用程序相兼容。新应用程序可以直接使用XTI接口,也可以将应用程序移植到XTI接口上。
  • TLI/XTI 是一组函数的集合, 它为用户提供传输层接口,包括建立通信连接,管理连接以及传送数据。应用程序利用这些函数实现网络通信,控制网络活动。

1,TLI/XTI结构

  • TLI/XTI把相互通信的两个进程称为端点。TLI/XTI提供网络通信的低层端点到端点的功能。TLI/XTI为用户应用进程提供了直接传输的接口。

二,TLI/XTI的服务模式(领会)

  • TLI/XTI提供了两种服务模式, 面向连接 的服务模式和 面向非连接 的服务模式。

三,套接字概念(识记)

  • 套接字 ( Socket ),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。

第二节 UNIX套接字及其应用(领会)

  • 套接字是通信的两方的一种约定,利用套接字中的相关函数来完成通信过程。有两种加入函数的方法,一种是直接加入支持TCP/IP的调用,另一种是加入支持一般网络协议的函数,而用参数来选择使用TCP/IP。Socket接口采用了后者,这样通信可以支持多协议簇,而TCP/IP只是其中之一。

套接字地址

  • Socket接口可以看成在两个进程进行通信中的一个端点。一个进程将一段信息写入Socket接口中,该Socket接口将这段信息发送给另外一个Socket接口中,使这段信息能传送到其他进程中。

  • 网络中Socket接口是如何找到目标的呢?

    • 在基于TCP/IP的网络中,每一个主机均被赋予一个唯一的计算机地址,称为IP地址,IP地址是一个32位的无符号二进制整数(仅限IPv4系统),通常以小数点按每8位一组分割。IP地址由四个部分组成,每个部分的范围都是0~255,是一个8位二进制地址。由于每台主机具有唯一的IP地址,所以信息会传递到目的主机而不会误送到其他主机。
    • 上述IP地址是指32位地址,这是IP协议版本4(IPv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正逐渐替代IPv4地址,IPv6地址则是128位无符号二进制整数。
    • 若同一主机中有多个程序,发送者如何能够将信息传送到目标程序而不会传送到其他程序中去呢?
    • 端口号(每一个基于TCP/IP网络通信的程序都被赋予了唯一的端口和端口号),端口是一个信息缓冲区,用于保留Socket接口中的输入/输出信息,端口号是一个16位无符号二进制整数,范围是0~65535,用来区别主机上的每一个进程,低于256的端口号保留给标准应用程序。在通信中,每一个套接字都组合进了IP地址,端口,端口号,这样形成的整体就可以认为每一个套接字传送的对象是可识别的。
  • 套接字是通信的基础,是支持TCP/IP的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。

  • 套接字可根据通信性质分类。应用程序一般仅在同一类的套接字间进行通信。若操作系统的底层通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型: 流套接字 数据报套接字 ,分别用于不同的场景。

  • 通信中套接字必须成对出现,其中一个运行于客户机端,称为 Client Socket ,另一个运行于服务器端,称为 Server Socket 。套接字之间的连接过程分成三个步骤: 服务器监听 客户端请求 连接确认

套接字函数

  • 创建套接字函数 socket

    #include <sys/socket.h>
    int socket(int family, int type, int protocol);
      
    • 创建成功返回非负的描述符;失败,返回-1。
    • 其中protocol一般取0(raw socket除外)
  • 绑定本地名称函数 bind

    #include <sys/socket.h>
    int bind(int sockfd, const struct sockaddr*myaddr, socklen_t addrlen);
      
    • 绑定正常返回0,失败返回-1。
    • 其中sockfdsocket返回。
  • 建立连接函数 connect

    #include <sys/socket.h>
    int connect(int sockfd, const struct sockaddr*servaddr, socklen_t addrlen);
      
    • 连接正常返回0,失败返回-1。
    • 其中sockfdsocket返回。
  • 侦听函数 listen

    #include <sys/socket.h>
    int listen(int sockfd, int backlog);
      
    • 侦听正常返回0,失败返回-1。
    • 该函数通常在socketblind函数调用后使用,且在accept调用前在服务器端运行。
  • 接收数据函数 accept

    #include <sys/socket.h>
    int accept(int sockfd, struct sockaddr*cliaddr, socklen_t*addrlen);
      
    • 接收正常返回非负的描述符,失败返回-1。
    • 其中sockfdsocket返回,cliaddraddrlen用于返回用户相应的进程的协议地址。
  • 关闭套接字函数 close

    #include <sys/socket.h>
    int close(int sockfd);
      
    • 正常关闭返回0,失败返回-1。

第三节 WinSock接口及其应用(领会)

一,WinSock概述

  • WinSock接口规范支持单一的通信域,即Internet域。各种进程在域中用Internet协议簇来相互进行通信。套接字可以根据通信性质分类。应用程序一般仅在同一类的套接字间通信。若底层的通信协议允许,不同类型的套接字间也可以通信。用户目前可以使用两种套接字:即 流套接字 数据报套接字
    • 流套接字提供了双向的,有序的,无重复并且无记录边界的数据流服务。
    • 数据报套接字支持双向的数据流,但并不保证是可靠,有序,无重复的。

二,WinSock接口实现网络通信

  • WinSock接口实现网络通信的典型范例便是客户机/服务器模型。
  • 在此模型中客户应用程序向服务器服务程序请求服务。这种方式是非对称的。在非对称协议中,一方固定地认为是主机,而另一方则认为是从机。当服务被提供时必然存在“客户进程”和“服务进程”。一个服务程序通常在一个默认的端口监听客户方对服务的请求,即服务进程一直是处于休眠状态,直到一个客户对这个服务提出了连接请求。此时,服务程序被“唤醒”并且为客户提供服务,即对客户的请求做出反应。
  • 在一次网络通信/连接中有以下几个参数需要被设置: 本地IP地址,本地端口号,对方端口号,对方IP地址
1.微内核提供一组最基本的服务和其他服务,通过 接口 连接到微内核。 2.微内核具有很好的扩展性,并可简化应用程序开发。 3.用户只运行他们需要的服务,有利于减少磁盘空间和存储器的要求。 4.某微内核和... 套 接口 (sockets),有时称为“Berkeley套 接口 ”,因为它源自Berkeley Unix。 XTI(X/Open传输 接口 ),它是对AT&T开发的传输层 接口 ( TLI )经少量修改的产物。 大多数的网络应用系统包括两部分:客户(client)与服务器(server),两者是通过通信链接的,其中又涉及到了网络通信协议,TCP/IP协议族(又称网际协议族) 在实际生活中,客户与服务器无需处于一个局域网内通信,也可以通过路由器(router,广域网的架构设备)作为传输节点 2、套接字是加州大学伯克利分校为其Unix操作系统版本开发的, TLI 是AT&amp;T(贝尔实验室)为Unix系统V3.0开发的 3、二者通信能力没有差别,但是语义差别很大,套接字是更好的选择。首先套接字具有更好的移植性,其次,套接字比XTI更好使用。... 网线t586a跟t586b有什么区别?网线水晶头偶偶T568A和T568B有什么不同?当我们在学习解除网线知识时,对于T568A和T568B这两种标准,很多人不知道有什么区别,分别是什么,网线t586a跟t586b有什... 协议如何通信 现代 网络操作系统 ,系统向程序员提供了基于Socket的TCP/IP 接口 ,在操作系统的核心中实现了TCP/IP协议的几个基本层次为:________;Socket 接口 属于操作系统提供用户 接口 的________ 接口 。   【分析】传输层协议、网络层协议和物理 接口 层是由操作系统内核来实现的。而用户并不能感觉到操作系统的工作,用户能知道的是应用程序。而应用程序依靠编程界面与内核联系,各种应用程序都是通过编程界面来开发的。   编程界面有两种形式:   由内核直接提供系统调用;   以库函数方式提供的各 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。计算机操作系统是用户与计算机的 接口 ,同时也是计算机硬件和其他软件的 接口 。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,用户和计算机的 接口 ,同时也是计算机硬件和其他软件的 接口 。其能管理计算机系统的硬件、软件及数据资源,控... 九、操作系统 接口 操作系统作为计算机系统资源的管理者,对系统中的所有硬件和软件资源进行统一的管理和操纵。无论是用户(程序)或OS的外层软件,凡是涉及到系统资源的有关操作,都必须作为服务请求提交给OS,由它来完成。为了使用户能方便地使用计算机,操作系统提供了相应的用户 接口 ,帮助用户快速、有效、安全、可靠地操纵计算机系统中的各类资源,完成相关的处理。一般地,操作系统向用户提供了两类 接口 ,即用户 接口 和程序 接口 。值得说明的是,在Internet广为流行的今天,OS又增加了一种面向网络的网络用户 接口 。 操作系统是用户与计算机硬件系统之间的 接口 ,OS向用户提供了如下两类 接口 : (1)用户 接口 :该 接口 支持用户与OS之间进行交互,即由用户向OS请求提供特定的服务,系统则把服务的结果返回给用户; (2)程序 接口 :OS向编程人员提供了“程序与操作系统的 接口 ”,简称程序 接口 ,也称应用程序API(Application Programming Interface)。该 接口 是为程序员在编程时使用,系统和应用... 答:OSI:开放式系统互联参考模型;ISO:国际标准化组织 2 OSI/RM模型没有被最终采用的原因是什么? 答:1、最主要的原因,是osi模型出现的比tcp/ip出现的时间晚,在osi开始使用前,TCP/IP已经被广泛的应用了