初识HTTP协议

http笔记

网络基础tcp/ip

tcp/ip的概念

  • 把火炼网关联的协议集合起来统称TCP/IP.

tcp/ip的分层分为哪几层?它有哪些优点?各层各有哪些作用?

  • 分为:应用层,传输层,网络层,数据链路层
  • 优点:
    • 1.分层设计,当某个地方需要改变时,只需要对某个地方改变,而不需要将整个部分替换掉.
    • 2.各层接口规划后,每个层次的内部设计就可以自由改动.
    • 3.每层只需要考虑分派给自己的任务,而无需关心其他层的内部活动.
  • 作用
    • 应用层:
      • 应用层决定了向用户提供应用服务是通信的活动.tcp/ip预存了各类通用的应用服务,比如HTTP/FTP和DNS.
    • 传输层:
      • 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输.传输层有两个不同的协议TCP和UDP
    • 网络层:
      • 网络层用来处理在网络上流动的数据包.数据包是网络传输的最小数据单位.该层规划了通过怎样的路径到达对方计算机,并把数据包传送给对方.当与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项中选择一条传输线路.
    • 链路层:
      • 用来处理链接网络的硬件部分.包括控制操作系统,硬件的设备驱动,网卡及光纤等物理可见部分(还包括链接器等一些传输媒介)
  • TCP/IP通信流传输的过程(HTTP)
    • 1.首先发送端客户端向接收端发出一个web页面的HTTP请求

    • 2.为了传输方便,在传输层(TCP协议)把应用层出接收到的数据(HTTP请求报文)进行分割,并在各报文打上暴击序号及端口后转发给网络层.

    • 3.在网络层(IP协议),增加通信目的地的MAC地址后转发给链路层.这样一来,发往网络的通信请求就准备齐全了.

    • 4.接收端的服务器在链路层接收到数据,按序网上发送,一直到应用层.

    • 5.当接收数据传输到应用成,才能算是真正接收客户端发送过来的HTTP请求.

    • ==========================================================

      • TIP/IP中的封装的概念?
        • 发送端在层与层之间传输数据时,每经过一层打上一个该层所属的首部信息.反之,接收端在层与层之间传输数据时,没经过一层会把对应的首部消去.这种吧数据信息包装起来称为封装.

IP、tcp和DNS

  • IP

    • 定义:按层次分,IP协议位于网络层。几乎所有的网络系统都会用到IP协议。TCP/IP中的IP指的是网际协议。
    • 作用:把葛总数据包传送给对方。而确保能传送到对方那里,需要满足各类条件。其中两个重要条件是IP地址和MAC地址。IP地址可以和MAC地址进行配对。IP地址可换,但MAC地址基本上不会更改。
    • IP和ARP协议关系
      • 在需要经过多台计算机和网络设备中转才能连接到对方。而进行中转时,会利用下一站中转设备MAC地址来搜索下一个中转目标。这时会采用ARP协议。
    • ===============================================
      • ARP协议:
        • 是一种可以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址
      • 路由选择:
        • 在到达通信目标前的中转过程中,哪些计算机和路由器等网络设备只能获取很初略的传输线路,这种机制称为路由选择。
  • TCP

    • 定义:按层次分,TCP位于传输层,提供可靠的字节流服务。
    • TCP的三次握手过程?
      • 收到了吗? --> 收到了 --> 好的
  • DNS

    • 定义:按层次分,DNS位于应用层。它提供了域名到IP地址之间的解析服务。DNS协议提供通过域名查找IP地址,或逆向从IP地址反差域名的服务。
  • +++++++++++++++++++++++++++++++++++++++++

    • 各协议与http之间关系?
      • 客户端
        • DNS职责:负责对域名和IP地址之间提供解析服务。
        • HTTP职责:生成针对目标WEB服务器的HTTP请求的报文
        • TCP职责:为了方便通信,将HTTP请求报文分割成报文段,并把每个报文段可靠传给对方。
        • IP职责:搜索对方的地址,一边中转一边传送。
      • 服务端
        • TCP职责:从对方那里接收到的报文段,按序列号以原来的顺序重组请求报文。
        • HTTP职责:对WEB请求的内容的处理。请求的结果也同样利用TCP/IP通信协议项用户进行回传。

