不可不知的软件测试经典面试题

软件测试经典面试题

    • Q1、为什么要三次握手为什么不能用两次握手进行连接/li>
    • Q2、为何连接的时候是三次握手,关闭的时候是四次挥手/li>
    • Q3、如果已经建立了连接,但是客户端突然出现故障怎么办/li>
    • Q4、为何TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态/li>
    • Q5、简述三次握手和四次挥手
    • Q6、为什么客户端最后要等待2MSL同Q4)
    • Q7、HTTP和HTTPS的区别/li>
    • Q8、TCP和UDP区别/li>
    • Q9、HTPPS为什么安全/li>

?color{red}{spadesuit} ?

Q1、为什么要三次握手为什么不能用两次握手进行连接/h2>

对三次握手不明白的可以看下三次握手和四次挥手

??答:三次握手完成两个功能:一是连接服务器指定的端口,建立TCP连接,保证通信双方的数据发送和接受正常;二是同步连接双方的序列 和确认 并交换TCP窗口大小信息,这个序列 在握手过程中被发送和确认。

三次握手是为了防止已失效的连接请求 文突然又传送到服务端,而发生错误。

三次握手若改为两次握手,很容易发生死锁。我们假设这样一种情况,考虑计算机S和C之间的通信,假定C给S发送一个分组请求,S收到后发送确认应答分组。按照两次握手协议,S认为连接已经成功建立,可以开始发送数据分组,可是,S的应答分组在传输给C的过程中出现丢失,C不知道S是否已经准备好,不知道S建立了什么样的序列 ,C甚至会怀疑S是否已经收到了自己的请求,在这种情况下,C认为连接还未成功,将忽略S发来的任何数据分组,只等待连接确认应答分组。而S在发出的分组超时后,重新发出同样的分组,便形成了死锁。

Q2、为何连接的时候是三次握手,关闭的时候是四次挥手/h2>

??答:连接的时候是三次握手,是因为Server端收到Client端的SYN连接请求 文后,可以直接发送SYN+ACK 文,其中ACK 文是响应,SYN是同步。但关闭时是四次是因为,当Server端收到FIN 文时,并不会立即关闭socket,它仅仅表示对方(Client端)发送完了自己要发的数据,但是,server端的数据未必已经发完,因此,Server端先礼貌地回应Client端一个ACK,”嗯,好的,我收到了“。只有当Server端把所有的数据都发完了,才能发送FIN 文,因此FIN和ACK不能同时一起发送给对方,需要分开来发送,导致多了一次,因此是四次挥手。

Q3、如果已经建立了连接,但是客户端突然出现故障怎么办/h2>

??答:TCP还设有一个保活计时器,当然,客户端若出现故障,server端不可能傻傻一直等待下去,白白浪费资源。服务器每收到一客户端的请求后都会重新复位这份计时器,时间通常是设为2小时,若超过这个设定时间还未收到客户端的任何数据,服务器便会发送一个探测 文段,以后每隔一定时间(75分钟)发送一次。若一连发送10个探测 文人仍然没有得到反应,服务器就认为客户端出了故障,接着关闭连接。

Q4、为何TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态/h2>

??答:按道理,四个 文都发送完毕可以直接进入CLOSE状态了,但是,我们必须假设 络是不可靠的,有可能最后一个ACK丢失了。所以,TIME_WAIT状态就是用来重发可能丢失的ACK 文。

在client端发送出最后的ACK 文回复给server端(ACK可能会丢失),在server端未接收到ACK之前,会一直重复发送FIN片段,所以Client端不能关闭,必须处于TIME_WAIT等待状态。client端会设置一个定时器,等待2MSL的时间,如果在该时间内再次收到FIN,那么client端会重发ACK并再次等待2MSL(Maximum Segment Lifetime)若直到2MSL,Client端没有再次收到FIN,那么Client端推断ACK已经成功被接收,则结束TCP连接。

Q5、简述三次握手和四次挥手

参考我的另外一篇博文三次握手和四次挥手

Q6、为什么客户端最后要等待2MSL同Q4)

该问题和Q4问题类似,下面是另外一种回答参考

??答:它可以保证客户端发送的最后一个ACK 文能够到达服务器,因为这个ACK 文可能丢失。MSL是最大 文生存时间,2倍的MSL刚好是 文来回的时间,如果在这个2MSL时间内客户端没有收到服务器端发来的FIN片段,代表服务器端已经成功接收到了ACK,如果没有成功接收,服务器端会发送FIN片段,这是客户端可以重新发送ACK 文,所以它能确保发送的最后一个ACK 文到达服务器。

Q7、HTTP和HTTPS的区别/h2>

??Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
二者之间存在如下不同:

  1. 端口不同:Http的默认端口是80,Https则是443;
  2. 资源消耗:和Http通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
  3. 开销:Https需要申请证书,而证书一般需要向认证机构购买;
  4. http连接很简单,无状态的,而https是由SSL+HTTP协议构建的可进行加密传输、身份验证的 络协议,比http安全。

Q8、TCP和UDP区别/h2>

TCP (Transmission Control Protocol)是传输控制协议
UDP(User Datagram Protocol)是用户数据 协议
两者都属于传输层协议,它们之间的区别包括:

  1. TCP是面向连接的,UDP是无连接的;
  2. TCP是可靠的,UDP是不可靠的;
  3. TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
  4. TCP是面向字节流的,UDP是面向 文的;
  5. TCP有拥塞控制机制,UDP没有拥塞控制,适合媒体通信;
  6. TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大

所谓字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以 文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传输给对方。

Q9、HTPPS为什么安全/h2>

这个是我朋友在秋招面试时在回答完Q7的问题后延伸出来的另外一个问题。详情看这篇?HTTPS为什么安全

更多面试题可以看
软件测试笔试面试题
三次握手和四次挥手

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年3月9日
下一篇 2019年3月10日

相关推荐