进行软件测试面试时,相信大家或多或少都会被问到一些关于计算机网络的问题,今天这篇文章就目前反馈比较多的计算机网络面试题及答案做了一个整理,在找工作的你,赶紧看过来~

 

1. 说一下你理解的七层网络模型?

答案:

应用层: 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP DNS协议等;

表示层: 数据的表示、安全、压缩的格式;

会话层: 建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话

传输层: 定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP协议。

网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IP(IPV4 IPV6)

数据链路层: 建立逻辑连接、进行硬件地址寻址功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层: 建立、维护、断开物理连接。

 

2. TCP协议的三次握手过程?

答案:

TCP协议要建立连接的时候,需要经历三次握手的过程:

第一次握手: 是客户端向服务器发起的,用来申请建立连接的,这个报文中的SYN标志位标记为1,所以我们也叫作SYN包;

第二次握手:是服务器回复客户端的,用来确认并接受连接请求的,这个报文中的SYN位和ACK位都标记为1,所以叫做SYN-ACK报文;

第三次握手:仍然是客户端发给服务器的,用来确认服务器的回复消息,这个报文中的ACK标志位标记为1,所以我们也叫作ACK包。

这就是TCP协议的三次握手过程。

 

3. 有了解TCP握手是握几次吗?为什么要握三次手?

答案:

3次。

客户端发送请求建立连接的数据包可能会滞留在网络中,等到后续这个连接断开之后再次到达服务器,那么服务器会发送消息告诉客户端可以发送消息,但是客户端不会理会服务器也不会发送消息,服务器端处于等待状态,会造成资源浪费

 

4. TCP协议的4次挥手?

答案:

TCP协议完成了数据发送之后,就会断开连接,此时就需要经历四次挥手的过程:

第一次挥手:是客户端向服务器发起的,用来申请断开连接的,这个报文中的FIN标志位标记为1,所以我们也叫作FIN包;

第二次挥手:是服务器回复客户端的,用来确认客户端的上一个断开连接请求的,所以是一个ACK报文;

第三次挥手:仍然是服务器发给客户端的,用来告知客户端服务器的数据发送完毕了,需要断开连接;这个报文中的FIN标志位标记为1,所以也是一个FIN包。

第四次挥手:是客户端回复服务器的,确认服务器的上一个断开连接请求,所以也是一个ACK报文;

这就是TCP协议的四次挥手过程。

 

5. 为什么握手需要三次,挥手却需要四次呢?

答案:

三次握手是TCP协议建立连接的过程,建立连接,我只需要确认一下你在我也在就好了啊,三次握手够了;

但是四次挥手是TCP协议是为了断开连接的,所以需要确保我既结束发送数据,也结束接收数据;开始客户端先结束发送并告知服务器,服务器确认后就结束接收了;这两次挥手完成后,客户端还在接收数据哦,服务器也还在发送;所以需要服务器也发送一次FIN包,告知我也结束数据发送了,客户端确认后,才双方都关闭发送和接收数据通道,所以必须要四次~

 

6. tcp和udp的区别?

答案:

TCP协议和UDP协议都是传输层的两个协议: 它们的区别主要有如下3个方面:

第一:TCP是面向连接,就像打电话要先拨号建立连接一样,而UDP是无连接的,即发送数据之前不需要建立连接。

第二:TCP可以提供可靠的服务,能保证数据传输无差错,不丢失,不重复,且按序到达;而UDP协议只是尽最大努力交付,即不保证可靠交付。

第三:因为TCP以上两个特点,所以对应传输效率相对较低,而UDP效率高,所以一些注重速度而不在乎的丢包的场景,会选择用UDP协议,比如IP电话,流媒体等。

 

7. 你了解http协议有哪些响应状态码?

答案:

状态码有如下几种:

1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。

2xx (成功):表示成功处理了请求的状态代码。

3xx (重定向):表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理。

5xx(服务器错误):这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

 

8. HTTP和HTTPS的区别?

答案:

  1. 从安全性来说:http明文传输,易受攻击,无法确认双方身份,也无法保证数据的完整性;https使用ssl加密传输协议,信息是密文,可以认证双方身份,防止信息被截取篡改,安全性相比http要高
  2. 从端口来看:http默认端口80,https默认端口443
  3. 灵活性上:http简单快速,使用灵活;https技术门槛较高,多数个人或私人网站难以支撑
  4. 访问速度:http协议简单,http服务器的程序规模小,因而通信速度很快;https加重了服务端负担,需要更多的资源来支撑,降低了用户的访问速度
  5. 经济适用度:http没有额外的费用要求,https协议CA机构颁发的证书都是需年费的,此外对接https协议也需要额外的技术支持

 

9、https协议比http安全,是如何实现的呢?

答案:

https协议通过SSL协议外壳来实现它的安全性,主要体现在三个方面:

第一: 数据是加密的,SSL协议通过非对称秘钥分发的方式完成秘钥的协商,然后通过对称秘钥的加密方式完成数据的加密;

第二:会验证对方身份。服务端和客户端双方会需要向CA机构申请证书,再SSL握手阶段会验证双方证书是否可信,从而验证双方的身份,防止第三方冒充;

第三:保证数据的完整性。每次的数据都会加上MAC摘要并签名,接收的数据和发送的数据这个摘要信息一致的,就表示数据没有被篡改过。

 

10、当一个用户在浏览器输入url打开一个网页的时候,从输入到加载完整个过程经历了什么?

答案:

  1. 首先它会进行DNS的域名解析;
  2. 建立TCP连接;发起tcp的三次握手
  3. 发送一个HTTP的请求;
  4. 服务器处理相关的请求并返回处理后的结果;
  5. 关闭TCP连接;
  6. 浏览器接收到服务器给到的html代码,开始解析;
  7. 浏览器将解析后的资源(如js、css、图片等)进行请求,并对页面进行渲染呈现给用户。