美文网首页
Web协议栈的常见问题

Web协议栈的常见问题

作者: 叛逆的机器人 | 来源:发表于2020-04-09 22:26 被阅读0次

    1.为什么需要三次握手?
    因为传输双方都必须协商出一个序号,序号相当于起点,后面数据传输了多少,序号就递增多少,后续的确认,重传都是根据这个序号来的。而TCP协议是全双工通信协议,也就是双方都需要这个序号。比如A发送序号给B,B确认收到了,B也发送序号给A,A也确认收到了,这才能保证双方的通信没有问题。因为第二步可以跟第三步合并在一起,所以是三次握手。

    2.为什么需要协商出序号?直接从0开始递增不行么?
    不行。假如从0开始递增,如果A与B进行通信并传输了一些报文段然后结束通信。如果某些报文段在路由中走丢了,然后A与B又开始新一轮通信,这个时候这个走丢的报文段又走回来了,结果就是不能区分这个报文段是这次通信的还是之前的。

    3.为什么需要四次挥手?
    因为TCP协议是全双工通信协议,通信一方结束发送数据,另一方不一定结束,再加上确认报文段,所以需要四次挥手。

    4.TIME_WAIT状态是啥?为啥需要2RTT的时长?
    因为TCP是一个可靠的协议,每发出一个报文段,必须收到对方的响应报文段。为了正常结束,那么在A收到FIN报文段后必须等到B正常收到ACK报文段才行。如果B没有正常收到ACK报文段,这个时候会重新发送FIN报文段,A这个时候必须能正常响应ACK报文段。2RTT刚好是一个报文段在网络的存活时间。还有,如果没有TIME_WAIT状态,那么当AB断开后重连,网络中丢失的报文段就有可能走回来,导致两次连接的报文段错乱。

    5.https协议是如何握手的?
    客户端先发送自己支持的密钥协商算法,服务器选择算法后发送给客户端并把服务器的证书给带上,客户端验证证书通过后,生成一对公私钥,把公钥发给服务器,服务器同样生成一对公私钥,把公钥跟其他一些信息,包括这些信息的签名(用服务器自己的私钥进行签名,与证书里面的公钥是一对)发给客户端。客户端利用证书里的公钥对签名进行验证,验证通过后。双方利用对方的公钥与自己的私钥,生成相同的对称加密密钥。然后通信开始。

    6.在https协议中,对称加密密钥,非对称加密密钥,证书分别有什么作用?
    非对称加密作为传输数据的算法,相比于对称加密运算速度更快。非对称加密主要作为验证服务器身份,如果服务器用私钥进行签名,客户端既可以用公钥验证,因为私钥只有服务器有,所以可以验证服务器身份。证书是对服务器公钥与服务器域名进行绑定的验证,只要证书没问题,那说明域名跟公钥是绑定的,那只要与客户端通信的对方可以通过私钥签名验证,说明客户端通信的对方确实是该域名的服务器,而不是中间人。那么证书是如何保证不被串改的。证书是用CA机构签发的,利用CA机构的私钥对证书进行签名。而CA机构的公钥则在上游证书中,客户端获取到上游证书中的签名,即可对当前证书进行验签。上游证书的验签则可以一步一步来回溯到根证书,根证书是内嵌在客户端中的,只要验签通过,即可保证证书链没问题。

    7.IP地址与MAC地址?

    相关文章

      网友评论

          本文标题:Web协议栈的常见问题

          本文链接:https://www.haomeiwen.com/subject/szxkmhtx.html