• 网络--会话层、表示层、应用层


    URL encode
        组成
            英文字母(a-zA-Z)
            数字(0-9)
            -_.~ 4个特殊字符
            ! * ' ( ) ; : @ & = + $ , / ? # [ ]保留字符
        https://blog.csdn.net/freeking101/article/details/68922983
    
    
    HTTP 特征
        基于TCP/IP
        HTTP:80端口 HTTPS:443端口
        无连接状态
        状态行+请求头+消息主体
        状态行+响应头+响应正文
    
    
    状态码
        1xx:信息
        2xx:成功
            204 no content
            206 partial content
                响应报文由content-range指定内容范围
        3xx:重定向
            304 Not Modified
                条件 GET
            301 302 303 307
                301 302 属于HTTP 1.0
                303 307 属于HTTP 1.1
                浏览器对303状态码的处理跟原来浏览器对HTTP1.0的302状态码的处理方法一样,POST转GET
                浏览器对307状态码处理则跟原来HTTP1.0文档里对302的描述一样,POST转POST
            https://www.cnblogs.com/cswuyg/p/3871976.html
            https://blog.csdn.net/qmhball/article/details/7838989
        4xx:客户端错误
            400 bad request
            401 unauthorized
            403 forbidden
            404 not found
        5xx:服务端错误
    
    
    HTTP常用首部
        通用首部
            cache-control 操作缓存的工作机制
            connection 控制不再转发给代理的首部字段;管理持久连接
            transfor-encoding HTTP1.1仅支持chunked
                如果设置此项,content-length被忽略
        请求首部
            authorization 响应401状态码
    
    
    recv 如何判断通信结束
        判断通信结束必须依赖于应用层的实现
        1. connection:close 或者 识别到对端关闭
            传输层如何识别对端关闭
                SIGPIPE
                recv一直返回0
                心跳
        2. content-length
        3. transfer-encoding:chunked 
            数据结束部分用0表示,然后是连续的两个
    
    https://blog.csdn.net/streen_gong/article/details/21447859
    
    
    HTTP/1.1引入的两大功能
        keep-alive
            HTTP/1.0中,默认使用短连接
            HTTP/1.1起,默认使用长连接
            keep-alive 唯一能保证的就是当连接被关闭时你能得到一个通知
            keep-alive 解决的是频繁通信导致的连接冗余(TCP握手),不维持状态
        pipling
            不用等待响应,直接发送下一个请求
            相交于keep-alive更快
    
    
    cookie与session
        cookie是server发送给client的一小段信息,client请求时可以读取该信息发送到server,进而进行用户的识别
        session是服务器维护的一个对象,用于标识一哥client,其实现依赖于cookie
        cookie-session是一种维持状态的方法
    
    
    POST与GET
        POST四种数据类型
            application/x-www-form-urlencoded
            multipart/form-data
                常用来上传文件
                多个文件以boundary分割    
            application/json
            text/xml
        https://imququ.com/post/four-ways-to-post-data-in-http.html
        POST 的优势
            GET是幂等的,POST则不然(HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用)
            POST的安全性更高,体现在请求内容不在URL中,而在BODY里面,这样的好处有:
                1. 不会残留历史记录
                2. 可以对数据进行编码
            注:HTTP本身没有加密功能,所以POST也没有,但是在HTTPS中,BODY内容就可以被加密了,所以加密是POST+SSL协同的效果。
        条件 GET
            客户端将本地缓存的修改时间发送给服务器检查,如果没有更新则返回304 Not Modified
    
    
    代理与隧道
        代理与VPN
            因为SSL隧道通信过程中,报文全部为加密的(包括请求头和状态行),代理无法解析响应内容,所以这个时候代理只能透明转发
        SSL隧道
            SSL隧道是使用加密技术建立的一种连接
        HTTP PROXY
            普通代理(明文转发)
                HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端
                正向代理:客户端建立的代理,如PAC
                反向代理:服务器建立的代理
            隧道代理(透明转发)
                HTTP 客户端通过 CONNECT 方法请求隧道代理创建一条到达任意目的服务器和端口的 TCP 连接,并对客户端和服务器之间的后继数据进行盲转发
            https://imququ.com/post/web-proxy.html
        SOCKS Proxy
            一种纯代理协议
            运行在1080端口
        HTTP gateway
            二层目的MAC地址是网关的,三层目的IP是服务器的
    https://notfalse.net/50/http-intermediary
    https://wenku.baidu.com/view/db37ded63186bceb19e8bbf6.html
    https://medium.com/@Blankwonder/%E5%90%84%E7%A7%8D%E5%8A%A0%E5%AF%86%E4%BB%A3%E7%90%86%E5%8D%8F%E8%AE%AE%E7%9A%84%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94-1ed52bf7a803
    
    
    SSL/TLS
        四个协议
            Record Protocol
                四个协议的下层,使用对称加密
            Handshake Protocol
                握手协议,包含clienthello、serverhello/serverhellodone、clientkeyexchange
            Change Cipher Spec Protocol
                密码变更协议
            Alert Protocol
            Application Protocl
        四次握手
            Server Key Exchange
                证书信息不足时,用来交换密钥
            Client Key Exchange
                RSA:提供 pre-master secret
                Diffie-Hellman:提供公开值
            Session Ticket
                用只有服务端知道的安全密钥加密过的会话信息,最终保存在浏览器端
                客户端在 ClientHello 时带上了 Session Ticket,只要服务器能成功解密就可以完成快速握手
                https://imququ.com/post/optimize-tls-handshake.html#toc-3-1
        PreMaster secret
            Client Hello、Server Hello、Client Key Exchange分别产生一个随机数,最后一个随机数即为PreMaster secret
            三个随机数最终生成通信使用的对称密钥
        TLS session resumption
        http://wiki.jikexueyuan.com/index.php/project/openresty/ssl/session_resumption.html
    
    
    中间人攻击
        SSLSniff:攻击者在网关截获SSL会话,替换服务器公钥证书,将公钥PKey换成自己的公钥PKey,欺骗客户端(证书认证是个问题)
        SSLStrip:Attacker在客户端与服务器建立连接时,在Attacker与服务器之间形成HTTPS连接,而在客户端与Attacker之间形成HTTP连接
        防御方法:
            1. 公钥基础建设PKI
            2. 延迟测试
        https://elliotsomething.github.io/2016/12/22/HTTPS%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB%E5%8F%8A%E9%98%B2%E5%BE%A1/
    
    
    证书
        CA Catificate Authority
            发放服务器证书,由域名、公司信息、序列号和签名信息组成
            TOP5:Symantec、Comodo、Godaddy、GolbalSign、Digicert
        服务器证书分类
            DV(Domain Validation)
                面向个体用户,安全体系相对较弱,验证方式就是向 whois 信息中的邮箱发送邮件,按照邮件内容进行验证即可通过
            OV(Organization Validation)
                面向企业用户,证书在 DV 证书验证的基础上,还需要公司的授权,CA 通过拨打信息库中公司的电话来确认
            EV(Extended Validation)
                地址栏展示了注册公司的信息,这会让用户产生更大的信任,这类证书的申请除了以上两个确认外,还需要公司提供金融机构的开户许可证,要求十分严格
        RSA
            RSA 加密方案和 RSA 签名方案是不同的
            尽管公私钥互换也可以成功加解密,但是公钥和私钥有完全不同的要求
        https://www.cnblogs.com/JCSU/articles/2803598.html
        https://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/
    
    
    高并发架构
        client
        dns
        反向代理(nginx)
        webserver
        service
        database
        https://zhuanlan.zhihu.com/p/24830094
    
    
    refs:
        HTTP面试知识点             https://hit-alibaba.github.io/interview/basic/network/HTTP.html            
        http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
        https://segmentfault.com/a/1190000002554673
  • 相关阅读:
    Cyber Security
    Cyber Security
    Cyber Security
    Cyber Security
    Balanced Number HDU
    Round Numbers POJ
    Bomb HDU
    不要62 HDU
    Making the Grade POJ
    You Are the One HDU
  • 原文地址:https://www.cnblogs.com/shaellancelot/p/9021887.html
Copyright © 2020-2023  润新知