URI和URL

  • URI和URL概念:

    • URI:统一资源标识符。是由某个协议方案标识的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。比如采用HTTP协议时,协议方案就是http。
    • URL:统一资源定位符。使用web浏览器访问web页面需要输入的网页地址。
  • URI和URL两者区别:

    • URI用字符串标识某一个互联网资源,而URL表示资源所在互联网位置。
    • URL是URI的子集
  • URL格式:


简单的http协议

  • 请求报文的组成:
    • 请求方法、请求URI、协议版本、可选请求首部字段和内容实体构成。


* HTTP协议的无状态指的是什么?有什么好处? * HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。 * HTTP协议的无状态目的: * 为了更快处理大量事物,确保协议的可伸缩性。 * 既然HTTP是无状态的,那么如何实现保存这种状态功能? * **客户端:COOKIE** * 步骤: * 1.客户端第一次访问,没有cookie信息 * 2.服务端生成Cookie信息,通知客户端保存COOkie。 * 3.客户端再访问该服务器发送请求时,客户端会把Cookie信息放在请求头发送过去。 * 4.服务器端收到客户端发来的cookie,比对服务器上记录,得到之前状态记录。 * Http的持久链接 * 概念: * 只要任意一端没有明确提出断开连接,则保持TCP连接状态。 * 优点: * 减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。 * web页面的显示速度提高。 * 管线化 * 概念: * 以前发送请求后等待并接收响应,才能发送下一个请求。固安县花技术出现后,不用等待响应也可以直接发送下一个请求。 * 优点: * 可以同时并行发送多个请求,而不需要一个接一个等待响应,提高了响应速度。

HTTP请求头

  • HTTP在传输时编码

    • 优点:提升传输效率,有效处理大量访问请求。
    • 缺点:消耗大量服务器资源。
  • 压缩传输的内容编码

    • 概念:
      • 内容编码指明应用在实体内容上的编码格式,并保持实体信息鸳鸯压缩。内容编码后的实体由客户端接收并负责解码。
    • 常用的内容编码有:
      • GZIP、comperss(UNIX系统的标准压缩)、deflate、identity
  • 分块传输编码

    • 概念:
      • 在HTTP通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。在传输大量数据时,通过吧数据分割成多块,能够让浏览器逐步显示页面。这种吧实体主体分块的功能称为分块传输编码。
    • 作用域:作用在分块传输编码中。
  • MIME的多部分对象集合

    • 作用:发送一份报文实体可以容纳多类型文件,比如文本、图片、视频等
    • 类型:
      • multipart/form-data :在WEB表单文件上传时使用。
      • multipart/byteranges:状态吗206,响应报文中包含多个范围内容时使用。
      • multipart/form-data:MIME类型,可容纳不同类型文件,比如文件上传时文本内容和图片
  • 范围请求

    • 概念:
      • 要实现断点续传功能需要制定下载的实体范围。像这样,指定范围发送的请求叫做范围请求。
    • 范围请求的几种情况
      针对范围请求,响应会返回状态为206.

      针对多重范围的范围请求,响应头标明multipart/byteranges后返回响应报文。

      针对服务器端无法返回响应范围请求,则返回状态吗200和完整的实体内容。
  • 内容协商

    • 概念:
      • 针对同一网站存在多分相同内容的页面,但是语言不同。会根据浏览器默认的语言显示,这种机制称为内容协商。
    • 内容协商的3中类型
      • 服务器驱动协商。
      • 客户端驱动协商
      • 透明协商

