题目来源于各学校网络程序设计课程的期末试题以及博客上的总结。
一、选择题
1.如果进程A调用fork函数,创建进程B,然后B进程再调用fork函数,创建进程C,进程C调用exec执行新的程序,那么各个进程将以什么顺序来执行?(D)
A. 以A、B、C的顺序执行
B. 以C、B、A的顺序执行
C. 以B、C、A的顺序执行
D. 无固定执行顺序
2.以下不属于socket的类型是(D)
A. 流式套接字
B. 数据报套接字
C. 原始套接字
D. 网络套接字
3.路由器是根据哪一层的信息作为数据报选择路由(C)
A. 物理层
B. 数据链路层
C. 网络层
D. 传输层
4. 在实现基于TCP的网络应用程序时,服务器端正确的处理流程是(C)
A. socket()->bind()->listen()->connect()->read()/write()->close()
B. socket()->bind()->listen()->read()/write()->close()
C. socket()->bind()->listen()->accept()->read()/write()->close()
D. socket()->connect()->read()/write()->close()
5. 服务与协议是完全不同的两个概念,下列关于它们的说法错误的是(C)
A. 协议是水平的,即协议是控制对等实体间通信的规则。服务是垂直的,即服务是下层向上层通过层间接口提供的。
B. 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
C. 协议的实现保证了能够向上一层提供服务。
D. OSI将层与层之间交换的数据单位称为协议数据单元PDU。
二、判断题
1. 发起对等通信的应用程序为服务器。(F)
解析:发起对等通信的应用程序为客户端。
2. 循环服务器描述的是一个时刻可以处理多个请求的一种服务器实现。(F)
解析:循环服务器在同一个时刻只可以响应一个客户端的请求。
3. bind()函数用于将套接字和某个地址绑定。(T)
4. IP地址是识别Internet网络中的主机及网络设备的唯一标识。(T)
5. ICMP是用在传输层的协议。(F)
解析:ICMP使用在网络层。
三、简答题
1.什么是TCP的三次握手机制?TCP的三次握手机制过程简述。
解答:
含义:为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号发送给目标机,并需要这些包传送给目标机之后的确认信息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。
简述“三次握手”:(1)Client先产生一个初始序列号seq,SYN标志位置1,将该数据包发送给Server端,之后Client端进入SYN_SENT状态,等待Client确认。(2)Server收到数据包后也发送自己的SYN报文作为响应,并初始化序列号seq,为了确认Client的seq,Server将Client发送的seq加1作为ACK发送给Client,Server进入SYN_RCVD状态。(3)为了确认Server的SYN,Client将Server发送的seq加1作为ACK发送给Server。Client和Server进入ESTABLISHED状态,完成三次握手。
2.面向连接的服务的优缺点?
解答:
(1)优点:易于编程;自动处理分组丢失,分组失序;自动验证数据差错,处理连接状态。
(2)缺点:对每个连接都有一个单独的套接字,耗费更多的资源;在空闲的连接上不发送任何分组;始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源。
3. IP通过什么协议转换域名和MAC地址?
解答:
通过DNS(域名解析)协议转换成域名。DNS是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应的IP地址,并具有将域名转换成IP地址功能的服务器。
通过ARP(地址转换协议)协议转换成MAC地址,反过来MAC到IP地址的转换是RARP(逆地址转换协议)。