如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

1.(教学PPT) 网络字节序是 Big Endian 还是 Little Endian ?

答:是 Big Endian。在 Socket 网络编程中(c语言),需要考虑网路字节顺序和主机字节顺序的转换问题,一般经常会用到4个转换函数:htonl()--"Host to Network Long",ntohl()--"Network to Host Long",htonls()-"Host to Network Short",ntohs()--"Network to Host Short"。

考察 Socket 网络编程中网络字节序和主机字节序的转换。

 

2. (教学PPT)套接字描述符和文件描述符是一样的么?

答:在 Unix 操作系统(Linux、OSX)上,套接字描述符和文件描述符是没有区别的;在 Windows 操作系统上是不同的。比如系统调用 read 和 write 可以用于 Unix 操作系统上调用 socket() 函数返回的套接字描述符,而不能用于 Windows 系统上。参考(https://stackoverflow.com/questions/13378035/socket-and-file-descriptors)。

考察 Socket 网络编程中套接字描述符的概念。

 

3.(教学PPT) 在 Socket 网络编程中服务器端的工作流程?

答:创建用于监听的套接字(socket)、将套接字绑定到本地地址和端口号上(bind)、将套接字设为监听模式(listen)、等待客户请求(accept)、通信(send\receive)、关闭套接字(close)。

考察 Socket 网络编程中服务器的工作流程。

 

4.(教学PPT)在 Socket 网络编程中客户端的工作流程?

答:创建用于通信的套接字(socket)、向服务器发送连接请求(connect)、通信(send\receive)、关闭套接字(close)。

考察 Socket 网络编程中客户端的工作流程。

 

5. (教学PPT)描述建立一个 TCP 连接时的三次握手过程?

答:首先服务器必须准备好接受外来的连接,这通常通过调用 socket、bind 和 listen 这3个函数来完成,我们称之为被动打开。客户端通过调用 connect 发起主动打开,这导致客户端发送一个 SYN 进行同步,它告诉服务器客户将在代建立的连接中发送的数据的初始序列号。然后服务器发送 ACK 确认客户的 SYN,同时自己也得发送一个 SYN,它含有服务器将在同一连接中发送的数据的初始序列号。最后客户发送 ACK 确认服务器的 SYN。

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?_第1张图片

考察 TCP 的三次握手。

 

6. (教学PPT、TCP/IP协议族第四版)图6.8给出了一个假象因特网的某一部分,是给出路由器R1的路由表。

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?_第2张图片

 

 

 

 答:如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?_第3张图片

 

 考察路由表的转发以及默认网关的概念。实际上默认网关就是默认路由,如果在路由表中没有找到其他路由,则使用默认路由。

 

7. (教学PPT、牛客网)ARP是一个使用广播的地址解析协议,并且使用了ARP高速缓存,原因是使用广播会耗费大量带宽 ()?

A. True

B. False

答:A。因为ARP查询时,首先会查询自己的ARP缓存,若在缓存中可以查询到,则不必广播查询,减少带宽的使用。若没有在缓存中查到,那么就进行广播查询,广播查询之后,会将得到的结果保存在缓存中,方便下次使用。

考察 ARP协议的解析过程。

 

8. (教学PPT、TCP/IP协议族第四版)简述DNS解析中的迭代解析过程。

答:如果客户第一次请求的服务器是这个域名的权限服务器,它就发送解答。若不是,就返回给客户它认为可以解析这个查询的服务器的ip地址。客户再次向第二个服务器发送查询。若新找到的服务器能够解决这个问题,就用ip地址回答,否则,就像客户返回一个新的服务器的ip地址,现在客户必须向第三个服务器再次查询。这个过程称为迭代的,因为客户向多个服务器重复同样的查询。

考察DNS解析中递归解析和迭代解析的不同。

 

9. (博客)tcp三次握手的过程,accept发生在三次握手哪个阶段? ()

A. 第一次握手后

B. 第二次握手后

C. 第三次握手后

D. 三次握手前

答:C。第一次握手:客户端发送syn包(syn=j)到服务器。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

参考(https://blog.csdn.net/qq_42271953/article/details/80863259)

考察 TCP 三次握手协议和 Socket 编程的结合。

 

  

你可能感兴趣的:(如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?)