美文网首页
Http协议和Https协议

Http协议和Https协议

作者: 千鸟月读 | 来源:发表于2019-06-27 17:47 被阅读0次

    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协议

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