IDC data centers: 互联网数据中心
四个主要部门
- Assets (PCs, storage)
- Facilities (AC system, ...)
- IT (软件/运维...): Monitoring
- Cloud Security
主要参考文章:
Transport and the Cloud
云计算主要分为 4 种类型:私有云、公共云、混合云和多云。同时,云计算服务主要有 3 种:基础架构即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
Types of Cloud Computing Services (Service Models)
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)
Cloud Deployment Models
- Public Cloud: Services offered over the public internet, owned and operated by third-party providers. 只要环境进行了分区,并重新分配给多个租户,那这种云就是公共云。
- Private Cloud: A dedicated cloud environment operated solely for a single organization, either on-premises or managed by a third-party provider. 如果底层 IT 基础架构归某个拥有完全独立访问权限的客户专有,那这种云就是私有云。
- Hybrid Cloud: Combines public and private cloud resources, allowing data and applications to be shared between them for more flexibility.
- Multicloud: 多云是一种云架构,由多个云供应商提供的多个云服务组合而成,既可以是公共云,也可以是私有云。所有混合云都是多云,但并非所有多云都是混合云。
Future Cloud
- Quantum Computing: As quantum computing technologies evolve, cloud providers are exploring offering quantum computing as a service.
- Green Cloud: With increasing focus on sustainability, cloud providers are improving energy efficiency and offering carbon-neutral services.
- 5G and Cloud Integration: The rollout of 5G is expected to enhance cloud capabilities, enabling faster, more reliable connections and new use cases like real-time AI at the edge. 人工智能(AI)和机器学习(ML)正在不断推动云计算的发展,而云服务商也将在未来增强其服务,从而满足不断增长的强劲需求,包括更新基础设施和配备人工智能专用芯片等。
- Multi-Cloud Strategies: Many organizations now use services from multiple cloud providers to avoid vendor lock-in and gain specialized capabilities. Edge Computing: A shift toward decentralized computing where processing happens closer to data sources to reduce latency (e.g., IoT devices).
- Serverless Computing: A PaaS model where the cloud provider automatically manages infrastructure, allowing developers to focus on code (e.g., AWS Lambda, Azure Functions).
- AI and Machine Learning Integration: Cloud providers are embedding AI/ML capabilities to enable intelligent applications, like predictive analytics and automation. Cloud Security: With the rise in cloud adoption, data privacy, security, and compliance are increasingly important, prompting the growth of specialized security tools.
云计算的优势
- Cost Efficiency: Pay-as-you-go pricing eliminates upfront hardware costs and reduces operational overhead. Scalability: Cloud services can scale up or down quickly in response to changing demand.
- Flexibility: Access to a wide range of services without the need for heavy capital investment in hardware or software.
- Global Reach: Cloud providers operate data centers around the world, enabling businesses to serve global markets efficiently.
- Disaster Recovery and Backup: Built-in redundancies in the cloud infrastructure improve resilience and data recovery capabilities.
数据中心的发展
第一阶段:服务器农场
第二阶段: 虚拟化技术发展
第三阶段: 云计算阶段
通过虚拟化技术、容器技术,彻底实现了数据中心服务器算力资源的池化。所有的CPU、内存、硬盘等资源,都由更为强大的虚拟化软件管理,然后分配给用户使用。
- IaaS(基础设施即服务):IaaS是云计算服务模型的基本层级,它提供了虚拟化的计算资源、存储空间和网络资源,用户可以通过云服务提供商的平台来部署和管理操作系统、应用程序等基础设施。用户在这个层级上负责管理操作系统、应用程序和数据。
- PaaS(平台即服务):PaaS是一种云服务模型,提供了用于开发、部署和管理应用程序的平台。在PaaS模型中,云服务提供商提供了开发环境、数据库管理系统、工具和服务,使开发人员能够更快速地开发和部署应用程序,而无需关注底层基础设施的管理。
- SaaS(软件即服务):SaaS是一种云服务模型,用户可以通过互联网访问和使用提供商托管的软件应用程序。在SaaS模型中,用户无需关心应用程序的维护、更新和管理,所有这些工作都由软件提供商来完成。用户只需通过互联网浏览器等客户端访问应用程序即可。
数据中心的组成
存储
现在主流的计算机存储硬盘分为HDD和SSD两种。HDD就是我们传统的机械硬盘,而SSD是逐渐开始普及的固态硬盘。
SSD属于半导体存储器,存储速率快,体积小,非常受欢迎。但是,它的价格昂贵。对于数据中心来说,出于性价比考虑,HDD仍然是主流选择。而SSD,目前主要用于高端客户、高性能需求业务。
TOR交换机
Top of Rack, 就是机架顶部交换机的意思。这类交换机,是数据中心最底层的网络交换设备,负责连接本机架内部的服务器,以及与上层交换机相连。
机架再往上,就是一排机架、N排机架。将这些机架和服务器连接起来,就需要数据中心组网技术。
数据中心组网架构
胖树(Fat-Tree)架构
胖树(Fat-Tree)就是一种CLOS网络架构。Charles Clos提出的网络模型,核心思想是:用多个小规模、低成本的单元,构建复杂、大规模的网络。
相比于传统树型,胖树(Fat-Tree)更像是真实的树,越到树根,枝干越粗。从叶子到树根,网络带宽不收敛。
胖树架构的基本理念是:使用大量的低性能交换机,构建出大规模的无阻塞网络。对于任意的通信模式,总有路径让他们的通信带宽达到网卡带宽。
胖树架构被引入到数据中心之后,数据中心变成了传统的三层结构:
- 接入层:用于连接所有的计算节点。通常以机柜交换机(TOR,Top of Rack,柜顶交换机)的形式存在。
- 汇聚层:用于接入层的互联,并作为该汇聚区域二三层的边界。各种防火墙、负载均衡等业务也部署于此。
- 核心层:用于汇聚层的的互联,并实现整个数据中心与外部网络的三层通信。
传统三层架构有很多的缺点:
-
资源的浪费: 传统三层结构中,一台下层交换机会通过两条链路与两台上层交换机互连。由于采用的是STP协议( Spanning Tree Protocol,生成树协议),实际承载流量的只有一条。其它上行链路,是被阻塞的(只用于备份)。这就造成了带宽的浪费。
-
故障域比较大
-
数据中心的流量变化: 虚拟化和微服务架构开始流行,很多软件开始推行功能解耦,单个服务变成了多个服务,部署在不同的虚拟机上。虚拟机之间的流量,大幅增加。
东西向流量,其实也就是一种“内部流量”。这种数据流量的大幅增加,给传统三层架构带来了很大的麻烦——因为服务器和服务器之间的通信,需要经过接入交换机、汇聚交换机和核心交换机。
叶脊网络(Spine-Leaf)。
相比于传统网络的三层架构,叶脊网络进行了扁平化,变成了两层架构。
脊交换机,相当于核心交换机。叶和脊交换机之间通过ECMP(Equal Cost Multi Path)动态选择多条路径。
脊交换机下行端口数量,决定了叶交换机的数量。而叶交换机上行端口数量,决定了脊交换机的数量。它们共同决定了叶脊网络的规模。
优点:
-
带宽利用率高
每个叶交换机的上行链路,以负载均衡方式工作,充分的利用了带宽。
-
网络延迟可预测
在以上模型中,叶交换机之间的连通路径的条数可确定,均只需经过一个脊交换机,东西向网络延时可预测。
-
扩展性好
当带宽不足时,增加脊交换机数量,可水平扩展带宽。当服务器数量增加时,增加脊交换机数量,也可以扩大数据中心规模。总之,规划和扩容非常方便。
-
降低对交换机的要求
南北向流量,可以从叶节点出去,也可从脊节点出去。东西向流量,分布在多条路径上。这样一来,不需要昂贵的高性能高带宽交换机。
-
安全性和可用性高
传统网络采用STP协议,当一台设备故障时就会重新收敛,影响网络性能甚至发生故障。叶脊架构中,一台设备故障时,不需重新收敛,流量继续在其他正常路径上通过,网络连通性不受影响,带宽也只减少一条路径的带宽,性能影响微乎其微。
光纤与分布式
脊网络带来了一个趋势,那就是对光模块的数量需求大幅增加。
普遍使用光纤替代网线。所以,光纤、光模块和光通信设备(OTN等),成为数据中心重要的组成部分。
现在还有一个比较流行的光通信名词,叫做DCI,也就是Data Center Inter-connect(数据中心互联)。现在流行分布式部署,数据中心之间的数据流量很大,对带宽要求很高。
所以,运营商和云服务商就搞DCI,建设数据中心之间专门的光通信骨干网,是很大一块市场。
供电
供电是数据中心正常运作的基础。
数据中心的配电设备,主要作用就是电能的通断、控制和保护。最主要的配电设备,就是配电柜。
“UPS+市电”是传统的供电方案。现在,更流行的是“HVDC+市电”的方案。HVDC是High Voltage Direct Current,高压直流输电。
服务器这样的IT设备通常是使用220V交流电,而核心网、无线等通信设备则更多使用的是-48V直流电。
市电供电,一般都是交流。数据中心,一般既会提供-48V直流,也会提供220V交流(通过AC-DC转换和DC-AC逆变转换)。
事实上,直流现在正成为更多数据中心的选择(例如谷歌),因为直流的损耗更小,对电能的利用率更高,符合现在数据中心高算力下的高能耗发展趋势。
制冷
制冷系统是数据中心除了主设备之外的第二大耗能主体。
目前,数据中心制冷主要包括两种方式,一种是风冷,另一种是液冷。
-
风冷一般采用风冷空调系统。和我们家用空调一样,数据中心风冷空调也分为室内机和室外机。相对来说,技术成熟,结构简单,容易维护。
-
液冷,是采用液体作为冷媒,进行降温散热。
机柜池级、排级和机柜级等近端制冷方式,正在崛起,成为新建数据中心的主流选择。机柜池级、排级和机柜级,是以一个机柜池、一排机柜或者单个机柜为中心,进行散热设计。
模块化数据中心
将数据中心的结构系统、供配电系统、暖通系统、消防系统、照明系统、综合布线等进行集成,变成一个一个的“积木”。然后,将“积木”运送到现场后,进行简单吊装、搭建,就可以完成建设和部署。
Cloud Security
云安全是为保护云端应用、数据和基础设施安全而采取的一套信息安全措施。这涉及应用各种安全政策、实践、控制措施以及诸如身份和访问权限管理和数据泄露防护工具等其他方法,目的是帮助保护云环境免受未经授权的访问、在线攻击和内部威胁的侵害。
云安全的责任归属
Cloud service providers (CSPs) typically follow a shared responsibility model
Broadly speaking, the CSP is always responsible for the cloud and its core infrastructure, while the customer is expected to secure anything that runs “in” the cloud, such as network controls, identity and access management, data, and applications.
云安全的防护策略
- Identity and access management (IAM)
- Data loss prevention (DLP): 借助 DLP 功能,您可以自动发现和分类受监管的云端数据并对其进行去标识化处理,从而帮助您监控自己存储和处理的数据。
- Security information and event management (SIEM): SIEM 解决方案将安全信息和安全事件管理相结合,针对云环境中的各类威胁提供自动监控、检测和突发事件响应。借助 AI 和机器学习技术,SIEM 工具可以帮助您检查和分析跨应用和网络设备生成的日志数据,并在检测到潜在威胁时快速采取相应措施。
- Public key infrastructure (PKI): PKI 是使用数字证书管理安全加密信息交换的框架。PKI 解决方案通常会为应用提供身份验证服务,并验证数据在传输过程中是否未遭泄露且保持机密状态。
云安全的主要挑战
- 传统环境中的安全威胁,如:insider threats, data breaches and data loss, phishing, malware, DDoS attacks, and vulnerable APIs.
- Lack of visibility: 云端资源是在公司网络外部的基础设施上运行,并由第三方拥有。因此,传统的网络可见性工具并不适合云环境,这使您很难监控所有云资产、这些资产的访问方式以及谁有权访问这些资源。
- Misconfigurations: 云安全设置配置不当是导致云环境中数据泄露的主要原因之一。云端服务旨在实现轻松访问和数据共享,但许多组织可能并不完全了解如何保护云基础设施。这可能会导致配置不当,例如保留默认密码、无法激活数据加密或权限控制管理不当。
- Access management: 由于云部署可以直接通过公共互联网进行访问,这使得任何人都可以从任何位置或设备方便地访问云部署。同时,这也意味着攻击者可以更容易地通过被盗凭据或不当的访问权限控制获取授权资源。
- Dynamic workloads: 您可以根据工作负载需求预配云资源并对其进行动态扩容或缩容。然而,许多旧的安全工具无法在这种柔性环境中实施政策,因为这些环境中不断变化的临时工作负载可能会在几秒钟内被添加或移除。
- Compliance: 云技术增添了另一层法规遵从和内部合规性要求,即使您没有遇到安全事故,也可能会违反这些要求。
阿里云重大事故
- 香港可用区C服务中断: 2022年阿里云香港机房制冷设备故障,导致多个香港及澳门的站点受到影响,宕机时间超过10个小时。涉及到的问题包括:、、客户在香港地域新购ECS等管控操作失败、故障信息发布不够及时透明。
- 冷机系统故障恢复时间过长: 机房冷却系统缺水进气形成气阻,影响水路循环导致4台主冷机服务异常。 在设施管控逻辑层面,确保系统自动切换逻辑符合预期,同时保证手工切换的准确性,防止内部状态死锁从而影响故障的恢复。
- 现场处置不及时导致触发消防喷淋: 加强机房服务商管理,梳理机房温升预案及标准化执行动作
- 客户在香港地域新购ECS等管控操作失败: ECS管控系统为B、C可用区双机房容灾,可用区C的ECS实例拉起恢复动作引入的流量,导致可用区 B 管控服务资源不足。全网巡检,整体优化多AZ产品高可用设计,避免出现依赖OSS单AZ和中间件单AZ的问题。Object Storage Service / Availability Zone.
- 故障信息发布不够及时透明
- 2023双十一之后,云产品控制台访问及API调用出现异常
- 阿里云网盘: 阿里雲盤出現BUG後,文件夾可加載出大量其他用戶的照片影片,包括自拍照、風景照和旅遊照等各種類型
阿里云业务范围
- 计算服务:包括云服务器 ECS(Elastic Compute Service)、弹性裸金属服务器、负载均衡等。
- 存储服务:包括对象存储服务 OSS(Object Storage Service)、文件存储 NAS(Network Attached Storage)、块存储 Disk 等。
- 数据库服务:包括关系型数据库 RDS(Relational Database Service)、NoSQL 数据库等。
- 网络服务:包括弹性公网 IP、虚拟私有云 VPC(Virtual Private Cloud)、负载均衡等。
- 安全与监控服务:包括访问控制、DDoS 防护、安全中心等服务。
- 大数据与人工智能服务:包括大数据计算服务 MaxCompute、机器学习平台等。
- 容器与微服务服务:包括容器服务 Kubernetes、容器镜像服务等。
- Web 托管与域名服务:包括云虚拟主机、云解析 DNS 等服务。
- 物联网服务:包括物联网平台、物联网套件等。
- 区块链服务:包括区块链服务 BaaS(Blockchain as a Service)等。
网络通信
网络设备
-
网桥:工作在数据链路层,在不同或相同类型的LAN之间存储并转发数据帧,必要时进行链路层上的协议转换。可连接两个或多个网络,在其中传送信息包。
-
交换机:工作在数据链路层,原理等同于多端口网桥。作用是连接数个相同网段的不同主机,减少网内冲突,隔离冲突域。利用存储转发和过滤技术来从物理上分割网段。
-
路由器:工作在网络层,在不同的网络间存储并转发分组。可在异种网络之间(即不同类型的局域网互连,局域网与广域网,广域网与广域网)传输数据并进行路径选择,使用专门的软件协议从逻辑上对整个网络进行划分。
-
网关:对高层协议(包括传输层及更高层次)进行转换的网间连接器。允许使用不兼容的协议,比如SPX/IPX和TCP/IP的系统和网络互连。因为协议转换是网关最重要的功能,所以答案是工作在传输层及以上层次。
-
网卡:在物理层上,网卡主要是完成物理接口的连接,电信号的传送以及将数据分解为适当大小的数据包之后向网络上发送的功能. 数据链路层功能包括链路建立和拆除,帧定界同步顺序差错控制这些。大多认为主要工作在物理层
模型与协议
-
OSI 7层模型
- 应用层: HTTP, FTP, SMTP 对应程序的通信服务
- 表示层: 主要定义数据格式以及加密,包括多个消息的控制和管理
- 会话层: 定义如何开始结束、控制对话;包括多个双向信息的控制管理
- 传输层: 差错恢复协议以及无差错恢复协议,以及对于顺序不对的数据包重新排序,比如TCP和UDP
- 网络层: 定义了标识所有节点的逻辑地址,路由的实现,以及一个包分成更小包的分段方法,比如IP
- 数据链路层: 定义了单个链路上如何传输数据,如ATM,MAC
- 物理层: 定义了传输介质的特性
-
TCP/IP四层模型
应用层、传输层、网络层、网络接口层
- 网络为什么要分层?
- 各层之间相互独立, 提高了灵活性和可替换性, 是一种常见解耦的思路
- 大问题化小, 将复杂的网络问题分解为许多比较小的,界线比较清晰简单的部分来处理,从而更易于单独实现每个分层的协议,并界定各个分层的具体责任和义务。
- 常见的网络协议
| 位置 | 协议名称 | 协议内容 |
|---|---|---|
| 应用层 | HTTP | 基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议 |
| 应用层 | SMTP 简单邮件发送协议 | 基于 TCP 协议,是一种用于发送电子邮件的协议 / 只负责发送 |
| 应用层 | POP3/IMAP邮件接收协议 | 基于 TCP 协议,两者都是负责邮件接收的协议 |
| 应用层 | FTP文件传输协议 | 基于 TCP 协议,是一种用于在计算机之间传输文件的协议 / 不安全 |
| 应用层 | Telnet远程登陆协议 | 基于 TCP 协议,用于通过一个终端登陆到其他服务器 / 明文不安全 |
| 应用层 | SSHSecure Shell Protocol | 基于 TCP 协议,加密和认证机制实现安全的访问和文件传输等业务 |
| 应用层 | RTP实时传输协议 | 通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量 |
| 应用层 | DNS域名管理系统 | 基于UDP 协议,用于解决域名和 IP 地址的映射问题 |
| 传输层 | TCP传输控制协议 | 提供面向连接的,可靠的数据传输服务 |
| 传输层 | UDP用户数据协议 | 提供无连接的,尽最大努力的数据传输服务 |
| 网络层 | IP网际协议 | 定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地 / IPv4, IPv6 |
| 网络层 | ARP地址解析协议 | 解决了 IP 地址转 MAC 地址的一些问题 |
| 网络层 | ICMP互联网控制报文协议 | 传输网络状态和错误消息的协议,常用于网络诊断和故障排除 / Ping工具 |
| 网络层 | NAT网络地址转换协议 | 应用于内部网到外部网的地址转换过程中 |
| 网络层 | OSPF网络地址转换协议 | 种动态路由协议,基于链路状态算法,考虑了链路的带宽、延迟等因素来选择最佳路径 |
| 网络层 | RIP路由信息协议 | 一种动态路由协议,基于距离向量算法,使用固定的跳数作为度量标准,选择跳数最少的路径作为最佳路径 |
| 网络层 | BGP边界网关协议 | 应一种用来在路由选择域之间交换网络层可达性信息的路由选择协议,具有高度的灵活性和可扩展性 |
传输层-TCP协议
- 特点
-
面向连接的、可靠的字节流服务
-
仅两方通信,广播和多播不能用于TCP
-
TCP使用校验和,确认和重传机制来保证可靠传输
-
TCP使用滑动窗口来实现流量控制,通过动态改变窗口大小来进行拥塞控制
-
使用累积确认保证数据的顺序不变和非重复
-
可靠性传输 连接和断开的可靠性:连接是基于三次握手,而断开则是四次挥手 有状态:TCP会记录哪些数据发送了,哪些数据被接受了,哪些没有被接受,并且保证数据包按序到达,保证数据传输不出差错。 可控制:报文校验、ACK应答、超时重传(发送方)、失序数据重传(接收方)、丢弃重复数据、流量控制(滑动窗口)和拥塞控制等机制
- 拥塞控制
- 慢启动: (拥塞窗口)cwnd = 1, cwnd = 2 * cwnd。
- 拥塞避免: 当cwnd >= ssthresh(慢启动阀值)时进入,cwnd = cwnd + 1;如果出现超时,则ssthresh = cwnd / 2,然后重新执行慢开始。
- 快重传: 发送方收到三个重复确认,可以知道此确认的下一个报文段丢失,执行快重传,例如连续收到三个M2,则M3丢失,立即重传M3。
- 快恢复: 将拥塞阈值降低为拥塞窗口的一半,将cwnd设置为ssthresh,此时直接进入拥塞避免。
- 与UDP比较
- UDP不需要建立连接,直接传输数据(不可靠);TCP协议是有连接的
- UDP支持一对一,一对多,多对多的交互传输; TCP是一对一的连接
- UDP是尽最大努力交付,而不是可靠性交付;TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性
- TCP有拥塞控制和流量控制机制,而UDP没有,网络拥堵不会影响发送速率
- TCP是流式传输(字节流服务),UDP是一个包一个包传输(报文服务),没有边界
- TCP 和 UDP 可以使用一个端口
-
TCP的三次握手
三次握手:建立TCP连接,需要服务器和客户端发送三个包
-
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
-
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
-
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
发送完毕后,客户端进入
ESTABLISHED状态,当服务器端接收到这个包时,也进入ESTABLISHED状态,TCP 握手结束。
第三次握手是可以携带数据的,前两次是不可以携带数据的。
-
-
为什么TCP不是两次握手?
防止已失效的连接请求又传送到服务器端,因而产生错误,客户端并不能保证一定能接收到服务器端发来的信息;
经过三次握手之后,客户端A 和服务器端B 都可以确认之前他们的所发送的消息,各自都能收到且报文也都成功发送给对方了,所以四次是多余的。
-
SYN攻击
在三次握手过程中,Server发送
SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的应对方案:
- syn cookie:在收到SYN包后,服务器根据一定的方法,以数据包的源地址、端口等信息为参数计算出一个cookie值作为自己的SYNACK包的序列号,回复SYN+ACK后,服务器并不立即分配资源进行处理,等收到发送方的ACK包后,重新根据数据包的源地址、端口计算该包中的确认序列号是否正确,如果正确则建立连接,否则丢弃该包。
- SYN Proxy防火墙:服务器防火墙会对收到的每一个SYN报文进行代理和回应,并保持半连接。等发送方将ACK包返回后,再重新构造SYN包发到服务器,建立真正的TCP连接。
-
四次挥手
- 第一次挥手:Client发送一个
FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 - 第二次挥手:Server收到FIN后,发送一个
ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 - 第三次挥手:Server发送一个
FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 - 第四次挥手:Client收到FIN后,Client进入
TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
- 为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。
- TIME-WAIT 状态为什么需要等待 2MSL
- 2MSL,2 Maximum Segment Lifetime,即两个最大段生命周期
- 1个 MSL 保证四次挥手中主动关闭方最后的 ACK 报文能最终到达对端
- 1个 MSL 保证对端没有收到 ACK 那么进行重传的 FIN 报文能够到达
- TCP与UDP的使用场景
TCP适用于需要可靠传输的应用场景,如Web浏览、电子邮件、文件传输等。 UDP则适用于实时性要求较高的应用场景,如音频和视频流媒体、网络游戏等。
-
TCP与UDP对应的应用层协议
TCP UDP FTP 文件传输协议, port:21 Telnet 远程登陆的端口, port:23 SMTP 简单邮件传送协议, port:25 POP3 POP3 用于接收邮件 DNS 域名解析服务, port:53 SNMP 网络管理协议, port:161 TFTP 简单文件传输协议
网络层-IP协议
IP 协议位于 TCP/IP 协议的第三层——网络层。与传输层协议相比,网络层的责任是提供点到点(hop by hop)的服务,而传输层(TCP/UDP)则提供端到端(end to end)的服务。
-
使用浏览器访问域名的全过程
- 浏览器向DNS服务器发出解析域名的请求
- DNS服务器将域名解析为对应的IP地址,并返回给浏览器
- 浏览器根据IP地址与目标服务器建立TCP连接
- 浏览器发出HTTP请求报文
- 服务器回复HTTP请求报文
- 浏览器解析响应报文,并显示在Web页面上
- 收到报文结束,释放TCP连接
- 使用的协议:
- 应用层:HTTP, DNS
- 传输层:TCP/ UDP
- 网络层:IP(IP数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将目的主机的IP地址映射成MAC地址)
-
IP和MAC区别(网络层和链路层):
MAC只负责某一个区间之间的通信, 而IP负责把数据包发送给最终的地址
网络交换机可以在OSI 第2 层(数据链路层)或第3 层( 网络层 )上运行。 第2 层交换机根据目标MAC 地址转发数据,而第3 层交换机则根据目标IP 地址转发数据
-
IP地址的分类
- IPv4地址: IPv4(Internet Protocol version 4)是目前广泛使用的IP地址版本。它由32位二进制数字组成,通常表示为四个用点分隔的十进制数,例如192.168.0.1。IPv4地址被分为不同的类别,包括A类、B类、C类、D类和E类。 - A类地址:A类地址使用第一个字节作为网络标识,范围从0.0.0.0到127.255.255.255。 - B类地址:B类地址使用前两个字节作为网络标识,范围从128.0.0.0到191.255.255.255。 - C类地址:C类地址使用前三个字节作为网络标识,范围从192.0.0.0到223.255.255.255。 - D类地址:D类地址用于多播(multicast)通信,范围从224.0.0.0到239.255.255.255。 - E类地址:E类地址保留用于将来的用途,范围从240.0.0.0到255.255.255.255。
- IPv6地址: IPv6(Internet Protocol version 6)是下一代IP地址协议。它由128位二进制数字组成,通常表示为八组用冒号分隔的十六进制数。IPv6地址提供了更大的地址空间,以满足日益增长的互联网设备需求。
- IPv6地址没有固定的地址类别,但可以基于前缀长度对其进行划分。例如,前缀长度为64位的地址通常用于本地子网,前缀长度为128位的地址用于单个设备。
- IPv4不够如何解决?
- NAT: 用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。
- IPv6:2 的 128 次方个地址
- 子网(subnet): 子网是将一个大的 IP 地址空间划分为更小的子网络的过程。它有助于组织和管理 IP 地址。
网络层-ARP协议
- 当主机A要发送数据包给目标主机B时,首先会检查自己的ARP缓存(ARP Cache)中是否有目标主机B的IP地址对应的MAC地址。如果有,主机A就直接使用该MAC地址进行数据包的封装和发送。
- 如果ARP缓存中没有目标主机B的MAC地址,主机A就会发送一个ARP请求广播(ARP Request Broadcast)到局域网上的所有主机。 ARP请求广播中包含了主机A的IP地址和MAC地址,以及目标IP地址(即主机B的IP地址)。其他主机收到该广播后,会检查自己的IP地址是否与目标IP地址匹配。
- 如果有主机发现自己的IP地址与目标IP地址匹配,它会发送一个ARP响应(ARP Reply)给主机A。该响应中包含自己的IP地址和MAC地址。
- 主机A接收到ARP响应后,会将目标IP地址和对应的MAC地址存入ARP缓存中,并使用该MAC地址进行数据包的封装和发送。
网络层-路由交换原理
-
什么是路由交换?请简要说明其作用和原理
路由交换是一种网络技术,用于传输数据包。它能够根据数据包的目标地址来选择最佳的路径实现网络通信。通过使用路由表的信息来决定数据包的传输路径,从而使网络中的数据得以高效、准确地到达目标地址。
-
动态路由和静态路由的区别
动态路由是一种自动化的路由选择机制,其中网络设备能够根据网络信息的动态变化自主调整路由表,从而实现数据包的传输;而静态路由是由网络管理员手动配置的一种固定的路由选择机制,其中路由表的内容不会自动变化。动态路由和静态路由可以同时存在。
-
OSPF协议的作用和特点
OSPF(Open Shortest Path First)是一种基于链路状态的动态路由选择协议。OSPF协议可以根据网络的拓扑结构和链路状态计算出最短路径,并将其记录在路由表中。通过使用OSPF协议,路由交换产品能够快速、准确地选择最佳的路径,提高网络的传输性能和稳定性。
原理: OSPF 组播的方式在所有开启 OSPF 的接口发送 Hello 包,用来确定是否有 OSPF 邻居,若发现了,则建立 OSPF 邻居关系,形成邻居表,之后互相发送 LSA(链路状态通告)相互通告路由,形成 LSDB(链路状态数据库)。再通过 SPF 算法,计算最佳路径(cost 最小)后放入路由表。
-
BGP协议的作用和特点
BGP(Border Gateway Protocol)是一种用于在互联网上实现自治系统之间的路由选择的协议。BGP协议能够根据自治系统之间的策略来选择最佳的路径,实现自治系统之间的互联互通。
-
路由器和交换机
路由器是网络设备,用于在不同网络之间转发数据包。交换机是局域网设备,用于在局域网内部转发数据帧。路由器工作在网络层,交换机工作在数据链路层。
-
路由聚合
路由聚合是将多个具有相同目的地前缀的路由表项合并为一个更大的路由表项,以减少路由表的大小和复杂性。
-
VPN(Virtual Private Network)
VPN 是一种通过公共网络(如互联网)建立私密通信连接的技术。它用于加密通信、远程访问和建立安全的跨网络连接。
-
QoS(Quality of Service)
QoS 是一组技术和机制,用于控制网络流量、优先处理特定类型的数据和保证服务质量。
-
ACL(Access Control List)
ACL 是一种访问控制列表,用于限制或允许特定类型的流量通过路由器。它用于网络安全和流量管理。
-
路由器的 NAT 穿透(NAT traversal)
NAT 穿透是一种技术,用于在存在 NAT 的网络中建立点对点通信连接。它解决了 NAT 对直接通信的限制。
-
路由器的冗余(redundancy)
冗余是指在网络中使用备份设备或路径来提高可靠性和容错性。它用于防止单点故障和实现高可用性。
-
MPLS(Multiprotocol Label Switching)
MPLS 是一种基于标签的网络技术,用于快速转发数据包和实现灵活的路由和流量工程。
-
负载均衡(load balancing)
负载均衡是将流量均匀分配到多个服务器或网络设备上,以提高性能和可靠性。它用于分担单个设备或服务器上的负载。
-
网络地址转换(NAT)
网络地址转换是一种网络技术,用于将私有 IP 地址转换为公共 IP 地址以进行互联网访问,以及实现 IP 地址的映射和转换。
-
端口转发(port forwarding)
端口转发是将路由器或防火墙上的某个端口的流量转发到另一个目标地址和端口的过程。它用于实现远程访问和服务映射等功能。
应用层-HTTP/HTTPS
-
基本信息
HTTP是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。 HTTP是一个无状态的面向连接的协议
HTTP 协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非常不安全, HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 http 协议安全。
https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
-
常见状态码: 1: 服务器收到请求 2: 成功 3: 重定向 4: 客户端错误 5: 服务端错误
-
GET和POST的区别
- 从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。
- 从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
- 从幂等性的角度,GET 是幂等的,而 POST 不是。(幂等表示执行相同的操作,结果也是相同的)
- 从 TCP 的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。(火狐浏览器除外,它的 POST 请求只发一个 TCP 包)
-
HTTP/2改进
- 头部压缩
- 多路复用
- 服务器推送
-
跨域资源共享CORS
跨域请求(Cross-Origin Request)是指在Web开发中,由一个域(或域名、主机)下的网页向另一个域下的资源发起的HTTP请求。在浏览器的安全策略中,默认情况下,Web页面只能请求同源(相同协议、域名和端口)下的资源,而跨域请求则是违反了这个安全策略。
CORS(跨来源资源共享)是一种浏览器安全机制,用于防止跨域请求。当你的网页向不同域名的服务器发出请求时,如果服务器没有开启CORS,那么浏览器就会阻止请求,并抛出一个CORS错误。
解决CORS问题的方法通常有以下几种:
- 在服务器端设置CORS: 如果你有权限修改服务器端的代码,可以在服务器端设置CORS响应头,以允许跨域请求。
- 使用代理:如果你没有权限修改服务器端代码,可以使用代理来解决CORS问题。例如,你可以在本地启动一个Node.js服务器,将跨域请求转发到目标服务器,然后在客户端通过代理服务器发出请求。这种方法需要额外的开销和配置,但可以解决CORS问题。
- JSONP: JSONP(JSON with Padding)
-
HTTP缓存
什么是缓存? 把一些不需要重新获取的内容再重新获取一次
为什么需要缓存? 网络请求相比于 CPU 的计算和页面渲染是非常非常慢的。
哪些资源可以被缓存? 静态资源,比如 js css img。
个人理解:Cookie更倾向储存用户信息,而HTTP缓存则是网站加载的静态资源。
刷新对缓存的影响:
- 正常操作:强制缓存有效,协商缓存有效。
- 手动刷新:强制缓存失效,协商缓存有效。
- 强制刷新:强制缓存失效,协商缓存失效。
-
SSL
SSL 代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和 Web 服务器之间发送的数据的协议。是一种共享密钥加密和公开密钥加密并用的混合加密机制。
SSL 工作过程,A:客户端,B:服务器端
- 协商加密算法:A 向 B 发送 SSL 版本号和可选加密算法,B 选择自己支持的算法并告知 A
- 服务器鉴别:B 向 A 发送包含公钥的数字证书,A 使用 CA 公开发布的公钥对证书进行验证
- 会话密钥计算:A 产生一个随机秘密数,用 B 的公钥进行加密后发送给 B,B 根据协商的算法产生共享的对称会话密钥并发送给 A.
- 安全数据传输:双方用会话密钥加密和解密它们之间传送的数据并验证其完整
-
一次完整的 HTTP 请求过程
域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 http 请求 --> 服务器响应 http请求,浏览器得到 html 代码 --> 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
-
HTTPS的实现原理
HTTPS在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
① 证书验证阶段
- 浏览器发起 HTTPS 请求
- 服务端返回 HTTPS 证书
- 客户端验证证书是否合法,如果不合法则提示告警
② 数据传输阶段
- 当证书验证合法后,在本地生成随机数
- 通过公钥加密随机数,并把加密后的随机数传输到服务端
- 服务端通过私钥对随机数进行解密
- 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
为什么数据传输是用对称加密?
首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;
另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
-
HTTPS的中间人攻击
首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的“中间人攻击”问题。
-
从输入一个url到页面展示发生了什么
- 在浏览器中输入指定网页的 URL。
- 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
- 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
- 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
- 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
- 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
- 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。
应用层-DNS
DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。
浏览器在本地会维护一个hosts列表,一般来说浏览器要先查看要访问的域名是否在hosts列表中,如果有的话,直接提取对应的 IP 地址记录,就好了。如果本地hosts列表内没有域名-IP 对应记录的话,那么此时就需要DNS了。
-
DNS服务器
- 根 DNS 服务器
- 顶级域 DNS 服务器(TLD 服务器)
- 权威 DNS 服务器
- 本地 DNS 服务器
-
DNS工作流程:递归+迭代
Nginx
Nginx, 是一个 Web 服务器和反向代理服务器用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。
-
优点: 跨平台、配置简单,非阻塞、高并发连接、内存消耗小、成本低廉。
-
主要功能:
-
正向、反向代理
- 正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定原始服务器,然后代理向原始服务器转交请求并将获得的内容返回给客户端。代理服务器和客户端处于同一个局域网内。
- 反向代理实际运行方式是代理服务器接受网络上的连接请求。它将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上请求连接的客户端 。代理服务器和原始服务器处于同一个局域网内。
-
负载均衡、分流
- 轮询(默认)round_robin:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
- IP 哈希 ip_hash: 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 共享的问题。 当然,实际场景下,一般不考虑使用 ip_hash 解决 session 共享。
- 最少连接 least_conn: 下一个请求将被分派到活动连接数量最少的服务器
- 权重 weight: weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下,达到合理的资源利用率。
-
虚拟主机(绑定host)
-
通信协议比较
- MQTT:轻量级、低开销、支持QoS级别、适合大规模部署。
- CoAP:基于UDP,适用于低功耗网络、低延迟、低开销。
- RESTful/HTTP:易于理解和集成、利用现有HTTP基础设施、不适合资源受限设备。
- XMPP:支持双向通信、丰富的扩展机制、适合复杂交互。