Web起源

人类记忆弱点: 人类因记忆能力不足而不能记忆大容量知识

想不起来: 人类在记忆过程中常因为各种知识间缺乏必要的联系,而经常无法记忆起来已记忆了的知识。“恍然大悟”即是这种情况的最好写照。

1945年Vannevar Bush在经典论文“As we may think”中提出一种通过机械扩展人类的记忆方法:Memex,于是根据这种指导,一种标记性的语言html产生,并在之后的发展中不断完善前后端开发技术。

HTTP协议

Http消息的请求与响应

http消息主要分为两种,从客户端发往服务器的请求消息和从服务器发往客户端的响应消息。这两种消息都是采用RFC822(https://www.rfc-editor.org/info/rfc822)定义的通用消息格式,它包括:

  • 一个起始行(start-line)
  • 0个或多个消息字段(message-header)
  • 一个空行(Carriage Return & Line Feed, CRLF)用于指示头部结束以及0个或一个消息体(Message Body)。

上述消息中,消息头主要用于标识或响应的类型、方法、结果以及消息实体的内容等消息,又分为通用消息头、请求头、应答头和实体头四种。

  • 通用消息头:既可以用于请求消息又可以用于响应消息中的字段,如Cache-Control、Date等。
  • 请求头:只能用于请求消息中的字段
  • 响应头:只能用于响应消息中的字段。如状态码。
  • 实体头:只能用于消息实体的一些字段

当Http包含消息体时,消息体主要用于承载与请求或响应相关的实体正文。对于请求和响应而言,消息中所允许出现的消息体的格式是不一样的

在请求消息中,当消息头中包含Content-Length或Transfer-Encoding头字段时意味着消息中包含有消息体。如果某些方法中不允许在请求中发送实体正文时,则请求中就不会包含消息体。

在响应消息中,是否包含消息体则取决于请求方法和响应状态码。如请求方法为HEAD时,就不能包含消息体。所有转态码为1XX,204(no content)及304(not modified)的响应消息也不含消息体。

Http的请求方法

HTTP1.1中共定义了8种常用的请求方法:GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE和CONNECT。

Http状态响应码

Cookie

Cookie是缓存在客户端一段文本,采用"key/value"形式存储,Cookie一旦建立,则以后每次客户端访问相同站点或站点上的相同资源时,Cookie的值都会自动被附加到请求信息后发送到服务器端。

Session

Session提供了另外一种记录访问者信息的手段,它一旦被建立,则用户在各页面间跳转时该session一直存在,直到过期或被终止为止。实质上,session就是存储在服务器上,与特定访问者相关的,由站点设定的变量及其所含信息。

SSI

SSI服务器命令包含(Server Side Include,SSI)是指在网页中以一定格式包含一组命令,该命令由服务器负责解释后,相应结果会传送到客户端。

通常情况下,web服务器在向客户端传送HTML页之前并不分析它。然而,服务器却会对包含有SSI命令的HTML页进行分析,并执行包含在其中的SSI命令,其执行的结果也会被当作HTML页的一部分犯规给客户端。

SSI命令以HTML注释的形式嵌入到HTML页中,这样如果服务器不支持SSI命令时,它会将SSI命令发送到客户端,而客户端浏览器的显示不会受到影响,SSI命令的基本格式为:


<!-- #command tag1 = "value1" tag2 = "value2" -->

SSI命令主要有:

常用样例


<!-- #include file="inc/header.html" -->

负载均衡技术

如果软件和硬件性能优化后仍然不能很好解决性能问题时,说明单服务器性能已经达到了极限,服务器的处理和I/O能力成为了服务的瓶颈,此时就必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。

负载均衡(load balance)技术是指在多台硬件设备的系统中,将负荷均匀地分配给不同的硬件设备,充分利用所有有效负载处理能力。负载均衡技术可以分为DNS负载均衡、特定服务器软件的负载均衡、反向代理服务器负载均衡、NAT负载均衡以及混合型负载均衡等。

  • DNS负载均衡

DNS负载均衡是最早的负载均衡技术,是通过DNS来实现的。在DNS中为多个地址配置同一个域名,因而查询这个域名的客户机将得到其中一个地址,该地址由DNS来进行分析,从而时不同的客户机访问不同的服务器,达到负载均衡的目的。这种方法简单易行,但是DNS负载均衡无法得知服务器之间的差异,它不能做到性能较好的服务器多分配请求等等。

  • 特定服务软件的负载均衡

特定服务软件的负载均衡,利用协议的“重定向”功能,如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上,这样就可以实现在Web服务器认为自己负载较大时,它不再处理,而是转给其他服务器处理,当然这种方式并不常用。

  • 反向代理服务器负载均衡

反向代理服务器负载均衡,在众多内部服务器之前设置代理服务器,让代理服务器将请求均衡转发给多台内部服务器,从而达到负载均衡的目的。常用的反向代理服务器Nginx用得比较多。

  • NAT负载均衡

NAT负载均衡,NAT方式的原理与方向代理类似,主要是在内部服务器所在的内部局域网上设置支持负载均衡的地址转换网关,将一个外部IP地址映射为多个内部IP地址,多每次TCP连接请求动态地使用其中一个内部地址,达到负载均衡的目的。

地址转换可以通过软件方式实现,也可以通过硬件方式来实现。使用硬件方式进行操作一般称为交换,而当交换必须保存TCP连接信息的时候,这种针对OSI网络层的擦作就被称为第四层交换,但是这种设备相对昂贵。相比软件来说,软件方式则较为经济。

  • 混合型负载均衡

在某些大型网络,由于多个服务器群内部硬件设备、各自的规模、提供的服务等的差异,不能采用统一的负载均衡技术,此时可以考虑给每个服务器采用最合适的负载均衡方式,而后在这多个服务器群简再一次进行负载均衡或群集起来以一个整体向外界提供服务,从而达到最佳性能。

HTTP协议与负载均衡技术相关推荐

  1. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

    十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱.经常在技术网站.文档中出现的"四层负载均衡"."七层负载均衡"字眼有什么含义?有什么区别?对客户网络有哪些不 ...

  2. 企业网站服务器负载均衡技术

    Internet的快速增长使网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力.例如sohu每天会收到数千百万次的访问请求,因此对于提供大负载Web ...

  3. 架构文摘:LSV负载均衡技术笔记

    一.LVS介绍 在本部分,我们将介绍Linux服务器集群系统--LVS(Linux Virtual Server)项目的产生背景和目标,并描述LVS服务器集群框架及目前提供的软件,列举LVS集群系统的 ...

  4. linux 负载均衡技术之 LVS

    一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver ...

  5. 负载均衡技术 (3)

    现代负载均衡技术通常操作于网络的第四层或第七层.第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的 ...

  6. 负载均衡技术原理浅析

    1.技术架构 2.LVS技术特点 FULLNAT技术概述 SYNPROXY技术概述 集群部署方式 Keepalived优化 3.Tengine技术特点 4.更多功能 SLB(Server Load B ...

  7. 负载均衡技术应用介绍

    2006-03-09    来源: 媒体合作 责编: 段勇峰    作者: 编者按:        由于网络的数据流量多集中在中心服务器一端,所以现在所说的负载均衡,多指的是对访问服务器的负载进行均衡 ...

  8. 负载均衡技术全攻略(大全)

    Internet的规模每一百天就会增长一倍,客户希望获得7天24小时的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点"Server Too Busy"及频繁的系统故障. ...

  9. IPVS -三种IP负载均衡技术与八种调度算法

    三种IP负载均衡技术        在调度器的实现技术中,IP负载均衡技术是效率最高的.在已有的IP负载均衡技术中有通过网络地址转换(Network Address Translation)将一组服务 ...

最新文章

  1. 十分钟搞懂什么是CGI
  2. java 抽象类和接口有什么区别
  3. linux下php反编译apk,php反编译
  4. CVPR19 基于图卷积网络的多标签图像识别模型 论文笔记
  5. 关于vs2008上的socket链接错误问题
  6. keil debug如何在watch直接修改变量值_python日志记录系列教程,内置logging模块(一),直接使用logging模块的基础日志记录
  7. linux版本fedora,技术|初级:如何更新 Fedora Linux 系统
  8. python 运行时 变量_python运行过程,变量,符号
  9. AJAX请求时status返回状态明细表 readyState的五种状态
  10. web打印控件|打印预览
  11. py验证码-联众验证码接入
  12. fedora mysql添加密码_Fedora14下 mysql更改密码
  13. spring 学习书籍
  14. win10计算机策略组在哪,win10家庭版的组策略在哪里打开
  15. 小米8 青春版root时无法检测到手机
  16. Android使用FFmpeg 解码H264并播放(一)
  17. phalcon mysql port_Phalcon数据库抽象层
  18. 货币政策新款“奥利给”:普惠小微企业信贷支持计划的制约与动力
  19. 日本即将上市的三维条形码
  20. 分类堆叠柱状图顺序排列及其添加合适条块标签

热门文章

  1. 产品经理须知:机会成本和沉没成本
  2. 若地址总线是16根,则它的最大寻址空间是64KB
  3. 关于头文件和源文件的书写c++
  4. 【微信小程序】数组push后,数组返回内容为数字
  5. 百亿业务流量-如何做好稳定性监控
  6. java面试突击第一季课件,Java开发面试技能介绍
  7. 计算机应用基础网络基础及应用,计算机应用基础课件 第章 计算机网络基础及Internet应用.ppt...
  8. 小白学算法——借用leetcode(其实就是刷题记录....——1
  9. linux解压缩命令 tar gz,linux解压缩命令
  10. C++ Canny算子进行边缘检测