1、第 一 章 习 题一、 选择题1. Internet中的主要通信协议是( D )A HTML B.HTTP C.ARPA D.TCP/IP2 OSI参考模型将网络通信的工作划分为 7个层次,不属于 OSI参考模型的层次是( B )A网络层 B.通信层 C.会话层 D.物理层3.下面关于 OSI参考模型的描述,正确的是( D )A OSI参考模型的最高层为网络层B OSI参考模型的最高层为数据链路层C所有的网络通信都需要经过 OSI模型的全部七层D发送方和接收方的通信必须在对等层次上进行4.下面属于数据链路层的协议是( D )A TCP B.IP C.ARP D.PPP【 二 】 选择题1. 下
2、面关于 IP的描述,不正确的是( B)A.IP是无线连接的协议,也就是说在通信的两个端点之间不存在连续的连接B.IP在 OSI通信协议的第二层,即数据链路层C.目前应用最广泛的 IP版本为 IPv4D.IP是 Internet Protocol 的缩写,是实现网络之间互联的基础协议2. 下面( A)是传输控制协议的缩写A.TCP B. UDP C. ATPD. ICMP3. 下面关于 TCP的描述,不正确的是 (D)A. 它是面向连接的传输协议B. 它和 IP相结合,构成 Internet 协议的核心C. TCP是一个精确传输协议,但并不是及时传输协议D. TCP的主要作用是将网络数据流压缩成
3、数据报的形式4. 查看本地 ARP缓存表的命令是 (A )A. arp-a B. arp-d C. arp-g D. arp-s5. 下面关于 RARP的描述,正确的是( C)A. 它是地址解析协议B. 它是可以根据局域网中一个设备的 IP地址获取它的 MAC地址C. RARP广泛应用与无盘工作站,用于获取 IP地址D. RARP允许局域网上的主机从本地 ARP缓存表中请求其 IP地址6. ping命令使用的协议为( D)A. TCP B. UDP C. ARP D.ICMP7. Telnet使用( A)端口来建立连接A. TCP端口 23 B. UDP端口 23 C. ARP端口 25 D.
4、ICMP端口 258. 用于发送电子邮件的网络协议为( B)A. EMAIL B. SMTP C.ICMP D. POP3【 三 】 一、选择题1.目前应用最广泛的 IP地址是基于 IPV4的,每个 IP地址的长度为( D)位。A. 4 B.8 C.16 D.322. 128.168.1.100是( B)类地址。A. A B.B C.B D.D3.C类网络的默认子掩码是( C)A. 255.0.0.0 B.255.255.0.0 C.255.255.255.0 D.255.255.255.2554.下面 IP地址中, ( B)是 A类私有地址。A. 1.0.0.1 B.10.0.0.1 C.1
5、72.16.0.1 D.192.168.0.15.下面选项中, ( D)是表示本地计算机的 IP地址。A. 0.0.0.0 B.255.255.255.255 C.255.255.255.0 D.127.0.0.06.假定子网掩码为: 255.255.0.0,则下面 IP地址不属于同一网段的是( C)。A.172.16.25.2 B.172.16.16.201 C.172.25.16.200 D.172.16.25.1687.C类 IP地址的子网掩码为 255.255.255.248,则能提供子网数为( C)。A. 16 B.32 C.30 D.1288.假定某公司申请到一个 C类 IP地址,
6、但要连接 6个子公司的网络,最大的一个公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为( D)A.255.255.255.0 B.255.255.255.128 C.255.255.255.192 D.255.255.255.2249.一台 IP地址为 10.110.9.113/21的主机在启动时发出的广播 IP是( B)。A. 10.110.9.255 B.10.110.15.255 C.10.110.255.255 D.10.255.255.25510.某计算机的 IP地址为 10.110.12.29,子网掩码为255.255.255.224,与它属于同一网段的主机 IP地址
7、是( B)。A. 10.110.12.0 B.10.110.12.30 C.10.110.12.31 D.10.110.12.3211.如果 C类子网的掩码为 255.255.255.224,则包含的子网位数、子网数目、每个字网中主机数目正确的是( C)。A. 2, 2, 62 B.3, 6, 30 C.4, 14, 14 D.5, 30, 6【 四 】 选择题下面关于进程控制块的描述,不正确的是( B)是进程尸体的一部分规定了进程所做的计算和计算的对象是操作系统内核为了控制进程所建立的数据结构是操作系统用来管理进程的内核对象,也是系统用来存放关于进程的统计信息的地方。2.为 FTP 保留的端
8、口为( B)A. 23 B. 21 C. 25 D. 80一 【 五 】 选择题1. 下面不属于 Socket类型的是( C )A.SOCK_STREAM B.SOCK_DGRAM C.SOCK_TCP D.SOCK_RAM2. 在 Visual Studio 2005 中,通常使用 WinSock2.2实现网络通信的功能,则需要引用头文件为( B)A Winsock.h B winsock2.hC winsock22.hD winsock2.2.h3. 将 u_long类型的主机字节顺序格式 IP地址转换为TCP/IP网络字节顺序格式的函数是( A)A. htomlB. htonsC. nt
9、ohlD. ntohs4. 下面属于 Socket级别的是( A)A SOL_SOCKETB SOCKET_LEVELC TCP_IPD SQL_SOCKET【 八 】1. 下面不属于 Socket编程模式的是( D )A Select模型B WSAAsyncSelect模型C WSAEventSelect模型D完成例程模型2.下面模型使用线程池处理异步 I/O请求的是( D )A Select模型B WSAAsyncSelect模型C WSAEventSelect模型D完成例程模型3.在 ioctlsocket()函数中使用( A )参数,并将 argp参数设置为非 0值,可以将 Socke
10、t设置为非阻塞模式。A FIONBIO B FIONREADC SIOCATMARK D FIONONBLOCK4.在执行 select()函数时如果出现错误则返回( D )A 0 B -1C NULL D SOCKET_ERROR5.在 WSAEventSelect模型中,调用 WSAEventSelect()函数注册网络事件后,应用程序需要等待网络事件的发生,然后对网络事件进行处理。调用后,WSAWaitForMultipleEvents()函数处于阻塞状态,直到下面( )情况发生才会返回。A创建了监听 SocketB阻塞时间超过指定的超时时间C所有事件对象都处于未受信状态D所有事件对象都
11、被释放【 一 】、填空题1.OSI参考模型的英文全称 Open System Interconnection Reference Model ,中文含义是 开放系统互连参考模型 。2.在 OSI参考模型中,对等层协议之间交换的信息单元统称为 协议数据单元 ,其英文缩写和全称为 PDU, Protocol Data Unit 。传输层 PDU的特定名称为 数据段( Segment) ,网络层 PDU特定名称为 数据包( Packet) ,数据链路层 PDU特定名称为 数据帧( Frame) ,物理层 PDU特定名称为 比特( Bit)。3.TCP/IP协议簇中包含 网络接口层 、 网络层 、 传
12、输层 和应用层 。【 二 】 二填空题1. IP包含两个最基本的功能,即 寻址( Addressing) 和 分片( Fragmentation) 2. IP使用 4种关键机制来提供服务,即 服务类型( TOS, Type of Service) , 生存周期( TTL, Time to Live) , 选项 和 包头校验和 3. 两个主机使用 TCP进行通信可以分为 3个阶段,即 建立连接阶段 , 数据传输阶段 和 断开连接释放资源阶段 4. FTP用于建立控制连接的端口为 21 ;当需要传输文件数据时,客户端程序将连接服务器的端口 20 。【 三 】 二、填空题1.A类 IP地址范围为 1
13、.0.0.1 126.255.255.254。2.B类 IP地址的前两个字节为网络 ID,后面两个字节则为主机 ID,而网络 ID的前两位必须为 10 。3.C类地址的每个网络中可以容纳的主机数量为 254。4.A类私有 IP地址的范围为 10.0.0.0 10.255.255.255。5.子网掩码中可以分为 3个部分,即 网络域 、子网域 和 主机域。6.CIDR表示法以标识网络 ID的位数作为网络前缀,其格式为 网络号 /网络 ID的位数。【 四 】 二、填空题1.一个进程实体由 程序代码 、数据 和 进程控制块 3部分构成。2.P2P是 Peer-to-Peer 的简写。【 五 】 填空
14、题1 根据基于的底层协议不同, Socket开发接口可以提供 _面向连接 _和 _ 无连接 _两种服务方式。2 在 Visual Studio 2005 中,通常使用 WinSock2.2实现网络通信的功能,则需要引用库文件 _ ws2_32.lib _。3 在计算机中使用无符号长整型数( unsigned long)来存储和表示 IP地址,而且分为 _网络字节顺序( NBO, Network Byte Order) _和 _主机字节顺序( HBO, Host Byte Order_两种格式。4 在 Visual C+中使用结构体 _ in_addr _来保存网络字节顺序格式的 IP地址。5
15、用于获取 Socket选项的函数是 _ setsockopt ()_。【 八 】 二填空题1.Socket编程可以分为 _阻塞 _和 _非阻塞 _两种开发模式。2.默认情况下,最多可以管理的 Socket数量为 _1024_个。3.在重叠 I/O模型中,系统通知应用程序的形式有两种,即 _事件通知 _与 _完成例程 _。4.在 select()函数中使用 _ fd_set_结构体来管理多个 Socket。5.在 WSAAsyncSelect模型中,应用程序可以在一个Socket上接收以 _ Windows消息 _为基础的网络事件通知。6. 在 WSAAsyncSelect模型中,如果要取消指定
16、 Socket上的所有通知事件,则可以在调用 WSAAsyncSelect函数时将参数 lEvent设置为 _0_。7.Windows事件对象分为两种工作状态,即 _已授信( signaled) _状态和 _未授信( nonsignaled) _状态。【 一 】 三、简答题1.按从低到高的顺序描述 OSI参考模型的层次结构。答: OSI参考模型将网络通信的工作划分为 7个层次,由低到高分别为物理层( Physical Layer)、数据链路层( Data Link Layer)、网络层( Network Layer)、传输层( Transport Layer)、会话层( Session Lay
17、er)、表示层( Presentation Layer)和应用层( Application Layer)。2.简述 OSI参考模型实现通信的工作原理。答:在网络通信中,发送端的自上而下的使用 OSI参考模型,对应用程序要发送的信息进行逐层打包,直至在物理层将其发送到网络中;而接收端则自下而上的使用 OSI参考模型,将收到的物理数据逐层解析,最后将得到的数据传送给应用程序。当然,并不是所有的网络通信都需要经过 OSI模型的全部七层。例如,同一网段的二层交换机之间通信之需要经过数据链路层和物理层,而路由器之间的连接则只需要网络层、数据链路层和物理层即可。在发送方封装数据的过程中,每一层都会为数据包
18、加上一个头部;在接收方解封数据时,又会逐层解析掉这个头部。因此,双方的通信必须在对等层次上进行,否则接收方将无法正确地解析数据。3.简述数据链路层中数据帧的结构。帧的简要结构如图 1.4所示。图 1.4 帧的简要结构每个字段的说明如下: 前导码,内容是 16进制数 0xAA,作用是使接收节点进行同步并做好接收数据帧的准备。 帧首定界符,是 10101011的二进制序列,标识帧的开始,以使接收器对实际帧的第一位定位。 源地址和目的地址,即发送和接收数据的两端主机的 MAC地址。目的地址可以是单地址、组播地址和广播地址。 数据字段的长度,指定要传送数据的长度,以便接收方对数据进行处理。 要传送的数
19、据,顾名思义,就是从源地址发送到目的地址的原始数据。 填充字段,有效帧从目的地址到校验和字段的最短长度为 64字节,其中固定字段的长度为 18个字节。如果数据字段长度小于 46个字节时,就使用本字段来填充。 校验和,使用 32位 CRC校验,用于对传送数据进行校验。【 二 】 三简单题1. 简述 IP生存时间的含义和作用。答:生存周期表示一个 Internet报文生存期的上限,由报文的发送者来设置。可以把生存周期看作是数据库包的寿命计数器。为了防止数据包在网络中无休止地被传递下去,或者由于传输路径造成死循环,每个 IP数据包中都包含一个寿命计数器。数据包在网络传输的过程中,每经过一个路由器的处
20、理,其中的寿命计数器就会递减 1。如果寿命计数器的值等于 0,并且报文还没有到达目的地,则该报文将会被丢失。发送者将会在稍后重新发送该报文。为什么要在 IP协议中使用生存周期的概念呢。因为 Internet的结构是复杂的,从一个主机发送报文到另外一个主机可以有多种路径,这一点与现实生活中一样,比如开车前往一个地点就可以有多种路线可供选择。因为数据包在网络传输中的路径是由路由器或交换机等网络设备根据当时的网络情况选择的,所以每次传输的路径都可能不同。如果一个数据包在传输过程中进入了环路,如果不终止它的话,它可能一直这样循环下去。如果网络中存在大量这样循环的数据包,那对于网络来说就是一种灾难性。使
21、用生存周期就可以解决这种问题,它可以将长时间无法到达目的地的数据包丢弃。2. 试列举 5个常用的 TCP和 UDP端口号及其功能。参照表 2.1理解。3. 简述 TCP和 UDP的区别。UDP是一种不可靠的协议,在传送数据时,源主机和目的主机之间不建立连接。而 TCP协议为了确保数据传输的准确和安全可靠,集成了各种安全保障功能,这在实际执行过程中会占用大量的系统开销。因此, UDP具有TCP无法比拟的速度优势。相对于可靠性而言,基于 UDP的应用更注意性能。与 TCP相比, UDP更适合发送数据量比较少、但对响应速度要求比较高的情况。4. 简述 ARP欺骗的两种情况。答: ARP欺骗通常有如下
22、两种情况( 1)对路由器 ARP表的欺骗,感染 ARP木马的主机会不断地向路由器发送一系列错误的内网 MAC地址,使真实的地址信息无法通过更新保存在路由器上。因为路由器负责转发数据包,是主机连接互联网的关键设备,所以路由器被欺骗后,网络中的大量主机都无法正常上网。( 2)伪造网关,欺骗其他主机向假网关发送数据,而不是通过正确的路由器途径上网。ARP攻击的后果通常是很严重的,往往会造成网络的大面积掉线,没有经验的网络管理员通常很难定位问题所在。5. 简述 RARP的工作过程。答:( 1)申请 IP地址的主机在本地网络中发送一个RARP广播包,其中包括自己的 MAC地址,请求任何收到该请求的 RA
23、RP服务器为其分配一个 IP地址。( 2)收到请求的 RARP服务器将检查其 RARP列表,判断是否存在该 MAC地址对应的 IP地址。如果存在,则给源主机发送一个响应数据包,并将此 IP地址提供给对方主机使用;如果不存在,则 RARP服务器对该请求不做响应。一个网段中可以存在多个 RARP服务器。( 3)源主机收到 RARP服务器发回的响应信息后,使用得到的 IP地址进行通讯。( 4)如果一直没有收到 RARP服务器的响应信息,则说明初始化失败。( 5)如果在前 2步中遭受到 ARP攻击,则 RARP服务器返回的 IP地址可能会被占用,因此导致申请主机无法正常上网。6. 简述实现 Telne
24、t远程登录服务的步骤。答:( 1)与远程主机建立一个 TCP连接,用户需要指定远程主机的 IP地址和域名。 ( 2)在本地终端上输入用户名和口令,然后输入控制命令,客户端会将它们以NVT( Net Virtual Terminal)格式传送到远程主机。( 3)将远程主机输出的 NVT格式的数据转化为本地所接受的格式,然后送回本地终端,包括命令的回显和命令的执行结果。( 4)最后,本地终端断开连接,结束到远程主机的 TCP连接。7. 简述 FTP的两种连接模式。答: FTP支持两种运行模式,即主动模式和被动模式,它们的区别在于控制如何打开第 2个连接。1主动模式 :在主动模式下,客户端向服务器发
25、送自己用于数据连接的 IP地址和端口号,然后由服务器程序打开数据连接。2被动模式 :当客户端在防火墙后面或者无法接收TCP连接时,通常建议采用被动模式。在被动模式下,服务器向客户端发送自己用于数据连接的 IP地址和端口号,则客户端打开数据连接。四操作题1.练习使用 ping命令检测一个网站的在线状态,并通过返回的 TTL值推断该网站使用服务器的错做系统类型,以及从本地计算机到达服务器需要经过多少个三层交换机和路由器。略2.练习使用 telnet命令远程登录网络中的网络设备或计算机。略3. 练习在 Outlook Express或者 Foxmail 等邮件客户端应用程序中配置 SMTP和 POP
26、3邮件服务器,并联系发送和接收电子邮件。略【 三 】 简答题简述 IPv4地址的结构和表示方法。目前应用最广泛的 IP地址是基于 IPv4的,每个 IP地址的长度为 32位,即 4个字节。通常把 IP地址中的每个字节使用一个 10进制数字来表示,数字之间使用小数点( .)分隔,因此 IPv4中 IP地址的格式如下:XXX.XXX.XXX.XXX这种 IP地址表示法被称为点分十进制表示法。简述 IP地址的分类。为了便于寻址和构造层次化的网络结构,在设计 IP地址时规定每个 IP地址都由两个标识码( ID)组成,即网络 ID和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,而 IP地
27、址中除了网络 ID外的其他部分则是主机 ID,它可以唯一标识当前网络中的一台主机(可以是计算机、服务器或网络设备等) 。根据网络 ID的不同, IP地址可以分为 5种类型,即 A类地址、 B类地址、 C类地址、 D类地址和 E类地址。A类 IP地址的第 1个字节为网络 ID,其他 3个字节则为主机 ID,而且网络 ID的第 1位必须为 “0”。 A类 IP地址的范围为 1.0.0.1 126.255.255.254。B类 IP地址的前两个字节为网络 ID,后面两个字节则为主机 ID,而且网络 ID的前两位必须为 “10”。 B类 IP地址的范围为 128.0.0.1 191.255.255.2
28、54。C类 IP地址的前 3个字节为网络 ID,最后一个字节为主机 ID,而且网络 ID的前 3位必须为 “110”。 C类 IP地址的范围用二进制数来表示为 192.0.0.1 223.255.255.254。D类 IP地址是专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播中。它的前 4位必须为“1110”。 D类 IP地址的范围为224.0.0.1239.255.255.254。E类 IP地址并没有公开使用,它是在设计时预留出来供将来使用的地址段,目前仅用于研究和实验。 E类 IP地址以 “11110”开始,即从 240.0.0.1开始后面的有效地址都是 E类 IP地址。
29、简述单播地址、组播地址和广播地址的定义和作用。单播是指对特定的主机进行数据传送,因此在数据链路层的数据头中应该指定非常具体的目的地址,即网卡的 MAC地址;而且在 IP分组报头中必须指定接收方的 IP地址。组播是主机之间 “一对一组 ”的通讯模式, 即加入了同一组的主机可以接收到该组内的所有数据。主机可以向路由器申请加入或退出指定的组,网络中的路由器和交换机可以有选择的复制并传输数据,即只将组内数据传输给该组中的主机。组播可以大大节省网络带宽,无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。广播分组的目标 IP地址的主机部分全部为 1,这意味着本地网络中所有的主机都将接收并
30、查看到该分组消息。比较常见的广播应用是 ARP和 DHCP等网络协议。【 四 】 三、简单题1.简述 TCP/IP通信中端口的概念。端口是 TCP/IP协议簇中,应用层进程与传输层协议实体间的通信接口,在 OSI七层协议的描述中,将它称为应用层进程与传输层协议实体间的服务访问点( SAP)。应用层进程通过系统调用与某个端口进行绑定,然后就可以通过该端口接收或发送数据,因为应用进程在通信时,必须用到一个端口,它们之间有着一一对应的关系,所以可以用端口来标识通信的网络应用进程。2.简述 C/S模式中服务器的工作过程。( 1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知端口
31、,如 FTP为 21)接收客户请求。 ( 2)等待客户的请求到达该端口。( 3)服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求(如 UNIX系统中用fork、 exec)。服务完成后,关闭此新进程与客户的通信通路,并终止。 ( 4)返回第( 2)步,等待并处理另一客户请求。 ( 5)在特定的情况下,关闭服务器。3.简述 P2P系统的特征。P2P系统具有以下特征。( 1)分散性。该系统是全分布式的系统,不存在瓶颈。( 2)规模性。该系统可以容纳数百万乃至数千万台计算机。 ( 3)扩展性。用户可以随时加入该网络。服务的
32、需求增加,系统的资源和服务能力也同步扩充,理论上其可扩展性几乎可以认为是无限的。 ( 4) Servent性。每个节点同时具有 Server和 Cliert的特点,称之为Servent。( 5)自治性。节点来自不同的所有者,不存在全局的控制者,节点可以随时加入或退出 P2P系统。( 6)互助性。( 7)自组织性。大量节点通过 P2P协议自行组织在一起,不存在任何管理角色。【 五 】 简答题1. 简述基于 TCP的两个网络应用程序进行通信的基本过程。答( 1)客户端(相当于拨打电话的一方)需要了解服务器的地址(相当于电话号码) 。在 TCP/IP网络环境中,可以使用 IP地址来标识一个主机。但仅
33、仅使用 IP地址是不够的,如果一台主机中运行了多个网络应用程序,那么如何确定与哪个应用程序通信呢。在 Socket通信过程中借用了 TCP和 UDP协议中端口的概念,不同的应用程序可以使用不同的端口进行通信,这样一个主机上就可以同时有多个应用程序进行网络通信了。这有些类似于电话分机的作用。 ( 2)服务器应用程序必须早于客户端应用程序启动,并在指定的 IP地址和端口上执行侦听操作。如果该端口被其他应用程序所占用,则服务器应用程序无法正常启动。服务器处于侦听状态就类似于电话接通电话线、等待拨打的状态。 ( 3)客户端在申请发送数据时,服务器端应用程序必须有足够的时间响应才能进行正常通信。否则,就
34、好像电话已经响了,但却无人接听一样。在通常情况下,服务器应用程序都需要具备同时处理多个客户端请求的能力,如果服务器应用程序设计得不合理或者客户端的访问量过大,都有可能导致无法及时响应客户端的情况。 ( 4)使用 Socket协议进行通信的双方还必须使用相同的通信协议, Socket支持的底层通信协议包括 TCP和UDP两种。在通信过程中,双方还必须采用相同的字符编码格式,而且按照双方约定的方式进行通信。这就好像在通电话的时候双方都采用对方能理解的语言进行沟通一样。( 5)在通信过程中,物理网络必须保持畅通,否则通信将会中断。 ( 6)通信结束后,服务器端和客户端应用程序都可以中断它们之间的连接
35、。2. 简述流式 Socket和数据报式 Socket的区别。表 5.1 流式套接字和数据报式套接字的区别比较项目 流式套接字 数据报式套接字建立和释放连接 保证数据到达 按发送顺序接收数据 通讯数据包含完整的目的地址信息 3. 简述服务器和客户机面向连接的 Socket通信流程。服务器程序要先于客户机程序启动,每个步骤中调用的 Socket函数如下:( 1)调用 WSAStartup()函数加载 Windows Sockets动态库,然后调用 socket()函数创建一个流式套接字,返回套接字号 s。( 2)调用 bind()函数将套接字s绑定到一个已知的地址,通常为本地 IP地址。 ( 3
36、)调用 listen()函数将套接字 s设置为侦听模式,准备好接收来自各个客户机的连接请求。 ( 4)调用 accept()函数等待接受客户端的连接请求。 ( 5)如果接收到客户端的请求,则 accept()函数返回,得到新的套接字 ns。( 6)调用recv()函数接收来自客户端的数据,调用 send()函数向客户端发送数据。 ( 7)与客户端的通信结束后,服务器程序可以调用 shutdown()函数通知对方不再发送或接收数据,也可以由客户端程序断开连接。断开连接后,服务器进程调用 closesocket()函数关闭套接字 ns。此后服务器程序返回第 4步,继续等待客户端进程的连接。( 8)
37、如果要退出服务器程序,则调用 closesocket()函数关闭最初的套接字 s。客户端程序在每一步骤中使用的函数如下:( 1)调用 WSAStartup()函数加载 Windows Sockets动态库,然后调用 socket()函数创建一个流式套接字,返回套接字号 s。( 2)调用 connect()函数将套接字 s连接到服务器。( 3)调用 send()函数向服务器发送数据,调用 recv()函数接收来自服务器的数据。( 4)与服务器的通信结束后,客户端程序可以调用shutdown()函数通知对方不再发送或接收数据,也可以由服务器程序断开连接。断开连接后,客户端进程调用closesock
38、et()函数关闭套接字。【 八 】 三简答题1.简述阻塞模式和非阻塞模式 Socket编程的区别。答: Socket编程可以分为阻塞和非阻塞两种开发模式。阻塞模式是指在指定套接字上调用函数执行操作时,在没有完成操作之前,函数不会立即返回。例如,服务器程序在阻塞模式下调用 accept()函数时将会阻塞服务器线程,直至接收到一个来自客户端的连接请求。默认创建的套接字为阻塞模式。非阻塞模式是指在指定套接字上调用函数执行操作时,无论操作是否完成,函数都会立即返回。例如,在非阻塞模式下调用 recv()函数时,程序会直接读取网络缓冲区中的数据,无论是否读到数据,函数都会立即返回,而不会一直挂在此函数的
39、调用上。2.简述 WSAAsyncSelect模型的工作原理和优缺点。答: WSAAsyncSelect模型又称为异步选择模型,它为每个套接字绑定一个消息。当套接字上出现事先设置事件时,操作系统会给应用程序发送这个消息,从而使应用程序可以对该事件做相应的处理。WSAAsyncSelect模型的优点是在系统开销不大的情况下可以同时处理许多个客户端连接。它的缺点是,即使应用程序不需要窗口,也要至少设计一个窗口用于处理套接字事件。而且,在一个窗口中处理大量的事件也可能成为性能瓶颈。3简述 WSAEventSelect模型与 WSAAsyncSelect模型之间的主要区别。答: WSAEventSel
40、ect模型与 WSAAsyncSelect模型之间的主要区别是网络事件发生时系统通知应用程序的方式不同。 WSAAsyncSelect模型以消息的形式通知应用程序,而 WSAEventSelect模型则以事件的形式进行通知。4.简述 select()函数中,参数 readfds中包含的Socket在满足哪些条件时被设置为就绪状态。答:已经调用了 listen()函数,并且成功建立连接,则调用 accept()函数会成功。 有数据可以读取。 连接已经关闭、重置或者中止。5.简述 WSAAsyncSelect模型和 WSAEventSelect模型的异同。答: WSAEventSelect模型和
41、WSAAsyncSelect模型都是异步 I/O模型,它与 WSAAsyncSelect模型的最主要区别是网络事件发生时系统通知应用程序的方式不同。WSAAsyncSelect模型使用消息方式通知应用程序,而WSAEventSelect模型以事件形式进行通知。本节将通过实例介绍基于 WSAEventSelect模型的 Socket编程方法。5. 简述完成端口模型的工作原理。答: 完成端口模型也属于并发线程模型,但它解决了前面提到的普通并发线程模型中存在问题。完成端口模型中规定了并发线程的数量,并使用线程池对线程进行管理。一个完成端口实际上就是一个通知队列,操作系统把已经完成的重叠 I/O请求的通知放到队列中。当某项I/O操作完成时,系统会向服务器完成端口发送一个 I/O完成数据包,此操作在系统内部完成。应用程序在收到I/O完成数据包后,完成端口队列中的一个线程被唤醒,为客户端提供服务。服务完成后,该线程会继续在完成端口上等待。 套接字在被创建后,可以在任何时候与指定的完成端口进行关联。线程池的使用既限制了工作线程的数量,又避免了反复创建线程的开销,减少了线程调度的开销,从而提高了服务器程序的性能。