网络接入问题笔记 | 青训营

117 阅读6分钟

网络接入问题

输入网站域名到加载出来,经历了那些过程?

浏览器抓包

第一条请求是主要的,其他是为了加载第一条

域名系统

Host管理

网络管理员运维Host->ip映射 随着example公司业务规模和员工数量的增长,使用该方式面临多问题: 流量和负载:用户规模指数级增长,文件大小越来越大,统一分发引起较大的网络流量和cpu负载 名称冲突:无法保证主机名称的唯一性,同名主机添加导致服务故障 时效性:分发靠人工上传,时效性太差

个人思考:通过Hosts文件可以直接在本地寻找域名与ip的对应

域名系统

关于域名空间: 域名空间被组织成树形结构 域名空间通过划分zone的方式进行分层授权管理 全球公共域名空间仅对应一棵树 根域名服务器:查询起点(.com) 域名组成格式:[a-zA-Z0-9-],以点划分label 顶级域:在根的基础上再做一层分布式管理

够买二级域名

购买后需要域名备案

开放网站

方案:租赁一个外网ip,专用于外部用户访问门户网站,将www.example.com解析到外网ip100.1.2.3,将该ip绑定到一台物理机上,并发布公网route,用于外部用户访问。

个人思考:通过上面操作,可以将域名与ip地址相绑定,便于访问

自建DNS服务器

问题背景

内网域名的解析也得出公网去获取,效率低下 外部用户看到内网ip地址,容易被hacker攻击 云厂商权威DNS容易出故障,影响用户体验 扩大公司品牌技术影响力,使用自己的DNS系统

HTTPS协议

HTTP明文传输,弊端明显,因此需要加密处理

个人思考:可以通过网络监听抓包获取传输明文中的用户隐私和账号密码等内容,因此非常危险

对称、非对称加密

对称加密:一份密钥,对数据加密 问题:必须传递密钥,有可能被截获 非对称加密:加密、解密需用两个不同的密钥:公钥和私钥 把锁头给别人,自己留钥匙

个人思考:公钥加密的原理是,根据数学问题的难解性,如大素数分解或椭圆曲线离散对数问题,使得给出公钥后被攻击也不会出现危险

接入全站加速

背景

源站容量低,可承载的并发请求数低,容易被打

个人理解:原服务器带宽、容量肯定比组合后的服务器要少

报文经过的网络设备越多,出问题的概率越大,丢包、持、mtu问题 自主选路网络链路长,时延高

解决方案

静态加速CDN

针对静态文件传输(图片、视频、css压缩包等),优化方式: 使用缓存加速,将服务器上的静态内容缓存到CDN节点上,直接就近访问即可

1.png 优势: 解决服务器端的“第一公里”问题 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响 减轻了各省的出口带宽压力 优化了网上热点内容的分布

动态加速DCDN

针对POST等非静态请等不能在用户边存的业务,子智能选路技术,从众多回源线路中优选择一条线路进行传输 用户发起请求后,进行智能探测,找到最优路径

个人思考:根据介绍,静态加速和动态加速是针对不同资源加速,因此可以结合使用,在加载相应资源时选择特定加速方式,提高性能

思考题

1、用户首次登录抖音,注册用户名手机号等用户信息

动态加速

2、抖音用户点开某个特定的短视频加载后观看

静态加速

3、用户打开头条官网进行网页浏览

静态加速+动态加速(第一条请求是动态请求)

案例分析

1.png

四层负载均衡

个人思考:即传输层

基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上

1.png 三个主要功能 1.解vip和rs 2.NAT 3.防政击:syn proxy

常见算法调度

RR轮询:RoundRobin,将所有的请求平均分配给每个真实服务器RS 加权RR轮询:给每个后端服务器一个权值比例,将请求按照比例分配

个人理解:RR轮询是为每个任务分配公平的处理器时间,在此则是为每个服务器分配相应的请求数。

最小连接:把新的连接请求分配到当前连接数最小的服务器 五元组hash:根据sip、sport、proto、dip、dport对静态分配的服务器做散列取模

由于每个数据包都包含五个重要的元素,即源IP地址、目标IP地址、源端口号、目标端口号和传输协议,将其组合起来计算哈希值可以确定唯一标识符并分配给各个服务器

缺点:当后端某个服务器故障后,所有连接都重新计算,影响整个hash环 一致性hash:只影响故障服务器上的连接session,其余服务器上的连接不受影响

  • RS怎么知道真实的CIP? 通过TCPoption字段传递 然后通过特殊的内核模块反解

4层负载均衡特点

个人思考:速度相比七层加速更快

大部分都是通过dpdlk技术实现,技术成熟,大厂都在用 纯用户态协议栈,kernelbypass,消除协议栈瓶颈 无缓存,零接贝,大页内存(减少cachemiss) 仅针对4层数据包转发,小包转发可达到限速,可承受高cps 使用后的架构

1.png

7层负载均衡

问题背景

SSL卸载:业务侧是http服务,用户需要用https访问 请求重定向:浏览器访问toutiao.com自动跳转www.toutiao.com 路由添加匹配策略:完全、前、正则 Header编辑 跨域支持:请求第三方页面,要求其支持 协议支持:websocket、grpc、quic

个人思考与总结:七层负载均衡是在OSI模型的第七层进行负载均衡操作,与工作在传输层的四层负载均衡不同,前者可以针对应用层的具体请求进行深入判断。但是后者因为只关注第四层,即传输层的信息,所以性能高于第七层。因此两者都有存在的意义

事件驱动模型

1.png 事件驱动模型的优势在于它能够实现高度的并发性和响应性。由于程序只在事件发生时才会执行相应的处理器,所以可以同时处理多个事件,提高系统的并发性。而且,由于事件的发生和处理是异步的,所以程序可以立即响应事件,不需要等待其他操作的完成。

关于同步和异步:简单来说,异步是完成与否不影响后续的执行,而是交给其他线程完成。而同步则有阻塞问题