《网络是怎样连接的》--读书随笔

发布时间 2023-03-22 21:13:41作者: 山雨欲來風滿楼

1.什么是分布架构?

  • 当性能不足时,使用多台服务器来分担负载的方法更有效。
  • 这种架构统称为分布架构。
  •  

     

2.负载均衡,可以使用DNS服务器来做?

  • 就是每次,查询www.baidu.com的时候,假设它告诉我们39.0.0.10,39.0.0.20,39.0.0.30
  • 三个地址,我们每次查询的时候,返回给我们三个中的一个。
  • 也叫做DNS轮询。

 

3.负载均衡,也可以用负载均衡器来做

  • DNS返回的IP是1个,只不过指向的是,负载均衡器。
  • 负载均衡器再指向另外的3个web服务器。
  •  

     

 4.负载均衡器,如何将请求均衡的发送给web服务器,判断依据是什么?

  • 如果操作没有跨多个页面,则可以根据web服务器的负载状况来判断。
    • 负载均衡器可以定期采集web服务的CPU,内存使用率,并根据这些来判断。
    • 可以向web服务器发送测试包,根据响应时间来判断。
    • 根据事先设置的服务器性能指数,按比例来分配请求。
  • 如果操作跨多页页面,则不考虑web服务器的负载,而是必须讲请求发送到同一台web服务器上。
    • 通过HTTP的头部信息来判断。(详细见5,6,7)
  • 部分摘抄:
  •  

     

     

     

 5.操作跨多个页面页面,为什么要将请求发送到同1台web服务器上?

  • 我的理解是:
  • 假设是浏览器,浏览的是购物商城网站,里面有静态资源,动态资源,动态和静态是两个不同的请求,为了让用户体验一致,必须这两个请求都发送到同1台web服务器。

6.如何判断1个操作是否跨了多个页面?

  • 首先理解HTTP工作方式。
    • HTTP的基本工作方式是发送请求消息之前先建立TCP连接,
    • 当服务器发送响应消息后断开连接,下次访问web服务器的时候,再重新建立TCP连接。
    • 因此,在web服务器看来,每一次HTTP访问都是相互独立的,无法判断是否和之前的请求有关。
    • 更多看下面的第7条
  • 可以通过IP来判断吗?
    • 不太行。(原因如下)
    • 1.请求方有可能设置了代理,所有的IP都一样,这样也就判断失效了。  
      • 比如,我们公司的局域网,内部是IP是192.168.0.10; 192.168.0.20; 192.168.0.30 ...
      • 我们的网关都是192.168.255.255。
      • 那么,对外请求的时候,显示的都是192.168.255.255。这样通过IP是不准的
      • 我的机器(192.168.0.10)和张三的机器(192.168.0.20)同时访问的网站的时候,都是对外显示的都是同1个IP,这样肯定是不行的。
    • 2.此外如果访问者,使用的地址转换,发送放的地址都转换为转换设备的IP,也就是无法判断是哪个客户端。
  •  解决方式是:
    • 在HTTP 头部字段中加上用来判断相关性的信息(俗称Cookie)
    • 这样负载器就可以通过这些信息来做出判断了
    • 对于不相关的信息发送到负载低的服务器上。
  • 摘抄:
  •  

     

  •  

     

  •  

     

7.为什么web服务器,每一次HTTP访问的请求,都是相互独立的?不设计成连续的?

  • 因为最早设计HTTP的时候,web服务器,最早也不是运行CGI程序。(Common Gateway Interface,CGI 公共网络接口,就是可以交互的页面)
  • web服务器,早期主要是用来提供静态文件的。(不能交互)
  • 在那个时代,web服务器,也就是提供个新闻,这种静态的资源,单向浏览,不能交互。(我的理解)
  • 而静态文件,不需要判断请求之间的相关性。(大家都是上网看看新闻,没有啥交互,也就不需要判断相关性)
  • 且如果要判断请求之间的相关性,就必须在web服务器一端保存相应的信息,这会增加服务器的负担。
  • 基于以上的原因,设计HTTP的时候,就有意省略了请求之间的相关性的判断。
  •  

     

 8.如何使用缓存?

 

9.缓存多个web服务器怎么办? 

  • 方法很多,最简单的是根据url路径来判断
  •  

     

  •  

     

  •  

      

 10.什么是正向代理?什么是反向代理?

 11.缓存服务器是怎么工作的?

  • 缓存服务器会新增一个字段If-Modified-Since头部字段并将请求转发给web服务器,
  • 询问web服务器用户的请求数据是否已经发生变化。
  • 然后,web服务器会根据If-Modified-Since的值与服务器上的页面数据的最后更新时间进程比较,如果在指定时间内数据没有变化,就会返回一个响应消息。
  • 这时,web服务器只要查询一下数据的最后更新时间就好了。
  • 比返回页面数据的负担要小一些。
  • 而且返回的响应消息也比较短,能相应地减少负担。
  • 接下来,返回消息到达缓存服务器,然后缓存服务器就会知道web服务器上的数据和本地缓存中的数据是一样的,
  • 于是,就会将缓存的数据返回给客户端。
  • 当web服务器上的数据有变化时,后面的过程和没有命中缓存的情况是一样的。
  • web服务器会返回最新版本的数据,然后缓存服务器加行Via字段发送给客户端,同时讲数据保存在缓存中。

12.CDS是什么?

  • Content Delivery Service 内容分发服务(CDS也可以叫CDN,内容分发网络)
  • 是CDSP的简化,CDSP(Content Delivery Service Provider,)内容分发服务运营商
  • 是干嘛用的?
    • 为企业提供大量的缓存服务器。
    • 加快访问web服务器的速度。
  •  

     

     

     

 13.如何找到最近的缓存服务器呢?

  • 1.不采用轮询路由来返回,根据位置来返回。
  • 2.使用重定向。
  • 一般的工作方式:
    •  

       

    • 根据距离来返回缓存服务器。
    •  

       

    • 重定向的方式
    •  

       

 

 14.访问web服务器,访问的是什么?

  • 是web服务器上的内容或者程序

 

 

15.get请求和post请求的区别是什么?

  • 传递的参数方式不同。
  • 当客户端访问web服务器的时候,
  • 假设是要运行web服务器上的程序,这个程序需要参数。
  • 那么参数就是从get或POST来的。
  • 区别是,get是url后面传过来,post是以表单的形式传过来。
  •  

     

 16.web服务器如果对请求进行过滤?

  • 比如,我开发个网站, 我不想让所有人都访问,授权才可以。
  • 最简单的方式是,
    • 需要账号和密码。
  • 还有其他的方式有
    • 客户端IP地址,
    • 客户端域名
  •  

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考资料: