面试中常被问到的(23)协议解析中http与https

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到的(23)协议解析中http与https相关的知识,希望对你有一定的参考价值。

HTTP:

首先明白,什么是http协议?超文本传输协议,也就是明文字符串传输协议

  • 特点如下:
  1. http协议在传输层基于tcp实现,是一个简单的请求/响应协议,支持C/S模式
  2. 客户端向服务端发起请求时,只需要传入请求方法和请求资源路径(请求方法+URL)简单快捷,搭建http服务器规模小,通信速度快
  3. http通过对头部content-Type修改,控制传输数据类型,允许传输任意类型的数据对象
  4. 无连接保证每次连接只处理一个请求。服务端处理完客户请求,并收到客户应答后便断开连接
  • http协议格式

首行

(1)请求行(请求方法+URL(统一资源定位符)+协议版本)

请求方法:

  1. Get:即可获取响应,也可提交请求 其中获取资源包含正文信息,提交请求中不包含正文
  2. Head:获取响应头部,包含正文
  3. Post:提交请求,包含正文
  4. Put:修改资源
  5. Delete:删除资源
  6. Get-查  Post-增   Delete-删  Put-改

(2)响应行(协议版本+状态码+状态描述信息)

状态码:

  • 100:继续发送
  • 200:请求成功
  • 301:资源被永久转移到其他URL
  • 302:资源被临时转移到其他URL
  • 400:客户端请求服务器无效
  • 403:禁止访问
  • 404:请求资源不存在
  • 500:内部服务器错误
  • 502:服务器收到无效响应,建立连接失败
  • 504:代理服务器响应延迟

头部

Connection长短连接控制keep-alive/close
Referer记录本次请求的来源连接
Content-Type表示正文数据格式传输任意类型数据
Content-Length表示正文数据长度解决粘包问题
cookie /session请求头cookie  响应头session

cookie与session区别:

cookie:用户信息保存在客户端,每次与服务器通信,将用户关键信息取出封装在cookie字段中,发送给服务器。也就是说客户端与服务端通信过程中用户信息在通信链路中传输,此方法容易被黑客截获用户信息,造成信息泄露

session:改进cookie,每次会话前将用户关键信息保存在服务器中,创建会话后,只将对应信息的session-id信息发送给客户端留存,建立通信后,以session-id封装为cookie字段作为通信信息进行传输,仅在服务器根据对应session-id找到对应用户关键信息,此方法非直接传输用户关键信息,更安全

空行:/r/n

正文:客户端提交给服务端信息  或服务端返回给客户端的响应

HTTPS:

首先,要明白https就是对http协议基于ssl进行加密传输

https包括非对称加密和对称加密两个阶段,第一个阶段是使用非对称加密实现客户端与服务端建立连接,第二个阶段是建立连接以后通信均使用对称加密,保证前期通信建立安全可靠,后期通信加解密速度快

SSL加密实现具体流程如下:
1,服务器生成一对秘钥即公私钥到权威机构使用公钥请求颁发一个CA证书

2,通信双方建立连接后,数据传输前,服务器将证书发送给客户端

3,客户端对证书进行解析,根据信息进行身份验证

4,身份验证通过后,使用公私钥加密(一个随机数+自己支持的对称加密算表)发送给服务器

5,服务器收到公钥加密数据使用私钥进行解密,并且给客户端回复一个随机数+自己支持的对称加密算表

6,双发通过自己的随机数和对方发送过来的随机数配合对称加密算表进行计算得到一个对称秘钥

7,后续通信都通过对称秘钥(会话秘钥)来加密数据通信,客户端发送公钥给服务端,自己保留私钥,同时服务端发送公钥给客户端,自己保留私钥

8,客户端通过服务端公钥加密数据后发送给服务端,服务端收到数据利用对应私钥解密,完成加密传输

http与https区别:

  1. http协议以明文字符串形式在网络中传输数据,而https在http基础上建立ssl连接实现加密传输
  2. https在三次握手后,还需要继续ssl继续协商加密所使用的的对称秘钥
  3. http协议端口号80,https协议端口号是443

以上是关于面试中常被问到的(23)协议解析中http与https的主要内容,如果未能解决你的问题,请参考以下文章

Java面试中常被问到的几大技术难题

总结!Java面试中常被问到的几大技术难题

干货 | Java面试中常被问到的几大技术难题

求职季 | Java面试中常被问到的几大技术难题

面试中常被问到的(15)死锁发生及解决

深度分析:面试90%被问到的 SessionCookieToken,看完这篇你就掌握了!