web服务器

  • 通信数据转发程序:代理、网关、隧道

    • 概念
      • 代理:
        • 代理是一种由转发功能的应用程序,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
      • 网关:
        • 网关是转发其他服务器通信数据的服务器,接收从客户端发送过来请求时对请求进行处理。
      • 隧道:
        • 隧道是相隔很远的客户端和服务器之间进行中转,并保持双方通信链接的应用程序。
    • 代码的方法:
      • 分类:
        • 1.是否使用缓存
          • 缓存代理:预先将资源缓存在代理服务器上
        • 是否修改报文
          • 透明代理:不对报文做任何加工的代理类型
    • 网关:
      • 网关使用的是非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保安全连接。
      • 应用场景:
        • 网关连接数据库,使用SQL语句查询
        • 网站购物结算时,网关和支付系统联动。
    • 隧道:
      • 使用SSL等加密手段进行通信,目的是确保客户端和服务器进行安全通行。
      • 隧道本身不去解析HTTP请求,隧道会在通信双方断开时结束。
  • 缓存

    • 概念:
      • 缓存是指代理服务器或客户端本地磁盘内保存的资源副本。
    • 优点:
      • 利用缓存可减少对源服务器的访问,可以节省通信流量和通信时间。
    • 缓存服务器
      • 是代理服务器的一种,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。请求的资源如果已经被缓存则直接有缓存服务器范湖客户端。
    • 缓存的有效期
      • 因客户端的请求、缓存的有效期等因素,缓存服务器或客户端向源服务器确认缓存有效性。如果判断缓存失效,缓存服务器(客户端)再次从源服务器上获取更新后数据。

HTTP请求头

HTTPS

  • http的缺点
    • 通信使用明文,内容可能被窃听。
    • 不验证通信方的身份,因此可能遭遇伪装。
      • 有可能是已伪装的WEB服务器
      • 有可能是已伪装的客户端
      • 无法确定正在同行对方是否具备访问权限
      • 无法阻止海量请求下的DOS攻击(拒绝服务攻击)
    • 不发证明报文的完整性,有可能已遭篡改。
      • 文件内容在传输途中已经被篡改为其他的内容,而客户端也察觉不到哦。像这样,请求或响应过程中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM)
  • 几种机密处理的方式
    • 通信加密
      • SSL(安全套接层)或TLS(安全传输协议)的组合使用。与SSL组合使用的HTTP被称为HTTPS(超文本传输安全协议)
        • SSL不仅提供了加密处理,还提供了证书手段。证书是第三方机构颁发,伪造证书是异常困难事情。只要能够确认通信方持有的证书,就可判断通信方分真实意图。
      • ssl:
        • 概念:
          • ssl公开密钥加密。加密算法公开,而密钥保密。
        • 对称密钥加密
          • 缺点:
            • 如果通信被监听,密钥教会落入攻击者之手。
            • 如何安全的保管接收到的密钥。
        • 公开密钥加密
          • 概念:
            • 使用是一对非对称的密钥。一把叫私有密钥,一把叫共有密钥。
            • 发送方使用功法密钥进行加密,接收方使用自己私有密钥进行解密。
          • 优点:
            • 不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
            • 根据密文和公开密钥,解密异常困难。
          • 缺点:
            • 公开密钥效率比对称密钥效率低。
        • HTTPS的混合加密机制
          • 在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享加密方式。
        • HTTPs的证书机制
          • 多数浏览器开发商会实现植入常用认证机关的公开密钥。
    • 内容加密
  • 如何防止内容被篡改
    • MD5和SHA-1等散列值校验法,以及用确认文件的PGP数字签名方法。但需要用户亲自检查验证。
  • HTTPS = HTTP + 加密 + 认证 + 完整性保护
  • HTTPS的流程:
  • 为什么不所有网站都使用HTTP协议?
    • 1.与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到每台机器上时,能够处理请求的数量必定也会随之减少。
    • 2.要进行HTTPS通信,证书是必不可少的。购买证书也是一笔开销。
    • 3.非敏感的信心使用HTTP通信,需要信息隐藏时才会加密。

