《大型分布式网站架构设计与实践》试读

 

1. 如何实现基于HTTP协议和TCP协议的RPC调用 

我们先来看看概念:

  • HTTP协议
    HTTP协议是超文本传送协议(HyperText Transfer Protocol)的缩写,它是万维网(World Wide Web,WWW,也简称为Web)的基础。HTTP协议设计之初就是为了实现Web的想法。HTTP协议位于TCP/IP协议栈的应用层。基于HTTP协 议的客户/服务器模式的信息交换过程,分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。
  • TCP协议
    TCP传输控制协议,是用来进行传输控制的。是一个可靠的面向连接的协议,面向连接服务具有建立连接、数据传输和连接释放三个阶段,而且传输的数据是按顺序到达的。在发送数据之前通信双方首先建立连接,就好象占有了一条完整的端到端的物理线路一样。连接建立后,用户就可以将报文按顺序发送给远端的用户,接收报文也是按顺序进行的。数据发送完毕,释放连接。
  • RPC(Remote Procedure Call Protocol)
    一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加轻易。

什么是远程过程调用 RPC(Remote Procedure Call)? 你可能对这个概念有点陌生,而你可能非常熟悉 NFS,是的,NFS 就是基于 RPC 的。为了理解远程过程调用,我们先来看一下过程调用。

所谓过程调用,就是将控制从一个过程 A 传递到另一个过程 B, 返回时过程 B 将控制进程交给过程 A。目前大多数系统中,调用者和被调用者都在给定主机系统中的一个进程中,它们是在生成可执行文件时由链接器连接起来的, 这类过程调用称为本地过程调用。

远程过程调用(RPC)指的是由本地系统上的进程激活远程系统上的进程, 我们将此称为过程调用是因为它对程序员来说表现为常规过程调用。处理远程过程调用的进程有两个, 一个是本地客户进程, 一个是远程服务器进程。对本地进程来说, 远程过程调用表现这对客户进程的控制, 然后由客户进程生成一个消息, 通过网络系统调用发往远程服务器。网络信息中包括过程调用所需要的参数, 远程服务器接到消息后调用相应过程, 然后将结果通过网络发回客户进程, 再由客户进程将结果返回给调用进程。因此, 远程系统调用对调用者表现为本地过程调用, 但实际上是调用了远程系统上的过程。

 
《大型分布式网站架构设计与实践》试读
 

2. 常见的Web攻击手段和防御方法 

  • 跨站脚本攻击(XSS)
    跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过XSS可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击,例如CSRF攻击。
    常见解决办法是确保输出到HTML页面的数据以HTML的方式被转义。
  • 跨站请求伪造攻击(CSRF)
    跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。为了假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接
    解决的思路有:1、采用POST请求,增加攻击的难度。用户点击一个链接就可以发起GET类型的请求。而POST请求相对比较难,攻击者往往需要借助javascript才能实现;2.对请求进行认证,确保该请求确实是用户本人填写表单并提交的,而不是第三者伪造的。具体可以在会话中增加token,确保看到信息和提交信息的是同一个人。
  • Cookie攻击
    通过Java Script非常容易访问到当前网站的cookie。你可以打开任何网站,然后在浏览器地址栏中输入:javascript:alert(doucment.cookie),立刻就可以看到当前站点的cookie(如果有的话)。攻击者可以利用这个特性来取得你的关键信息。
    攻击方法:例如,和XSS攻击相配合,攻击者在你的浏览器上执行特定的Java Script脚本,取得你的cookie。假设这个网站仅依赖cookie来验证用户身份,那么攻击者就可以假冒你的身份来做一些事情。
    解决思路:现在多数浏览器都支持在cookie上打上HttpOnly的标记,凡有这个标志的cookie就无法通过Java Script来取得,如果能在关键cookie上打上这个标记,就会大大增强cookie的安全性。
  • 其他攻击手段
    SQL注入攻击
    文件上传漏洞
    DDoS攻击

3. 我对这本书试读章节的看法 

由于试读只提供了《第2章 分布式系统基础设施》,所以下面我对应书的看点来谈谈我的看法:

看点:

  1. 作者一直奋战在阿里巴巴及淘 宝网一线,书中所讲是其亲身经验的总结,显得更加实战和珍贵。
    确实,从书的内容可以看出,每个软件的安装过程和注意点都有说明,这是只有亲身经历了才能指出来的。
  2. 全面介绍大型分布式网站架构所涉及的技术细节,通过很多实践案例尽量让每一个关键的技术点都落到实处。
    书中的案例很多,很多可以直接上手操作,非常不错。
  3. 深入讲述大型分布式网站架构设计的核心原理,分享大型分布式网站设计的一些常见场景及遇到的问题。
    通过查看书的详细目录,确实发现本书内容详实,包含很多核心原理的章节。

如果你和我一样,正在参与大型网站的架构,或者对类似的技术感兴趣,这确实是一本不容错过的好书!

 

你可能感兴趣的:(架构设计)