zoukankan      html  css  js  c++  java
  • 图解HTTP——阅读笔记

    基础部分

    第1章 了解Web及网络基础

    重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色。

    • 3项重要的web构建技术:HTML,URL,HTTP
    • HTTP协议位于应用层,向下相关的分别是:应用层的DNS协议,负责通过域名查找IP地址;传输层的TCP协议,确保传输的可靠性,封装HTTP数据;网络层的IP协议,负责传输数据,封装TCP数据;
    • URI标识某一互联网资源,URL标识资源的位置,URL是URI的子集;典型的URI如
    ftp://ftp.is.co/rfc/rfc.txt
    

    第2章 简单的HTTP协议

    重点学习HTTP协议的结构,并基于此了解HTTP协议如何搞定通信问题的。

    • 请求报文 = 请求方法 + 请求URI + 协议版本 + 可选的请求首部字段 + 内容实体
    GET /index.html HTTP/1.1
    HOST:hackr.jp
    

    • 上面代码例子中的URI为:http://hackr.jp/index.html
    • HTTP协议不保存状态,也就是说不记得之前的信息——使用cookie解决这个问题;
    • Cookie由服务端生成,响应时传给客户端,客户端予以保存;在下一次请求时,若存有可用Cookie,则把Cookie信息带入;
    • 使用方法对服务器下达命令/发送请求;注意GET是想要获得某个资源的,POST主要是想传输给服务器某些信息的——这个是本意,虽然实际有灵活应用
    • 持久连接:建立一次TCP,持续不断的传输HTTP请求和响应,keep-alive

    第3章 HTTP报文内的HTTP信息

    第4章 返回结果的HTTP状态码

    重点在于通过状态码快速确定请求结果。

    • 数字 + 短语 = 状态
    • 2XX:除了常见的200 OK 意外,204 No Content也是常见的,请求成功,但没有东西返回给你,此时关注204即可;
    • 3XX:重定向,就是浏览器还需要做一些处理才能正确请求到URI;
    • 4XX:客户端错误,400 Bad Request,请求本身有问题;401 Unauthorized,403 Forbidden,请求不对,被禁止了;404 NOT FOund ,请求不对导致未找到;
    • 5XX:服务端错误,500 Internal Server Error,请求ok,执行请求时错误,有可能是服务端错误,也可能是在服务端的Web应用错误;503 Service Unalivable,服务器正忙
    • 不少返回的状态码和实际情况对应不上,但用户不可察觉。。。

    第5章 与HTTP协作的Web服务器

    除了上述的传输过程,HTTP传输路上还可能碰到一些服务器“拦路虎”,了解下。

    • 虚拟域名:多个域名指向同一个IP地址,需要请求时指明域名等信息;
    • 代理服务器:目的是减少客户端对源服务器的访问,所以有缓存代理服务器,透明服务器等,用代理服务器,响应中往往有via
    • 网关:为了安全,把HTTP请求转成其他协议传输;
    • 隧道:同上,只不过用的是SSL加密,透明

    第6章 HTTP首部

    略,等需要的时候再去针对性的查。大致看过一遍,对报文能读懂7成。


    第二部分 拓展

    第7章 确保Web安全的HTTPS

    HTTPS是什么?怎么实现的安全?

    • HTTP安全短板:简便带来的安全问题:明文数据通信,不验证通信方身份,无验证报文完整性;
    • HTTPS针对上述短板,即:HTTPS = HTTP + 加密 + 认证 + 完整性保护;或者 HTTPS = HTTP + SSL(SSL和TSL,TSL也是SSL发展过来的)
    • SSL使用不对称密钥加密技术,也称公开密钥加密技术,核心思路就是公钥加密,私钥解密,具体流程引自百度

    公开密钥加密的过程是:
    假设两个用户A,B进行通信,A先发送信息给B,然后B发送信息给A

    1. B先产生一对密钥k1a和k1b,前者用来加密,后者用来解密
    2. B把密钥k1a发送给A;(因为k1a只能用来加密,截获方无法通过它来解密并读取密文)
    3. A用密钥k1a加密一条信息,使之变成密文c1;
    4. A把密文c1发送给B;
    5. B用密钥k1b解密,并读取解密后的信息;
    6. A产生一对密钥k2a和k2b,前者用来加密,后者用来解密
    7. A把密钥k2a发送给B;
    8. B用密钥k2a加密一条信息,使之变成密文c2;
    9. B把密文c2发送给A;
    10. A用密钥k2b解密,并读取解密后的信息;
    • 钥匙一般和证书绑定,用以验证密钥的合法性;
    • 自行搭建的OPENSSL一般不被浏览器所认可;
    • SSL缺点:

    SSL证书需要钱。功能越强大的证书费用越高。个人网站、小网站没有必要一般不会用。

    SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名。IPv4资源不可能支撑这个消耗。(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持。WindowsXP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用。)

    HTTPS连接缓存不如HTTP高效,大流量网站如非必要也不会采用。流量成本太高。

    HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本。如果全部采用HTTPS,基于大部分计算资源闲置的假设的VPS的平均成本会上去。

    HTTPS协议握手阶段比较费时,对网站的相应速度有负面影响。如非必要,没有理由牺牲用户体验。

    最关键的,SSL证书的信用链体系并不安全。特别是在某些国家(咳咳,你们懂的)可以控制CA根证书的情况下,中间人攻击一样可行。

    第8章 确认访问用户身份的认证

    如何确认客户端的身份呢?主要有四种认证方式。

    • BASIC:base64编码交换用户名和密码的认证方式,安全等级较低,用的较少;
    • DIGEST:类似握手,服务端会发送质询码(base64)过来,发送过去的信息用MD5加密;
    • SSL客户端认证:客户端证书,一般采用客户端证书+密码双重认证,前者认证客户端合法性,后者认证客户操作;客户端证书一般由服务端颁发,比如银行的U盾;缺点就是成本高;
    • FORM:表单认证,一般的用户名密码——认证一般基于表单验证

    第9章 基于HTTP的功能追加协议

    第10章 构建Web内容的技术

    第11章 Web的攻击技术

    放一起说吧;

    都是比较了解化的东西,只是说明HTTP还算是功能强大、方便好用,但是缺点不少。

  • 相关阅读:
    Java—数据库技术
    Java—泛型
    Java—图形处理
    Java—网络技术
    vb.net 分割byte数组的方法SplitBytes
    动态支付宝转账码可指定金额备注无限秒生成的方法
    关于支付宝个人账户免签收款自动备注
    vb.net MakeWParam
    Vb.net MakeLong MAKELPARAM 合并整数代码
    百度图片objURL解密vb.net版
  • 原文地址:https://www.cnblogs.com/andy1202go/p/8533789.html
Copyright © 2011-2022 走看看