面试官:说一下tcp三次握手

379 阅读2分钟

简单回答

三次握手过程:

  1. 发送端首先发送一个带 SYN 标志的数据包给对方
  2. 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息
  3. 最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束

握手过程使用了TCP的标记:  SYN(synchronize) 和  ACK(acknowledgement)
三次握手的目的是了解双方的发送能力和接收能力正常,准确无误地将数据送达目标处

追问:HTTPS的SSL层怎么实现加密?

HTTP + SSL(加密 + 证书认证 + 完整性保护) = https 一. 加密方式:混合加密

1. 交换密钥阶段:  公开密钥加密(非对称密钥加密)
2. 交换报文阶段:  共享密钥加密(对称密钥加密)

二. 证书:证明公开密钥正确性

1. 服务器把自己的公钥登录至CA
2. CA用自己的私钥向服务器的公钥署数字签名并颁发公钥证书
3. 客户端拿到服务器的公钥证书后,使用CA的公钥验证证书的签名
4. 使用服务器的公钥对报文加密后发送
5. 服务器用私钥对报文解密

CA:数字证书认证机构
CA的公钥已事先植入到浏览器里了

三. 完整性保护

在HTTPS通讯中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。

追问:我们常用的代理工具是怎么抓https请求?

  1. 截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
  2. 接受真实服务器响应,用代理自己的证书伪装服务端向真实客户端发送数据内容
  3. 一般情况下HTTPS中是客户端对服务端做证书校验(所以抓包时候,需要客户端安装代理服务器的证书,并信任)

代理主要是有能力完成TLS/SSL握手;可以提供一个根证书;自动根据根证书生成一个签名的服务器证书

追问:HTTPS加密是非对称加密吗?非对称和对称的效率差别知道吗?

  1. 混合加密,用非对称加密交换密钥,然后对称加密地进行交换报文。
  2. 非对称加密会比对称加密慢千倍。这是因为对称加密主要的运算是位运算,速度非常快;非对称加密计算一般都比较复杂,比如 RSA,它里面涉及到大数乘法、大数模等等运算

文档参考:图书《图解HTTP》