## 网络与负载均衡

网络与负载均衡

网络

OSI七层网络模型
  • 网络的七层模型从上往下分为,应用层,表示层,会话层,传输层,网络层,链路层,物理层
  • 物理层:作用是传输比特流 链路层:负责在链路上传送数据帧 网络层:负责路由出传输通道,并对ip地址进行封装和解析 传输层:负责传输数据有TCP和UDP 会话层:在传输层的基础上建立连接和管理会话 表示层:对接收的数据进行解释,加密,压缩,解压缩等 应用层:基于网络构建具体应用
TCP/IP四层网络模型
  • 网络的四层从上往下分为应用层,传输层,网络层,网络接口层
  • 网络接口层:定义了主机间网络连通的协议,具体包括Ethernet、FDDI,ATM
  • 网络层:负责服务数据的传输,路由及地址的选择IP,ARP地址解析协议
  • 传输层:确认数据传输及错误处理TCP,UDP
  • 应用层:服务及应用程序,Telnet,FTP,HTTP,SNMP,DNS
TCP中的三次握手
  • TCP是因特网的传输层协议,使用三次握手协议建立连接,在客户端主动发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的SYN执行ACK确认,这种建立连接的方式可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议
  1. 客户端发送SYN(seq = x)报文给服务器端,并进入SYN_SEND状态
  2. 服务器收到SYN报文,回应一个SYN(seq = y) 和ACK(ack = x+1)报文,进入SYN_SEND状态
  3. 客户端收到服务器的SYN报文,回应一个ACK(ack = y+1)报文,进入established状态,成功建立连接可以开始传输数据了
TCP中的四次挥手
  • TCP在建立连接时要进行三次握手,在断开连接时需要进行四次挥手,这是由于TCP的半关闭造成的,因为TCP是全双工的,所以在进行关闭时,对每个方向都需要单独关闭,这一方完成他的数据传输任务时,就会发送一个FIN来想另一方通行告知将要终止这个方向的连接
  • 可由客户端主动断开或者服务器端主动断开
  1. 客户端应用调用断开连接的请求,向服务器发送一个终止标志位FIN=1,seq = u的消息,表示数据已经发送完毕,请求服务器端确认关闭连接,此时客户端处于FIN-wait-1状态
  2. 服务器端在收到这个FIN消息后,返回一个ACK=1,ack=u+1,seq=v的消息给客户端,表示接受到客户端断开链路的操作请求,这是TCP服务器通知高层应用进程释放客户端到服务器端的链路,服务器处于CLOSE_WAIT状态,即半关闭状态,客户端在接收到回应后,处于FIN-WAIT2状态
  3. 服务器端在关闭链路时,需要发送一个终止标志位FIN=1,ACK=1,sep = w,ack = u+1的消息给客户端,表示关闭链路前服务器需要给客户端发送的消息已经发送完毕,请求关闭链路,此时服务器端处于LAST_ACK状态,等待客户端断开链路
  4. 客户端在接收到这个最终FIN消息后,发送一个ACK=1 ack = w+1,seq = u+1的消息给服务器端,表示收到请求,此时客户端处于TIM_WAIT状态,TCP连接还没有释放,经过等待计时器(2MSL)设置的超时时间后,客户端进入CLOSE状态。
HTTP原理
  • http是一个无状态的协议,无状态是指在客户端与服务器之间不需要建立持久的连接,在一个客户端向服务器发送请求且服务器收到该请求并返回响应后,本次通信结束,http连接将被关闭,服务器不保留连接的相关信息,HTTP遵循请求(Request)/应答(Response)模型,客户端向服务器发送请求,服务器处理请求并返回适当的应答。
  • 传输流程
  1. 地址解析:地址解析通过域名系统DNS解析服务器域名从而获得主机的IP地址,
  2. 封装HTTP数据包:解析协议名,主机,端口,对象路径等并结合本机自己的信息封装成一个HTTP请求数据包。
  3. 封装TCP包,将http请求数据包进一步封装成TCP数据包
  4. 建立TCP连接:基于TCP的三次握手机制建立连接
  5. 客户端发送请求:在建立连接后,客户端发送一个请求给服务器
  6. 服务器响应:服务器在接收到请求后,结合业务逻辑进行数据处理,然后想客户端返回相应的响应信息,在响应信息中包含状态行,协议版本号,成功或错误的代码,消息体等内容
  7. 服务器关闭TCP连接,服务器在向浏览器发送请求响应数据后关闭TCP连接,但如果浏览器或者服务器在消息头中加入了Connection:keep-alive则仍然保持连接,在下一次请求中,浏览器可以继续使用相同的连接发送请求。不仅减少了请求响应的时间,还节约了网络带宽和系统资源
  • http中的常见状态码:200 ok 400 bad request错误请求 402 payment required需要付款 403 forbidden 禁止访问 404 not found 未找到 408request timeout请求超时 504 gateway timeout网关超时
