HTTP /HTTPS

[链接] (https://zhuanlan.zhihu.com/p/24913080)
   
    HTTP 协议
    http 是文本传输协议,属于应用层,用于客户端向服务器获取资源或者发送资源,并且服务器进行相应
    其工作流程大概如下:
            1.根据域名进行DNS 得到ip
                (1),搜索自身的DNS缓存,如果没有就去系统和磁盘里面找,如果还没有就发起请求得到ip
            2.拿到ip 以后进行tcp 3次握手如上
            3.握手成功以后发送http请求,数据传输完成以后
            4,四次挥手断开连接
    HTTP 由 请求 和 响应 两部分组成
    HTTP请求又由
                (1)状态行: 请求方法(get),+ 路径  + 协议版本号组成
                (2)请求头:  cookie 和ua 等主机信息
                (3)请求体: 传输内容 如post的请求参数
   
    http 响应 由
                (1)状态行: 状态码如 302 404
                (2)响应头:一些基本信息
                (3)响应体:返回的内容
   
   
    常见状态码:
            状态码一般由3位构成:
           
            1xx : 表示请求已经接受了,继续处理。
            2xx : 表示请求已经处理掉了。
            3xx : 重定向。
            4xx : 一般表示客户端有错误,请求无法实现。
            5xx : 一般为服务器端的错误。
            比如常见的状态码:
           
            200 OK 客户端请求成功。
            301 Moved Permanently 请求永久重定向。
            302 Moved Temporarily 请求临时重定向。
            304 Not Modified 文件未修改,可以直接使用缓存的文件。
            400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
            401 Unauthorized 请求未经授权,无法访问。
            403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。
            404 Not Found 请求的资源不存在,比如输入了错误的URL。
            500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
            503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
   
   
    其中 get 和 post 的区别:
          1.参数get 放在状态行里面拼接在URL后面,post 放在请求题里面
          2.get的请求参数大小有限制
          3.get 明文 不安全
          4,get可以缓存当做书签,post可以缓存 但是不能当做书签
   
    关于cookie
        因为http 是无状态无连接的 所以断开以后在请求服务器不能使识别是否为同一用户,
        于是就用服务器给客户端一个cookie(服务端生成一个sessionID 放到cookie里面) 里面有一些基本信息,客户端每次请求的时候带上cookie,服务器通过cookie识别是否为统一用户
    关于 持久链接 keep-Alive 和 无状态无连接
        默认开启keep-Alive  这样不用每次请求都进行tcp三次握手
    关于GET的缓存
        如果数据没有变的话,服务器会根据第一次返回的报文 last - modified 进行判断是否需要更新,否则直接使用缓存
    */
   
    /*
    https://zhuanlan.zhihu.com/p/22142170
    https://blog.csdn.net/qq_23167527/article/details/80614454
    HTTPS :
          1.客户端发起ssl 请求,
          2.服务端向客户端发送CA证书
          3.客户端验证CA证书,并且从CA中取出 注册CA时的公钥,生成对称秘钥,对对称秘钥加密,发送给服务器
          4,服务器收到请求,用注册CA时的私钥 解密加密信息 得到 对称秘钥
          然后通信通过对称秘钥加密信息 解密信息
   
    第一种用法:公钥加密,私钥解密。---用于加解密
    第二种用法:私钥签名,公钥验签。---用于签名
   

    */

你可能感兴趣的:(HTTP /HTTPS)