证书认证机制

  • 核对身份信息通常有哪些方式?

    • 密码
    • 动态令牌
    • 数字证书
    • 生物认证
    • IC卡
  • HTTP使用的认证有哪些方式?

    • BASIC认证(基本)淘汰
      • 缺点:
        • 1.如果再想进行一次BACIC认证时,一般浏览器却无法实现认证注销操作。
        • 2.BASIC认证采用BASE64编码,是明文传输。如果被人监听,被盗的可能性极高。
    • DIGEST认证(摘要):质询响应方式 淘汰
      • 步骤:
        • 一开始一方会发送认证要求给另一方,接着使用从另一方哪里接收的质询码计算生成响应吗。最后将响应码返回给对方进行认证。
    • SSL客户端认证 未普及
      • 优点:
        • 避免了如果用户ID和密码被盗,被第三者冒充。SSL客户端认证是由HTTPs的客户端完成认证的方式。凭借客户端证书认证,服务器可确认访问是否是自己登陆客户端
      • 步骤:
        • 1.服务器接收到需要认证资源的请求,服务器会要求客户端提供客户端证书。
        • 2.客户端把客户端证书信息和服务器带过来认证证书请求信息一起发送给服务器。
        • 3.服务器验证客户端证书验证通过后方可领取证书内容客户端的公开密钥,然后开始HTTPS加密通信。
    • FormBase认证(基于表单认证)应用最广泛
      • 概念:
        • 客户端向服务器上的web程序发送登录信息,按登录信息的验证结果认证。
      • 基于表单认证本身是通过服务器端的web应用,将客户端发送过来的ID和密码与之间登陆过的信息做匹配来进行认证。一般是通过Cookie来管理session。
      • 步骤:
        • 1.客户端向服务器端发送ID和密码,服务器接收到请求后,向用户发放sessionID记录认证状态。
        • 2.客户端把返回来报文中的SessionID值记录到cookie中。
          • 如何防止COOKIE措施?
            • a) SessionID应使用难以猜测的字符串,并设置有效期。
            • b)为减轻跨站脚本攻击,建议在Cookie内加上httponly属性。
        • 3.下次客户端再向服务器发发送ID和密码时,携带着cookie中SessionID值给服务器端。
        • 4.服务器验证SessionID识别用户和认证状态。
  • window统一认证有哪些?

    • Keberos认证
    • NTLM认证

http新增的功能协议

  • AJAX:实现实时刷新

    • 概念:
      • 利用js和DOM的操作,以达到局部WEB页面替换加载的异步通信手段。
    • 优点:
      • 只更新页面一部分,而不要刷新整个页面。
      • 传输数据量减少
    • 缺点:
      • 利用Ajax实时从服务器获取内容,有可能导致大量请求产生。
      • 客户端和服务器端每次都互相发送相同的首部。
      • 服务器有时不压缩数据直接发送。
  • Comet:实现实时刷新

    • 概念:
      • 一旦服务器端有内容更新了,Comet不会让请求等待,而是直接给客户端返回响应。则是一种通过延迟应答,模拟实现服务器端向客户端推送的功能。
    • 工作过程:
      • 服务器端接收到请求,commet会先将相应置于挂起状态,当服务端有内容更新时,再返回响应。因此,服务端一旦有更新,就可以立即反馈给客户端。
    • 缺点:
      • 为了保留响应,一次连接的持续时间变长。期间,为了维持连接消耗更多的资源。
      • 客户端和服务器端每次都互相发送相同的首部。
      • 服务器有时不压缩数据直接发送。
  • SPDY:

    • 概念:
      • 在TCP/IP的应用层和运输层之间通过新加会话层的形式运作。同时为了考虑安全性,SPDY通信中使用SSL。
    • HTTP额外获得的功能:
      • 1.单个TCP连接,无可无限制处理多个HTTP请求。
      • 2.可以给请求逐个分配优先顺序。
      • 3.压缩HTTP请求和响应的首部。
      • 4.支持服务器向客户端推送数据的功能。这样服务器可以直接发送数据,而不必等待客户端的请求。
      • 5.服务器可以主动提示客户端请求所需的资源。
  • WebSocket

    • 概念:
      • webScoket是web浏览器与web服务器之间全双工通信标准。webScoket是建立在HTTP基础上的协议,由客户端发起链接,一旦web服务器和客户端之间建立起WebSocket协议的通信链接,之后所有的通信都依靠这个专用协议进行。通信过程中可以相互发送JSON、XML、HTML或图片等任意格式的数据。
    • 功能:
      • 支持由服务器向客户端推送数据功能。
      • 只要建立起WebScoket链接,就希望一直保持链接状态。比起HTTP,不但每次链接总开销减少,贰仟由于WebScoket的首部信息很小,通信量也响应的减少。
    • js可以调用webScoket接口,可以实现WebScoket协议下的全双工通信。