HTTPS
  • https是以安全问目标的http通道,在http中加入ssl层以提高数据传输的安全性,其端口一般为443
  • HTTP的加密流程
  1. 发起请求:客户端在通过TCP和服务器建立连接之后,发出一个请求证书的消息给服务器,在该消息信息中包含自己可实现的算法列表和其他需要的信息
  2. 证书返回:服务器端在收到消息后,回应客户端并返回证书,在证书中包含服务器信息,域名,申请证书的公司,公钥,数据加密算法等
  3. 证书验证:客户端在收到证书后,判断证书签发机构是否正确,并使用该签发机构的公钥确认证书是否有效,客户端还会确保证书中列出的域名正是需要访问的域名,如果确认证书有效,则会生成对称秘钥,并使用公钥对对称秘钥加密
  4. 密钥交换:客户端将加密后的对称秘钥发送给服务器,服务器在收到秘钥后通过公钥解密
  5. 数据传输,通过上述步骤,客户端和服务器就完成了密钥对的交换,在之后的数据传输过程中,客户端和服务器就可以基于对称加密将数据加密后在网络上传输,保证了网络数据传输的安全性
CDN的原理
  • CDN(Content Delivery Network,内容分发网络)指基于部署在各地的机房服务器,通过中心平台的负载均衡,内容分发,调度的能力,使用户就近获取所需的内容,降低网络延迟,提升用户访问的响应速度和体验度
  • 关键技术:内容发布,内容路由,内容交换和性能管理
  1. 内容发布:借助建立索引,缓存,流分裂,组播等技术,将内容发布到网络上距离用户最近的中心机房
  2. 内容路由,通过内容路由器中的重定向(DNS)机制,在多个中心机房的服务器上负载均衡用户的请求,是用户从最近的中心机房获取数据
  3. 内容交换:根据内容的可用性,服务器的可用性及用户的背景,在缓存服务器上利用应用层交换,流分裂,重定向技术,只能地平衡负载流量。
  4. 性能管理:通过内部和外部监控系统,获取网络部件的信息,测量内容发布的端到端性能(丢包,延时,平均带宽,启动时间,帧数率等),保证网络处于最佳运行状态。
  • CDN的主要特点:本地缓存加速,镜像服务,远程加速,带宽优化,集群抗攻击
  • 内容分发系统:将用户请求的数据分发到就近的各个中心机房,以保障为用户提供快速、高效的内容服务,
  • 负载均衡系统是整个CDN系统的核心,根据当前网络的流量分布,各中心机房服务器的负载和用户请求的特点将用户的请求负载到不同的中心机房或不同的服务器上,以保障用户内容的流畅性,负载均衡技术包括全局负载均衡和本地负载均衡,
  1. 全局负载均衡:主要指跨机房的负载均衡,通过DNS解析或者应用层重定向技术将用户的请求负载到就近的中心机房上
  2. 本地负载均衡:主要指机房内部的负载均衡,一般通过缓存服务器,基于LVS,Nginx,服务网关等技术实现用户访问的负载
负载均衡
四层负载均衡
  • 四层负载均衡主要修改报文中的目标地址和端口来实现报文的分发和负载均衡,常用软硬件:F5,LVS+keepalive ,nginx 同时实现四层和七层负载均衡,带缓存功能,可基于正则表达式灵活转发
七层负载均衡
  • 七层负载均衡又称为内容负载均衡,主要通过解析报文中真正有意义的应用层内容,并根据负载均衡配置和负载均衡策略选择一个最佳的服务器响应用户的请求,更加智能化。常用软件:HAproxy,Nginx,Apache
负载均衡算法
  • 轮训均衡:指将客户端请求轮流分配到1到N台服务器上,每台服务器被均等的分配一定数量的请求,适用于集群中所有服务器都拥有相同的软硬件配置和服务能力的情况下
  • 权重轮询均衡,根绝每台服务器的不同配置及服务能力,为每台服务器都设置不同的权重值,然后根据权重值为服务器分配请求,适合服务器配置不均等的环境下
  • 随机均衡:不考虑配置和负载,随机分配
  • 权重随机均衡,分配权重,但是随机分配请求
  • 响应速度均衡:根据服务器响应速度的不同把请求分配给响应速度最快的服务器上,因为探测到的响应速度是负载服务器到服务器的,所以会有一定误差
  • 最少连接数均衡,指在负载均衡器内部记录当前每台服务器正在处理的连接数量,在有新请求时,分配给连接数最少的服务器,适用于网络连接和带宽有限,cpu处理任务简单的请求服务时,例如FTP
  • 处理能力均能:将服务请求分配给内部符合最轻的服务器,尤其适合七层负载均衡模型
  • DNS响应均衡,客户端向第一个域名解析后的服务器发请求方服务,而忽略其他负载均衡的响应,适合全局负载的场景
  • 散列算法均衡:通过一致性散列算法和虚拟节点技术,将相同参数的请求总是发送到同一台服务器,该服务器长期,稳定为某些客户端服务
  • IP地址散列,将来自同一客户端的请求统一转发给相同的服务器,能以会话为单位,保证同一客户端的请求能够一直在同一台服务器上处理,主要适用于客户端与服务器需要保持长时间的连接的场景,比如基于TCP长连接的应用
  • URL散列,通过管理客户端请求的URL信息散列表,主要使用与七层负载均衡,根据用户请求类型不同将其转发给不同类型的应用服务器
Nginx反向代理和负载均衡
  • 一般的负载均衡软件如LVS实现的功能只是对请求数据包的转发和传递,从负载均衡下的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户:而反向代理服务器在接收到用户的访问请求后,会代理用户重新向节点服务器,如web服务器,文件服务器,视频服务器)发起请求,反向代理服务器与节点服务器进行具体的数据交互,最后吧数据返回给客户端用户,在节点服务器看来,访问点节点服务器的客户端就是反向代理服务器,而非真实的网站访问用户。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值