第五章 - 网络操作系统的接口
发布时间:2019-12-29 14:53来源:未知
第五章 网络操作系统的接口
一、本章复习建议
在历年考题中,本章主要出现在单项选择、填空、简答题中,其考察知识点平均分布在各节,学习层次包含识记、领会层面,建议学员在本章的学习过程中根据考核要求,全面掌握教材中各个考核知识点,在学习和复习阶段结合教材和相关例题、历年真题透彻理解本章节的相关内容。二、本章重要知识点讲解
第一节 5.1 应用程序接口的概念1.应用程序接口(API)是一组定义、程序及协议的集合,通过API接口可以实现计算机软件之间的相互通信。其主要功能是提供通用的功能集,程序员通过使用API函数开发应用程序,以减轻编程任务。 应用程序接口是完成某一个功能的多个系统调用和命令的组合。★
2.API有四种类型:(1)远程过程调用(RPC)、(2)标准查询语言(SQL)、(3)文件传输、(4)信息交付。★
3.一般的网络只在应用层、会话层、传输层和网络层提供接口API。
4. 主导地位的开放式API:
(1)是AT&T的UNIX system V,提供TLI/XTI接口;
(2)是伯克利的软件分布系统(BSD),提供Socket接口;
(3)是windows系列提供winsock接口。
(一)5.1.1 TLI/XTI函数 ★
1. TLI即传输层接口,提供OSI传输层和会话层之间的API;XTI即开放式传送接口,它由TLI接口演变而来。
2. TLI/XTI是一组函数的集合,为用户提供传输层接口,包括建立通信、管理连接以及传送数据,应用程序利用这些函数实现网络应用、控制底层的网络活动。
3. TLI/XTI把相互通信的两个进程称为端点,它提供网络应用底层端点到端点的通信,为用户应用进程提供了直接传输的接口。
4. t_open建立XTI端点,通过t_bind选择本地协议,inet_pton将网络字节转换为IPV4地址,t_connect建立网络连接,t_rcv从服务器上读取数据。
(二)5.1.2 TLI/XTI的服务模式
TLI/XTI提供两种服务模式:面向连接的服务模式和面向非连接的服务模式。面向连接的服务类似于打电话。面向非连接的服务过程类似于发送邮件的过程,通信的前提是要有一个邮箱。
【例题】用TLI进行面向连接的通信类似于
A.文件传输
B.广播通信
C.打电话
D.发送邮件
【答案】C
【解析】TLI/XTI提供两种服务模式:面向连接的服务模式和面向非连接的服务模式。面向连接的服务类似于打电话。面向非连接的服务过程类似于发送邮件的过程,所以C选项正确。
第二节 5.2 UNIX套接字及其应用
(一)5.2.1 套接字和套接字地址 ★
1. 套接字即Socket接口,是通信双方的一种约定,利用套接字中的相关函数来完成通信过程。
2. 在通信中,每一个套接字都组合进了IP地址、端口、端口号。
l 基于TCP/IP协议的网络中,每一个主机均被赋予了一个唯一的计算机地址,称为IP地址。其是一个32位的无符号整数,通过以小数点按每8位一组分隔。
l 每一个基于TCP/IP网络通信的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0 ~ 65535,以区别主机上的每个程序。
【例题】网络端口号用于识别接收者的( )
A.客户机
B.用户
C.信箱
D.进程
【答案】D
【解析】每一个基于TCP/IP网络通信的程序都被赋予了唯一的端口和端口号,端口号是一个16位无符号整数,范围是0 ~ 65535,以区别主机上的每个程序。所以D选项正确。
3. 套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。套接字是不同主机间的进程进行双向通信的端点。
4. 套接字有两种类型:流套接字、数据报套接字
5. 套接字的连接过程可以分成三个步骤:
(1) 服务器监听:服务器处于等待连接状态,实时监控网络状态;
(2) 客户端请求:由客户端套接字提出连接请求时,要连接的目标就是服务器端的套接字;
(3) 连接确认:当服务器端套接字监听到(或者说接收到)客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。
(二)5.2.2 套接字的应用
![]() |
(1) 创建套接字函数 int socket (int family , int type , int protocol);
(2) 绑定本地名称函数 int bind (int sockfd , const struct sockaddr *myaddr , socklen_t addrlen); (3) 建立连接函数 int connect (int sockfd , const struct sockaddr *myaddr , socklen_t addrlen); (4) 侦听函数 int listen (int sockfd , int backlog);
(5) 接收数据函数 accept (int sockfd , struct sockaddr *myaddr , socklen_t *addrlen);
(6) 关闭套接字函数 int close (int sockfd);
【例题】(单选题)需要在listen函数之后运行的函数是
A.bind
B.open
C.accept
D.socket
【答案】C
【解析】在UNIX服务器端套接字编程时,在socket/bind/listen之后调用accept,服务器此时阻塞,等待客户机的连接请求。
【知识点】UNIX套接字及其应用
第三节 5.3 WinSock及其应用
在WINDOWS环境下利用套接字在TCP/IP上的编程接口就叫做WinSock。
(一)5.3.1 WinSock概述
1. 通常所说的套接字,是指UNIX环境下流行的TCP/IP编程接口,而WinSock是在windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。
2. WinSock支持单一的通信域,即Internet域。目前可以使用流套接字和数据报套接字,流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务;数据报套接字支持双向的数据流,但并不保证是可靠、有序、无重复的。
(二)5.3.2 使用WinSock实现网络通信 ★
1. 使用WinSock实现网络通信的典型范例便是客户机/服务器模型,在这种方案中客户应用程序向服务器程序请求服务。非对称。
2. 数据报套接字可以用来发送广播数据包。
3. 利用WinSock进行网络通信,有以下几个参数需要被设置:本地IP地址、本地端口号、对方端口号、对方IP地址。
【例题】基于WinSock的TCP/IP通信方式中,采用流方式的是
A.点一点通信
B.广播通信
C.异步通信
D.存储转发
【答案】A
【解析】数据报套接字可以用来发送广播数据包,而相应地流套接字适用于点对点通信,所以A选项正确。
(三)5.3.2 WinSock的应用
1. 从服务端来看:bind/listen/accept
2. 从用户角度来看:socket(或WSASocket)/connect(或WSAConnect)。