网络程序设计试题A卷-最新版本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安电子科技大学《网络程序设计》试题
(2013 年 A 卷)
考试时间120分钟试卷编号_________
班级________ 学号___________ 姓名_________ 任课老师姓名_____________
一、单选题(102分=20分)
1 •以下字段中,不属于IP首部的是 _____
A. 协议类型
B. 生存时间
C. 源IP地址
D. 目的端口号
2 •以下函数中,不会产生阻塞的是 ________
A. send()
B. sen dto()
C. conn ect()
D. liste n()
3 •进程A是进程B的父进程,当A正在运行时B退出,下列叙述中正确
的是_____
A •进程A也将退出
B .进程A将收到SIGCHLD信号
D .进程A将收到SIGKILL信号
D •进程A会成为僵尸进程
4 .整数0x12345678在little-endian字节序主机内存中的存储形式是
__________ (注:内存由低到高)
A. 12 34 56 78
B. 78 56 34 12
C. 34 12 78 56
D. 56 78 12 34
5 .使用信号驱动I/O时哪一个不是必须要执行的操作__________
A .为信号SIGIO关联一个信号处理函数
B .设置套接字为非阻塞模式
C .设置套接字所有者
D .允许套接字进行信号驱动I/O
6. _______________________________________________________________ 对使用UDP协议的套接字调用connect函数,下面叙述中正确的是________________
A . connect函数将阻塞
B . connect函数将导致3次握手操作
C. connect函数记录对方的IP地址和端口后立刻返回
D .不能对使用UDP协议的套接字描述符调用connect函数
7. 对函数调用send(sockfd, 12xyz”,5,MSG_OOB)的描述中正确的是 __________
A .只有字符z被写入发送缓冲区
B .只有字符串12xy被写入发送缓冲区
C .字符串12xyz中的每个字符都将作为带外数据发送
D . TCP协议发送的下一个报文段中URG标志将置位
&在给网络地址附值时,程序如果使用“INADDR_ANY ”,则表明_______
A .对于只有一个IP地址的主机,使用“ 127.0.0.1 ”地址
B .对于有多个网卡的主机,使用其中任意一个IP地址
C .对于有多个网卡的主机,表示所有IP地址,并处理所有地址的请求
D .以上均不对
9 .请求建立连接时TCP包头中的__________ 标志位有效
A. SYN
B. RST
C. PSH
D. URG
10 .当通信的对方关闭其写通道时,TCP套接字的读函数read()将_ _
A.返回大于0的整数
B.返回小于0的整数
C.阻塞
D.返回0
二、判断下面命题的正确性,对不正确的命题,说明错误原因(5X 2=10分)
1. 一般情况下,守护进程是在后台运行。
守护进程不考
2. Browse/Server模型主要事务在服务器端实现,一部分事务在前端实现。
正确
3. 阻塞式I/O是套接字的默认模型。
正确
4. IP数据包首部中TTL=64表示数据包在网上的最大生存时间是64秒。
错误,TTL表示数据包在网上的最大生存时间,但单位不是秒,而是表示
数据包可经过的最多的路由器数量,每经过一个路由器这个值-1。当这个值
减为0时网络设备将抛弃这个包。
5 .可以只用通信双方的IP地址来标识一条TCP网络连接。
错误,除了需要通信双方的IP地址外还需要通信双方的端口号。
三、简答题(5X 5分=25分)
1.请简述4 种Linux 系统中进程间的通信机制。
(1)管道(pipe)和命名管道(named pipe/FIFO )
( 2)信号( signal)
( 3)消息队列( message queue)
(4)共享内存(share memory)和内存映像文件( memory mapped file )
(5)信号量( semaphore)
( 6) UNIX 域socket
2.套接字函数close( )与shutdown( ) 的差别?
shutdown 操作连接通道,其他进程不能再使用已被关闭的通道;close 操作描述符,其他进程仍然可以使用该socket 描述符
close 关闭应用程序与socket 的接口,调用close 之后进程不能再读写这个socket;shutdown 可以只关闭一个通道,另一个通道仍然可以操作3.请简述循环服务器模型和并发服务器模型的区别。
循环服务器:任一时刻只处理一个客户机请求,处理请求过程中下一请求等待,节省服务器资源,响应时间长,适合处理非耗时请求。
并发服务器:并发执行,每收到一个连接请求创建一个进程处理该连接,服务器继续等待下一连接,响应速度快,占用系统资源多。
4.怎样将阻塞式套接字转变为非阻塞式套接字?
( 1 )函数fcntl
int flags;
flag=fcntl(sockfd,F_GETFL,0); fcntl(sockfd,F_SETFL,flag|O_NONBLOCK);
( 2)函数ioctl
int on=1;
ioctl(sockfd,FIONBIO,&on);
5.Linux 系统主要实现了哪几种输入/输出模型?请简述每种模型的特点。
阻塞式I/O 模型-默认I/O 模型编程简单,在进程被阻塞期间不占用CPU 时间,不影响其他进程的工作效率。但进程可能长期处于休眠状态,在此期间进程不能执行别的任务,进程
自身的效率不高。
非阻塞式I/O 模型
变成相对复杂,当I/O 操作不能完成时,进程还可以执行后续的程序代码,提高了进程自身的工作效率。但进程一直处于运行状态,可能占用大量的
CPU 时间来检测I/O 操作是否完成,从而影响其他进程的运行效率。多路复用I/O 模型
只检查一个socket 描述符时和阻塞式I/O 模型类似,只是阻塞的位置不同,