Http协议和Https协议

Http网络协议

一、简介

  1. 超文本传输协议,基于TCP/IP协议来传输数据;
  2. 原理:客户端-服务端架构,客户通过URL向服务端发起请求,服务端接收到请求后,向客户端发送响应内容。

二、特点

  1. 无连接,限制每次连接只处理一个请求,服务器处理完客户端请求,并收到客户端的应答后,断开连接,节省传输时间;
  2. 媒体独立,客户端和服务器能处理 的数据,都可以通过Http发送;
  3. 无状态,对于处理过的事务没有记忆能力,无法记住用户是否登录,cookie就是用来解决这个问题的。
  4. 明文传输,容易被监听

三、消息结构

  1. 客户端请求消息:请求行-请求头-空行-请求内容


    image.png
  2. 服务器响应消息:响应行-消息报头-空行-响应正文


    image.png

四、状态码分类

  1. 1**:消息服务器已经收到,需要请求者继续操作,eg:101:客户端需要切换协议;
  2. 2**:成功,eg:200;
  3. 3**:重定向,需要进一步操作完成请求,eg:302:网页被永久转移到其他URL;
  4. 4**:客户端错误,eg:404:找不到页面;
  5. 5**:服务器错误,eg:500:内部服务器错误。

五、请求方法

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法

  1. GET 请求指定的页面信息,并返回实体主体;
  2. HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头;
  3. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和 / 或已有资源的修改;
  4. PUT 从客户端向服务器传送的数据取代指定的文档的内容;
  5. DELETE 请求服务器删除指定的页面;
  6. CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
  7. OPTIONS 允许客户端查看服务器的性能;
  8. TRACE 回显服务器收到的请求,主要用于测试或诊断;
  9. PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 .

六、GET和POST区别

  1. GET:请求指定页面信息,直接写URL访问,暴露URL,可以被缓存,不安全;请求头和数据打包在一起发送;数据长度有限制(2K);
  2. POST: 向指定资源提交数据进行处理请求,数据包在请求体内;参数不会被保留;先发送head,服务器响应100,再发送data,发包两次。

七、三次握手

关键词
  1. SYN:同步位,位码=1,代表同步位状态成功
  2. 序列号:Sequence Number 随机产生
  3. ACK:确认位,主机产生的序列号+1
  4. SYN_SENT:客户端已经发送完SYN数据包
  5. SYN_RCVD:服务端已经收到SYN数据包
  6. ESTABLISHED:已经建立了连接可以发送数据
TCP三次握手

第一次:客户端向服务端发送SYN数据包(SYN=1, 序列号=x)。客户端进入SYN_SENT状态,等待服务端确认;
第二次:服务端接收到SYN数据包并进行确认(SYN=1,ACK number=x+1,ACK=1,序列号=y),再发送SYN+ACK数据包给客户端,服务端进入SYN_RCVD状态;
第三次:客户端收到ACK+SYN数据包,如果ACK Number=x+1,将ACK Number设置为y+1,ACK=1,向服务器发送ACK数据包,此时服务端客户端都进入ESTABLISHED状态。

为什么需要三次握手?

为了防止已经失效的连接请求报文突然又传到服务端 ,产生错误。 解释:报文已经发送,但是在某个网络节点发送滞留,导致连接释放,释放后报文才到达另一端。

八、四次挥手

关键词
  1. FIN:结束
  2. FIN_WAIT_1:客户端主动关闭连接时的状态(此状态难以看到,发起关闭连接后,另一端会马上同意)
  3. FIN_WAIT_2:服务端同意关闭后,但是还有一些数据要给客户端,客户端不能马上关闭,半连接状态;
  4. TIME_WAIT:客户端等2MSL后,就可以关闭了。(如果FIN_WAIT_1时就收到了FIN和ACK的数据,直接进入此状态)
  5. 2MSL:最大生存时间;
  6. CLOSED:2MSL后进入关闭状态。
TCP四次挥手

第一次:客户端给服务端发送FIN报文(序列号=x),A进入FIN_WAIT_1状态,表示客户端没有数据给服务端了;
第二次:服务端收到FIN报文,给A发送ACK报文(ACK=x+1),A进入FIN_WAIT_2状态。服务端同意客户端关闭连接;
第三次:服务端向客户端发送FIN报文(序列号=y),请求关闭连接,服务端进入LAST_ACK状态;
第四次:客户端收到FIN报文,向服务端发送ACK报文(ACK=y+1),A进入TIME_WAIT状态,服务端收到ACK报文后关闭连接,客户端在2MSL后依旧没有收到回复,证明服务端已经关闭,客户端就可以关闭了。

为什么TCP需要四次挥手?

TCP是一种面向连接的、可靠地的、基于字节流的传输层通信协议。
TCP是全双工模式,主机1请求关闭连接,不在发送数据,但是可以接收主机2的数据,主机2不再发送数据,才算关闭,减少了数据丢失的风险。

Https网络协议

一、简介

  1. 安全超文本传输协议,基于TCP/IP协议来传输数据;
  2. 原理:客户端-服务端架构,客户通过URL向服务端发起请求,服务端接收到请求后,向客户端发送响应内容。
  3. 通过SSL(安全套接层)或者TLS(运输层安全)加密

二、原理

  1. 当计算机连接到使用SSL的网站服务器时,计算机的网页浏览器会要求网站确认自己的身份,网页服务器会向计算机发送其SSL证书的副本。

你可能感兴趣的:(Http协议和Https协议)