妥妥的去面试之计算机网络

1、HTTP和HTTPS有什么区别?

HTTPS简单的说就是HTTP的安全版。HTTP协议传输的数据都是未加密的,也就是明文,这对于传输一些私密的信息来说是不安全的,于是就出现了HTTPS,HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。

它们的主要区别:

  • HTTPS需要到ca申请证书,一般免费证书很少,需要交费。
  • HTTP是超文本传输协议,信息的密文传输,而HTTPS是具有安全性的ssl加密传输协议。
  • 它们的使用的是不一样的连接方式和端口。HTTP是80,HTTPS是443

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

简单说一下HTTPS的工作流程?

  1. 客户端使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
  2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. Web服务器利用自己的私钥解密出会话密钥。
  6. Web服务器利用会话密钥加密与客户端之间的通信。

建议与此博客共同食用 HTTP与HTTPS的区别

客户端如何校验 CA 证书?

CA 证书中的 Hash 值,其实是用证书的私钥进行加密后的值(证书的私钥不在 CA 证书中)。然后客户端得到证书后,利用证书中的公钥去解密该 Hash 值,得到 Hash-a ;然后再利用证书内的签名 Hash 算法去生成一个 Hash-b 。最后比较 Hash-a 和 Hash-b 这两个的值。如果相等,那么证明了该证书是对的,服务端是可以被信任的;如果不相等,那么就说明该证书是错误的,可能被篡改了,浏览器会给出相关提示,无法建立起 HTTPS 连接。除此之外,还会校验 CA 证书的有效时间和域名匹配等。

2.HTTPS的SSL握手建立过程?

假设现在有客户端A和服务器B:

  • 首先,客户端A访问服务器B。这时候客户端 A 会生成一个随机数1,把随机数1 、自己支持的 SSL 版本号以及加密算法等这些信息告诉服务器 B 。
  • 服务器B收到这些信息后,然后确认一下双方的加密算法,然后服务端也生成一个随机数B,并将随机数B和CA 颁发给自己的证书一同返回给客户端A。
  • 客户端A得到CA证书后,会去校验该CA 证书的有效性,校验方法在上面已经说过了。校验通过后,客户端生成一个随机数3,然后用证书中的公钥加密随机数3,并传输给服务端B
  • 服务端B得到加密后的随机数3,然后利用私钥进行解密,得到真正的随机数3。
  • 最后,客户端A和服务端B 都有随机数1、随机数2、随机数3,然后双方利用这三个随机数生成一个对话密钥。之后传输内容就是利用对话密钥来进行加解密了。这时就是利用了对称加密,一般用的都是 AES 算法。
  • 客户端A通知服务端B ,指明后面的通讯用对话密钥来完成,同时通知服务器B客户端A的握手过程结束。
  • 服务端B通知客户端A,指明后面的通讯用对话密钥来完成,同时通知客户端A服务器B的握手过程结束。
  • SSL的握手部分结束,SSL安全通道的数据通讯开始客户端A和服务器 B开始使用相同的对话密钥进行数据通讯。

3.HTTP1.1和HTTP1.0的主要区别?

  1. 缓存处理。HTTP1.1加入了更多的缓存头来控制缓存策略;
  2. 带宽的优化。HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了。HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,充分利用了带宽;
  3. 长连接。HTTP1.1支持了长连接,减少了在建立和关闭连接时不必要的消耗和延迟。
  4. 错误通知的管理,在HTTP1.1中新增了24个错误状态响应码;
  5. HTTP1.1的请求消息和响应消息都应支持Host头域。

注意:HTTP长连接指的是TCP的连接

Http1.0是短连接,HTTP1.1默认是长连接,也就是默认Connection的值就是keep-alive。但是长连接实质是指的TCP连接,而不是HTTP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。

4.GET和POST请求方式的主要区别?

  1. GET主要是从指定的资源请求数据。POST是向指定的资源提交要被处理的数据
  2. GET请求提交的数据是放在URL上的,但POST是放在请求体里,所以在GET的数据大小是收到URL的限制,但POST请求就没有限制。
  3. POST请求比GET请求更安全,因为请求数据放在URL上很容易就被第三方盗取,但把数据放在请求体的POST就相对来说更安全。

5.HTTP中Cookie和Session的作用和区别?

作用:

HTTP协议是一种无状态协议,在数据交换完毕后,服务端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。此时,服务器无法从链接上跟踪会话。cookie和session可以跟踪会话,弥补HTTP无状态协议的不足。

区别:

session机制采用的是在服务端保持状态的方案,而cookie机制则是在客户端保持状态的方案。

cookie原理

  • 服务器创建cookie对象,把会话数据存储到cookie对象中;
  • 服务器发送cookie信息到浏览器;
  • 浏览器得到服务器发送的cookie,然后保存在浏览器端;
  • 浏览器在下次访问服务器时,会带着cookie信息;
  • 服务器接收到浏览器带来的cookie信息。

Session原理:

  • 第一次访问创建session对象,给session对象分配一个唯一的ID,叫JSESSIONID;
  • 把JSESSIONID作为Cookie的值发送给浏览器保存;
  • 第二次访问的时候,浏览器带着JSESSIONID的cookie访问服务器;
  • 服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象;
  • 如果找到对应编号的session对象,直接返回该对象;
  • 如果找不到对应编号的session对象,创建新的session对象。

6.TCP/UDP

有关TCP/UDP的面试问题

  • TCP和UDP的区别
  • 三次握手
  • 四次挥手

建议查看笔者的这篇博客

Android面试必备佳品之TCP与UDP协议

推荐阅读更多精彩内容