WEB攻击&防范

web攻击

  • 以服务器为目标的主动攻击

    • 概念:
      • 指攻击者通过直接访问WEB应用,把攻击代码传入的攻击模式。
    • 方式:
      • SQL注入
        • 造成的影响:
          • 1.非法查看或篡改数据库内的数据
          • 2.规避认证
          • 3.执行和数据库服务器业务关联的程序
      • OS命令注入
        • 概念:是指通过web应用,执行非法的操作系统命令达到攻击的目的。
        • 方式:
          • os命令注入攻击可以向Shell发送命令,让Windows和Linux操作系统的命令行启动程序。也就是说,通过OS注入攻击可以执行OS上安装的各种程序。
      • 缓存污染
        • 概念:利用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作。这种攻击称为缓存污染。
        • 造成的影响:
          • 使用该缓存服务器的yoghurt,在浏览遭受攻击的网站时,会不断地浏览被替换掉了的WEB网页。
      • DOS攻击:
        • 概念:集中利用范文请求的DOS攻击,发送大量的合法请求,让运行的服务呈停止状态的攻击。
  • 以服务器为目标的被动攻击

    • 概念:
      • 指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标的WEB应用发起攻击。
    • 过程:
      • 攻击者诱使用户出发已设置好的陷阱,而陷阱会启动送法嵌入攻击代码的HTTP请求。用户浏览器吧含有攻击代码的HTTP请求发送给被攻击WEB应用,运行攻击代码。存在安全漏洞的WEB应用会将用户的身份信息被窃取。
    • 方式
      • 跨站脚本攻击(XSS)
        • 概念:是指通过存在安全漏洞的WEB网站,在用户浏览器运行非法的HTML标签或JavaScript进行的一种攻击。
          *HTTP 首部注入攻击:
        • 概念:是指攻击者通过响应首字段内插入换行,添加任意响应首部或主体的一种攻击。
          跨站点请求伪造
        • 造成的影响:
          • 1.设置任何Cookie信息
          • 2.重定向任意URL
          • 3.HTTP响应截断攻击,显示主体内容。
        • %0D%OA 代表HTTP报文中换行符。
      • HTTP响应截断攻击
        • 概念:向首部主体内容添加内容的攻击称为HTTP响应截断攻击。
        • 过程:
          • %0D%OA%0D%OA并排插入字符串发送。利用连个连续的换行可以做出HTTP首部和主体分割所需额空行,这样就能显示伪造主体,达到攻击的目的。
  • 利用用户的身份攻击企业内部网络

web防范对策

  • 客户端验证:js验证,只是做简单输入格式验证
  • 服务端验证
    • 输入值验证
      • 输入值验证通常是指检查是否是符合业务系统逻辑的数值或检查字符编码等预防对策。
    • 输出值转义
      • 从数据库或文件系统、HTML、邮件等输出WEB应用处理数据之际,针对输出做转义处理是一项至关重要的安全策略。
  • 对详细的错误消息进行抑制设定,或者使用自定义错误消息,以避免某些错误信息给攻击者启发。

posted @ 2018-10-10 08:02  晚起的鸟儿没虫吃  阅读(168)  评论(0)    收藏  举报