何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
以下选题来自文库及王道计算机网络考研复习指导
一、单项选择题
1、下列关于UDP和TCP的叙述中,不正确的是( C )。
A、UDP和TCP都是传输层协议,是基于IP协议提供的数据报服务,向应用层提供传输服务。
B、TCP协议适用于通信量大、性能要求高的情况;UDP协议适用于突发性强消息量比较小的情况。
C、TCP协议不能保证数据传输的可靠性,不提供流量控制和拥塞控制。
D、UDP协议开销低,传输率高,传输质量差;TCP协议开销高,传输效率低,传输服务质量高。
2、在OSI的七层参考模型中,工作在第三层以上的网间连接设备称为( C )。
A.交换机 B.集线器 C.网关 D.中继器
3、主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确TCP段可能是( B )
A. (SYN=0,ACK=0,seq=11221,ack=11221)
B. (SYN=1,ACK=1,seq=11221,ack=11221)
C. (SYN=1,ACK=1,seq=11220,ack=11220)
D. (SYN=0,ACK=0,seq=11220,ack=11220)
**4、FTP 默认使用的控制协议端口是( B )。 **
A.20 B. 21 C. 23 D. 22
5、在下列功能中,哪一个最好地描述了OSI模型的数据链路层?( A )
A、保证数据正确的顺序、无错和完整
B、处理信号通过介质的传输
C、提供用户与网络的接口
D、控制报文通过网络的路由选择
6、假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为www.ustc.edu.cn网站时,本地域名服务器在完成该域名解析过程中,可能发生DNS查询的最少和最多次数分别是( C )
A. 0,3 B. 1,3 C. 0,4 D. 1, 4
7、某主机的IP地址为180.80.77.55,子网掩码为255.255.255.0。若该主机向其所在子网发送广播分组,则目的地址可以是( D )
A. 180.80.76.0 B. 180.80.76.255
A. 180.80.77.255 B. 180.80.79.255
8、TCP 协议通过 ( B ) 来区分不同的连接。
A. 端口号
B. 端口号和 IP地址
C. 端口号和 MAC 地址
D. IP 地址和 MAC 地址
9、直接封装RIP、OSPF、BGP报文的协议分别是( D )
A. TCP、UDP、IP B. TCP、IP、UDP
C. UDP、TCP、IP D. UDP、IP、TCP
10、若甲向乙发起一个TCP连接,最大段长MSS=1KB,RTT=5ms,乙开辟的接受缓存为64KB,则甲从连接建立成功至发送窗口达到32KB,需经过的时间至少是( A )
A. 25ms B. 30ms C. 160ms D. 165ms
二、填空题
1、802.3局域网的MAC帧的最小长度是 64 字节,MAC地址长度为 48 位。
2、信道复用有 时分复用、 频分复用、 码分复用、 波分复用 等方式。
3、TCP协议的80端口由因特网的 HTTP 协议使用。
4、在分类IP地址中,D 类地址属多播地址,地址160.201.68.108属于 B 类地址
5、OSI模型有 物理层、 数据链路层、 网络层、 运输层、 会话层、 表示层和 应用层七个层次。
三、简答题
1、为什么TIME_WAIT状态还需要等2*MSL(Max SegmentLifetime,最大分段生存期)秒之后才能返回到CLOSED状态呢?
因为虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SENT状态到ESTABLISH状态那样),但是我们必须假想网络是不可靠的,你无法保证你最后发送的ACK报文一定会被对方收到,就是说对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。
2、TCP与UDP的区别
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:
- TCP是面向连接的,UDP是无连接的;
- TCP是可靠的,UDP是不可靠的;
- TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
- TCP是面向字节流的,UDP是面向报文的;
- TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
- TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;
3、为什么TCP链接需要三次握手,为什么?
为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。
客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。
4、Http和Https的区别
Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:
- 端口不同:Http与Https使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
- 资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
- 开销:Https通信需要证书,而证书一般需要向认证机构购买;
5、在浏览器中输入www.baidu.com后执行的全部过程
1、客户端浏览器通过DNS解析到www.baidu.com的IP地址,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到该IP地址,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
6、什么是 socket?简述基于 tcp 协议的套接字通信流程
socket(简称套接字) 是进程间通信的⼀种⽅式, 能实现不同主机间的进程间通信,我们⽹络上各种各样的服务⼤多都是基于 Socket 来完成通信的。
tcp协议套接字通信流程
(1)服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听。
(2)用 bind 函数来绑定一个端口号和 IP 地址。因为本地计算机可能有多个网址和 IP,每一个 IP 和端口有多个端口。需要指定一个 IP 和端口进行监听。
(3)服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态,等待客户机的连接。
(4)客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。
(5)客户机调用 connect 函数连接远程计算机指定的端口。
(6)服务器用 accept 函数来接受远程计算机的连接,建立起与客户机之间的通信。
(7)建立连接以后,客户机用 write 函数向 socket 中写入数据。也可以用 read 函数读取服务器发送来的数据。
(8)服务器用 read 函数读取客户机发送来的数据,也可以用 write 函数来发送数据。
(9)完成通信以后,用 close 函数关闭 socket 连接。