计网 - Ep1 - 概述「万字长文」丨学习记录

225 阅读22分钟

Computer Networking A Top-Down Approach Learning Note Part 1

前言的前言的前言

个人博客:conqueror712.github.io/

知乎:www.zhihu.com/people/soeu…

Bilibili:space.bilibili.com/57089326

掘金:juejin.cn/user/129787…


前言的前言

本文是笔者初学计算机网络的笔记和一些心得,难免会有部分疏漏和错误,还请各位读者积极指出,不吝赐教。

有一些内容是笔者认为对自己暂时没那么重要的部分,就没有放上去,具体的内容可以查看相关的书籍。

还有要补充的就是,计算机网络的学习记录将会分为多部分,这一部分,主要是涵盖了《自顶向下计算机网络》的第一章部分,因为是初学,笔者对于很多概念还比较陌生,加之这一章节与其他章节的性质不同,是一个概览,所以单独把这一章节分为部分。

事不宜迟,我们开始吧!


Unit 1 计算机网络概述

前言

该课程的总体教学目标需要掌握计网的什么?

  • 基本概念
  • 工作原理
  • 常用技术

计算机网络为什么比较难学?

有很多的**"定性的、逻辑描述的推理"**;

与数学物理不同,倒是有点像政治,有着比较强的**"表述性"**;

在学习的过程中应当"取其精华",尤其是面对一些晦涩难懂且冗长的概念。

这一章节作为导论,有什么"关键词"吗?

框架、术语、原理、历史。

此外,每一章大致分为两个部分:原理 + 实例;

其中,原理又有两个部分:功能 + 服务(一般是向上层提供接口的服务)

avatar


什么是Internet?

avatar

从具体构成角度:

互联网只是网络的一种,广义的网络就是节点 + 边,例如蜘蛛网、家族图谱等等。

avatar

  • 主机节点:主机host = 端系统end system,图例是,还包括运行的网络应用程序;
  • 数据交换节点:负责转发数据,图例是
  • 通信链路:以带宽bps,即bit/s作为传输速率衡量标准,常见的有光纤、同轴电缆、卫星、无线电等;
  • 接入链路:□与○之间
  • 骨干链路:○与○之间
  • 交换机:在链路层;
  • 路由器:在网络层;

互联网:

  • 由TCP和IP协议为主的一簇协议支撑工作的那个网,概括来说可以称为网络的网络
  • 松散的层次结构,互联的ISP (Internet Service Provider)因特网服务提供商;
  • 公共Internet,专用intranet;
  • 标准:RFC文档 → IETF;

协议:

  • 对等层的实体,在通信的过程中需要遵守的规范的集合。
  • 协议控制发送
  • 定义了在两个或多个通信实体之间交换的报文格式次序,以及在报文传输、接收或其他事件方面所采取的动作
  • PDU (Protocol Data Unit)协议数据单元,是指对等层次之间传递的数据单位。
    • 物理层的PDU是bit
    • 数据链路层的PDU是数据帧frame
    • 网络层的PDU是数据包packet
    • 传输层的PDU是数据段segment
    • 其他更高层次的PDU是数据data

从服务角度:

包括分布式应用进程和为分布式应用进程提供通讯服务的基础设施。

分布式应用进程:

使用通信设施进行通信,包括Web、VoIP、Email、社交网络、电商等等;

基础设施:

形式是API,将发送和接收数据的APPS与互联网连接起来,组成如下:

  • 主机
  • 应用层以下的所有协议实体
  • 网络的部分

类型如下:区别就在于"打招呼与否"

  • 面向连接的可靠服务,用TCP / IP()
  • 无连接的不可靠服务,用UDP

[缩写说明]:

  • TCP Transmission Control Protocal是传输控制协议;
  • IP Internet Protocol是网际协议;
  • IETF Internet Engineering Task Force因特网工程任务组;
  • RFC Request for commets请求评论;
  • API Application Programming Interface应用程序编程接口;

谁在运营互联网?

没有人经营互联网。它被组织为一个分散的网络网络。

数以千计的公司、大学、政府和其他实体运营自己的网络,并根据自愿互连协议相互交换流量。

  • IETF(互联网工程任务组)组织管理了使互联网工作的共享技术标准
  • ICANN(互联网名称与数字地址分配机构)负责分发域名和IP地址(计算机用来在互联网上相互识别的数字),但是并不控制谁可以连接到互联网。

avatar

什么是IPv6?

目前的互联网标准,称为IPv4,只允许大约4亿个IP地址。这在1970年代被认为是一个很大的数字,但今天,IPv4地址的供应几乎耗尽。

因此,互联网工程师开发了一种名为IPv6的新标准。IPv6允许数量惊人,确切的数字是39位数,确保几乎永远不会再耗尽。

具体的结构等细节这里不展开叙述。

无线互联网如何工作?

无线互联网有两种基本类型:

  • WIFI:任何人都可以购买WIFI网络设备,为了防止互相干扰,WIFI网络的功率和范围有严格的限制;
  • 蜂窝:更加集中,通过将服务区域分解为单元来工作,单元小到一个街区,大到数英里宽,每个单元的重心都有一个塔来提供服务,当设备从一个小区移动到另一个小区时,网络会自动将设备从一个塔转移到另一个塔,允许用户继续通信而不会中断。蜂窝网络使用许可用于其专用的频谱,由于该频谱稀缺,因此通常通过拍卖授予。

avatar

什么是云?

云描述了一种在 2000 年代初流行的计算方法。通过将文件存储在服务器上并通过互联网交付软件,云计算为用户提供了更简单、更可靠的计算体验。


网络边缘

avatar

何为网络边缘?

采用网络设施的面向连接的服务;

说白了,就是上文提到过的那些"方的",也就是主机节点和应用程序,它们是edge;

网络边缘是计算机网络的部件,当然还有其他的部件,一起构成了网络结构:

avatar


应用进程间的通讯方式:

主要有两种模式

CS模式

即客户端-服务器模式,这种模式是主从的,资源在服务器,客户端来请求之;

客户端是主动的,而服务器是被动的;

会有什么问题呢?

就是当Client太多的时候,需要好多的Server构成Server Farm,

从而导致更大的扩容代价和宕机代价,

总体来说就是可扩展性差

P2P模式

即peer - peer模式,是对等的一种模式,而非主从;

每个节点既可以是Client,也可以是Server,构成分布式的系统,可扩展性好

例如迅雷等文件分发软件,就是利用P2P模式来进行更好的工作,传统的话是使用FTP;

举例来说,如果你要下载一个文件,它会给你分成三个片段,你将会从不同的三个节点获得一部分片段,最后拼接汇集在一起,这样就实现了带宽的提升,速率的提升。


关于连接服务:

共同点:都是采用网络设施进行的。

avatar

TCP服务

  • 可靠:不出错、不乱序、不重复、不丢失;
  • 流量控制:维护一个Balance,协调发送方和接收方的速率;
  • 拥塞控制:维护一个Balance,协调链路上的节点的通行能力,类似道路车流量控制;

UDP服务

  • 无连接:上来就发送,就是任性
  • 不可靠:丢了一些也没关系
  • 无流量控制
  • 无拥塞控制

对于无连接服务,这里有补充:

avatar


网络核心

网络分类:

avatar

基本问题:数据怎样通过网络进行传输?

网络核心包括分组交换机以及网络链路,它们一起构成了网状网络

分组交换:

关键功能:路由 + 转发

  • 路由:决定分组采用的源到目标的路径,路由算法;
  • 转发:将分组从路由器的输入链路转移到输出链路;

特点:

  • 将要传送的数据分成一个个单位:分组packet;
  • 将分组packet从一个路由器传到相邻路由器hop,一段段最终从源端传送到目标端;
  • 每段:采用链路的最大传输能力,即带宽;

avatar

存储转发传输

  • 被传输到下一个链路之前,整个分组必须到达路由器;
  • 在一个速率为R bps的链路 ,一个长度为L bits 的分组 的存储转发延时: L/R s;

排队延时和分组丢失

avatar

  • 如果到达速率 > 链路的输出速率,则分组将会排队,形成queue;
  • 但如果路由器的缓存用完了,分组将会被抛弃,俗称丢包;

统计多路复用

avatar

转发表和路由选择协议

路由器怎样决定它应当向哪条链路进行转发呢?

在因特网中,每个端系统具有一个称为IP地址的地址,当源主机要向目标端系统发送一个packet时,源在该分组的首部包含了目的地的IP地址,方便路由器进行转发;

另外,每台路由器具有一个转发表,用于将目的地址(或者一部分)映射为输出链路。

但是,转发表示如何进行设置的?是人工的还是自动的?实际上是通过路由选择协议来实现自动设置转发表,在后面的章节会详细介绍(第四章)。

分组交换的网络层

  1. 数据报网络:

    分组的目标地址决定下一跳

    在不同的阶段,路由可以改变

    类似:问路

    Internent

  2. 虚电路网络:

    每个分组都带标签(虚电路标识 VC ID),标签决定下一跳

    在呼叫建立时决定路径,在整个呼叫中路径保持不变

    路由器维持每个呼叫的状态信息

    X.25 和ATM

其工作原理暂略


电路交换:

这是一种端到端 end-to-end 的连接

  • 为每个呼叫预留一条专有电路:如电话网;
  • 专用资源:不共享,即每个呼叫一旦建立起来就能够保证性能;
  • 如果呼叫没有数据发送,被分配的资源就会被浪费;
  • 通常被传统电话网络采用,不适合计算机之间的通信;
    • 连接建立时间长;
    • 计算机之间的通信有突发性,如果使用电路交换则浪费的片较多;

电路交换-网络资源分片

网络资源,如带宽被分成片

  • FDM 频分复用
  • TDM 时分复用
  • WDM 波分复用

avatar

电路交换-计算

avatar


分组交换网中的时延、丢包和吞吐量详解:

四种时延:

avatar

  • 处理时延:检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分;
  • 排队时延:在队列中,当分组在链路上等待传输时,它经受排队时延;
  • 传输时延:L / R,也就是路由器将分组从队列中推出去的时间;
  • 传播时延:从链路起点到终点的物理传播需要的时间;

流量强度

L * a / Ra是表示分组到达队列的平均速率,单位是分组/秒,即pkt/s

avatar

丢包

随着流量强度接近1,队列将满,路由器将丢弃后续分组。

端到端时延:

avatar

1. Traceroute:

Traceroute是一个简单的程序,它能够在任何因特网上运行。

当用户指定一个目的主机名字时,源主机中的该程序朝着该目的地发送多个特殊的分组。

更具体的内容暂略。

2. 端系统、应用程序和其他时延

这种填充一个分组的时间称为分组化时延,可能较大。

计算机网络中的吞吐量

吞吐量分为瞬时吞吐量平均吞吐量

  • 瞬时吞吐量:是主机接收到文件的速率,以bps计;
  • 平均吞吐量:如果该文件由F bit,主机B接收到所有F bit用去了T秒,则文件传送的平均吞吐量是F / T bps
瓶颈链路

avatar


接入网与物理媒体

接入网是指host与edge router相连的这条物理链路;

三个方式:

  • 家庭接入网络
  • 单位接入网络(学校、公司)
  • 无线接入网络

两个注意:

  • 接入网络的带宽?
  • 共享 or 专用?

家庭接入:

avatar

  • DSL 数字用户线,即接入网
    • 采用现存的到交换局DSLAM的电话线;
      • DSL线路上的数据被传到互联网;
      • DSL线路上的语音被传到电话网;
    • < 2.5 Mbps上行传输速率(typically < 1 Mbps);
    • < 24 Mbps下行传输速率(typically < 10 Mbps);

avatar


  • 电缆

    avatar


  • FTTH 光纤到户
    • 又称线缆网络,有线电视信号线缆双向改造;
    • FDM: 在不同频段传输不同信道的数据,数字电视和上网数据(上下行);
    • HFC: hybrid fiber coax
      • 非对称: 最高30Mbps的下行传输速率, 2 Mbps 上行传输速率;
    • 线缆和光纤网络将家庭用户接入到ISP路由器;
    • 各用户共享到线缆头端的接入网络;
      • 与DSL不同,DSL每个用户一个专用线路到CO (Central Office);

avatar


  • 拨号 + 卫星
    • 利用modem,将上网数据调制加载音频信号上,在电话线上传输,在局端将其中的数据解调出来,反之亦然;
      • 调频
      • 调幅
      • 调相位
      • 综合调制
    • 56Kbps 的速率直接接入路由器 (通常更低);
    • 不能同时上网和打电话:不能总是在线;

企业接入网络:

avatar

  • 以太网
  • WiFi

广域无线接入网络:

各无线端系统共享无线接入网络(端系统到无线路由器),通过基站(接入站);

avatar


物理媒体:

avatar

avatar

avatar


Internet结构和ISP

互联网络结构:网络的网络

端系统通过接入ISP来连接到互联网;

若将每个接入ISP都连接到全局ISP,客户ISPs和提供者ISPs又经纪合约,这样一定会有竞争者有利可图,一定存在竞争,于是不能直接这么干;

avatar

  • POP: 高层ISP面向客户网络的接入点,涉及费用结算
    • 如一个低层ISP接入多个高层ISP,多宿(multi home)
  • 对等接入:2个ISP对等互接,不涉及费用结算
  • IXP:多个对等ISP互联互通之处,通常不涉及费用结算
    • 对等接入
  • ICP自己部署专用网络,同时和各级ISP连接

协议层次及服务模型

网络有很多构成元素和设备:

  • 主机
  • 路由器
  • 各种媒体的链路
  • 应用
  • 协议
  • 硬件,软件
  • ...

如何组织和实现这个复杂的网络功能呢?答案是分层

层次化方式实现复杂网络功能:

  • 将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:服务
  • 本层协议实体相互交互执行本层的协议动作目的是实现本层功能,通过接口为上层提供更好的服务
  • 在实现本层协议的时候,直接利用了下层所提供的服务;
  • 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+ 更下层所提供的服务;

服务与协议:

服务与协议的区别

  • 服务(Service):低层实体向上层实体提供它们之间的通信的能力,是通过原语(primitive)来操作的,垂直的

  • 协议(protocol) :对等层实体(peer entity)之间在相互通信的过程中,需要遵循的规则的集合,水平的

服务与协议的联系

  • 本层协议的实现要靠下层提供的服务来实现
  • 本层实体通过协议为上层提供更高级的服务

什么是数据包?

数据包是通过互联网传输的信息的基本单位。将信息拆分成小的、可消化的部分可以更有效地利用网络的容量。

数据包的组成:

  • 标头:包含帮助数据包到达其目标的信息,包括数据包的长度、源和目标,以及帮助接收方检测数据包在传输过程中是否损坏的校验和值
  • 实际数据:一个数据包最多可以包含 64 KB 的数据,大约是 20 页的纯文本。

此外,如果互联网路由器遇到拥塞或其他技术问题,则可以通过简单地丢弃数据包来处理它。发送计算机负责检测数据包未到达其目标并发送另一个副本。这种方法似乎违反直觉,但它简化了互联网的核心基础设施,以更低的成本实现更高的性能。

数据单元DU:

avatar

上文提到过的:

PDU (Protocol Data Unit)协议数据单元,是指对等层次之间传递的数据单位。

  • 物理层的PDU是bit
  • 数据链路层的PDU是数据帧frame
  • 网络层的PDU是数据包packet
  • 传输层的PDU是数据段segment
  • 其他更高层次的PDU是数据data

具体来说

avatar

分层处理和实现复杂系统的好处?

  • 概念化:结构清晰,便于标示网络组件,以及描述其相互关系
    • 分层参考模型
  • 结构化:模块化更易于维护和系统升级
    • 针对某一层的改变是独立的

Internet协议栈:

应用层: 网络应用

  • 为人类用户或者其他应用进程提供网络应用服务
  • FTP,SMTP,HTTP,DNS

传输层: 主机之间的数据传输

  • 在网络层提供的端到端通信基础上,细分为进程 到进程,将不可靠的通信变成可靠地通信
  • TCP,UDP

网络层: 为数据包从源到目的选择路由

  • 主机主机之间的通信,端到端通信,不可靠
  • IP,路由协议

链路层: 相邻网络节点间的数据传输

  • 2个相邻2点的通信,点到点通信,可靠或不可靠
  • 点对对协议PPP,802.11(wifi),Ethernet

物理层: 在线路上传送bit

avatar

ISO / OSI 参考模型:

avatar

封装与解封装:

avatar


面对攻击的网络

网络安全领域主要探讨以下问题:

  • 坏家伙如何攻击计算机网络?
  • 我们如何防御以免受他们的攻击?

坏家伙能够经因特网将有害程序放入你的计算机中:

一些恶意软件,会做各种不正当的事情,包括但不限于删除我们的文件,安装间谍软件来收集隐私信息。

受害的主机也会变成数以千计的受害设备网络中的一员,被统称为僵尸网络

如今(当时是2013年),多数恶意软件是通过自我复制来操作的,通过病毒或蠕虫的方式扩散:

  • 病毒:是一种需要某种形式的用户交互来感染用户设备的恶意软件,典型的例子是包含恶意可执行代码的电子邮件附件。
  • 蠕虫:是一种无需任何明显用户交互就能进入设备的恶意软件,那些应用程序可能从因特网接收恶意软件并运行它,生成了蠕虫。新近感染设备中的蠕虫则能扫描因特网,搜索其他运行相同易受感染的网络应用程序的主机,一经发现便发送一个自身副本。

坏家伙能够攻击服务器和网络基础设施:

另一种宽泛类型的安全性威胁称为拒绝服务攻击(Denial-of-Service (DoS) attack),顾名思义,DoS攻击使得网络、主机或其他基础设施部分不能由合法用户所使用。Web服务器、电子邮件服务器、DNS服务器等都可以作为DoS攻击的目标。一般有如下三种类型:

  • 弱点攻击:这涉及向一台目标主机上运行的易受攻击的应用程序或操作系统发送制作精细的报文,如果适当顺序的多个分组发送给一个易受攻击的应用程序或操作系统,该服务器可能停止运行,或者更糟糕的是主机可能崩溃。
  • 带宽洪泛:攻击者向目标主机发送大量的分组,分组数量之多使得目标的接入链路变得拥塞,使得合法的分组无法到达服务器。
  • 连接洪泛:攻击者在目标主机中创建大量的半开或者全开TCP连接,该主机因为这些伪造的连接而陷入困境,并停止接受合法的连接。

值得一提的是,分布式DoS(Distributed DoS)攻击就是大名鼎鼎的DDoS攻击,攻击者控制多个源并让每个源向目标猛烈发送流量,比起单一主机的DoS,DDoS更加难以检测和防范。

avatar

坏家伙能够嗅探分组:

当无处不在的因特网接入极为便利并使得令人惊奇的新应用程序为移动用户所用的同时,也产生了重大的安全弱点——在无线传输设备的附近放置一台被动的接收机,该接收机就能得到传输的每个分组的副本。记录每个流经的分组副本的被动接收机也被称为分组嗅探器(packet sniffer)。

当然,这也能够部署在有线环境中,这里先略过。

因为分组嗅探器是被动的,也就是说它们不向信道中注入分组,所以难以检测它们的存在,因此,我们向无线信道发送分组的时候,必须接受这样的可能性

坏家伙能够伪装成你信任的人:

这个大家还是挺熟悉的,后面再介绍更加细节的内容。

这里就介绍一个概念:

将具有虚假源地址的分组注入因特网的能力被称为IP哄骗 (IP spoofing);


8. 计算机网络的历史

avatar

具体内容待补充,敬请期待!

“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。”


Unit 1.5 待整理的网络知识

一、什么是域名系统?

域名系统DNS是您可以通过在浏览器中键入github.com而不是难以记住的数字地址,如216.148.41.12来访问网页的原因。

域名系统由位于加利福尼亚州的非营利组织ICANN 管理。ICANN成立于1998年。它被美国商务部授予对DNS的权力,尽管它越来越多地声称自己独立于美国政府。

有两种类型的域名。第一个是通用顶级域 (gTLD),例如 .com、.edu、.org 和 .gov。由于互联网起源于美国,因此这些域名往往在那里最受欢迎。这些域的权限通常委托给私人组织。

还有国家代码顶级域 (ccTLD)。世界上每个国家都有自己的 2 个字母代码。例如,美国的 ccTLD 是 .us,英国的 ccTLD 是 .uk,中国的 ccTLD 是 .cn。这些域名由每个国家/地区的当局管理。一些 ccTLD,如 .tv(代表岛国图瓦卢)和 .io(英属印度洋领地),在本国以外的地方很受欢迎。

avatar


二、浏览器的工作原理简述

0. 概述Overview:

Web性能的两个主要问题:

  1. 延迟有关的问题
  2. 与大多数情况下浏览器是单线程的事实有关的问题

延迟是影响我们确保快速加载页面的能力的最大威胁。

对于流畅的交互,开发人员的目标是确保高性能的网站交互,从平滑滚动到响应触摸。渲染时间是关键,要确保主线程能够完成我们投入的所有工作,并且仍然始终可用于处理用户交互。通过了解浏览器的单线程性质并在可能和适当的情况下最小化主线程的职责,可以提高 Web 性能,以确保呈现流畅和对交互的即时响应。

avatar


1. 导航Navigation:

导航是加载网页的第一步;

每当用户通过在地址栏中输入 URL、单击链接、提交表单以及其他操作来请求页面时,就是导航。

Web 性能的目标之一是最大程度地减少完成导航所需的时间

域名解析查找DNS Lookup:

那么怎么进行导航呢?

  1. 浏览器缓存:首先检查浏览器的DNS缓存,看看是否有缓存的域名解析结果。
  2. 系统缓存:如果浏览器缓存没有结果,系统将检查操作系统的DNS缓存。
  3. 路由器缓存:如果系统缓存没有结果,路由器也会检查其DNS缓存。
  4. 本地DNS服务器:如果路由器缓存没有结果,系统将询问本地DNS服务器,看看它是否已经缓存了域名解析结果。
  5. 根DNS服务器:如果本地DNS服务器没有结果,它将询问根DNS服务器,试图获得域名的解析。
  6. 授权DNS服务器:根DNS服务器会向授权DNS服务器查询,以获取更详细的域名解析信息。
  7. 权威DNS服务器:最后,授权DNS服务器将询问权威DNS服务器,以确定该域名的IP地址。
  8. 缓存结果:找到的结果将被缓存,以便在将来不必再次查询。

avatar

TCP三次握手:

一旦知道 IP 地址,浏览器就会通过 TCP 三向握手建立与服务器的连接。

TCP的三向握手技术通常被称为“SYN-SYN-ACK”(或更准确地说是SYN,SYN-ACK,ACK)。

TCP三次握手是一种网络协议中的握手过程,主要用于确保客户端与服务器之间的可靠通信。步骤如下:

  1. 客户端发送一个SYN(Synchronize)请求报文到服务器,请求建立一个连接。
  2. 服务器收到SYN请求后,回应一个SYN-ACK(Synchronize-Acknowledge)报文,表示同意建立连接。
  3. 客户端收到SYN-ACK报文后,再发送一个ACK(Acknowledge)报文,确认连接建立完成。

完成三次握手后,客户端与服务器间的连接就建立成功。这样可以确保两端在建立连接前,已经确认了对方的可用性,避免了网络中的垃圾数据或攻击行为。

TLS协商:

对于通过HTTPS建立的安全连接,需要再次“握手”。

这种握手,或者更确切地说是TLS协商,确定将使用哪种密码来加密通信,验证服务器,并在开始实际数据传输之前建立安全连接。这需要在实际发送内容请求之前再往返服务器三次。

虽然使连接安全会增加页面加载时间,但安全连接值得延迟费用,因为浏览器和 Web 服务器之间传输的数据无法被第三方解密。

TLS协商的过程一般包括以下步骤:

  1. 客户端发送"Client Hello"报文给服务器,其中包含了客户端支持的加密协议、会话ID、随机数等信息。
  2. 服务器收到"Client Hello"报文后,会回复"Server Hello"报文给客户端,其中包含了服务器选择的加密协议、会话ID、随机数等信息。
  3. 客户端和服务器通过协商后确定的加密协议进行密钥交换,以确定本次通信的密钥。
  4. 双方确认协商结果后,通信开始加密传输数据。

TLS协商的过程确保了客户端和服务器之间的通信是安全的,防止了数据在传输过程中的泄露和篡改。

avatar


2. 响应Response:

现在,导航已经结束了,来到了响应的阶段。

一旦我们与 Web 服务器建立了连接,浏览器就会代表用户发送初始 HTTP-GET 请求

对于网站来说,该请求通常是 HTML 文件。一旦服务器收到请求,它将回复相关的响应标头和HTML的内容。

例如:

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="UTF-8" />
    <title>My simple page</title>
    <link rel="stylesheet" href="styles.css" />
    <script src="myscript.js"></script>
  </head>
  <body>
    <h1 class="heading">My Page</h1>
    <p>A paragraph with a <a href="https://example.com/about">link</a></p>
    <div>
      <img src="myimage.jpg" alt="image description" />
    </div>
    <script src="anotherscript.js"></script>
  </body>
</html>

HTTP请求方法:

  • GET 该方法请求指定资源的表示形式。使用的请求应仅检索数据。
  • HEAD 该方法请求与请求相同的响应,但没有响应正文。
  • POST 该方法将实体提交到指定的资源,这通常会导致服务器的状态更改或副作用。
  • PUT 该方法将目标资源的所有当前表示形式替换为请求有效负载。
  • DELETE 该方法删除指定的资源。
  • CONNECT 该方法建立到目标资源标识的服务器的隧道。
  • OPTIONS 该方法描述目标资源的通信选项。
  • TRACE 该方法沿目标资源的路径执行消息环回测试。
  • PATCH 该方法对资源应用部分修改。

TCP慢启动 / 14KB规则:

TCP 慢启动有助于提高网络能力的传输速度

TCP 慢启动是一种算法,用于检测数据包传输的可用带宽,并平衡网络连接的速度

它可以防止出现最初功能未知的网络拥塞,并缓慢增加扩散的信息量,直到找到网络的最大容量。

第一个响应数据包将为 14KB。这是TCP慢启动的一部分,这是一种平衡网络连接速度的算法。

慢启动会逐渐增加传输的数据量,直到确定网络的最大带宽

在TCP慢启动中,在收到初始数据包后,服务器将下一个数据包的大小加倍至28KB左右。后续数据包的大小会增加,直到达到预定阈值或遇到拥塞

大概可以理解为逐步试探的倍增过程。

拥塞控制:

服务器TCP 数据包的形式发送数据时,用户的客户端通过返回确认或 ACK 来确认传递。

连接的容量有限,具体取决于硬件和网络条件。如果服务器发送太多数据包太快,它们将被丢弃

服务器将其注册为缺少的 ACK。拥塞控制算法使用已发送数据包和 ACK 的此流来确定发送速率。


解析Parsing:

一旦浏览器收到第一个数据块,它就可以开始解析收到的信息。

解析意味着分析程序并将其转换为运行时环境可以实际运行的内部格式,例如浏览器中的 JavaScript 引擎。

解析是浏览器将它通过网络接收的数据转换为 DOMCSSOM 的步骤,渲染器使用它来将页面绘制到屏幕上。

具体来说

浏览器将 HTML 解析为 DOM 树。HTML 解析涉及标记化和树构造。HTML 标记包括开始和结束标记,以及属性名称和值。如果文档格式正确,则解析它既简单又快速。解析器将标记化的输入解析到文档中,从而构建文档树。

当 HTML 解析器找到非阻塞资源(如图像)时,浏览器将请求这些资源并继续解析。遇到 CSS 文件时,解析可以继续,但标记(尤其是那些没有异步或属性的标记)会阻止呈现,并暂停 HTML 解析。<script>defer

当浏览器遇到 CSS 样式时,它会将文本解析为 CSS 对象模型(或 CSSOM),这是一种数据结构,然后用于样式布局和绘画。然后,浏览器从这两种结构创建一个呈现树,以便能够将内容绘制到屏幕上。JavaScript 也会被下载、解析,然后执行。

构建DOM树:

DOM 树描述文档的内容。 元素是文档树的第一个标记和根节点。

树反映了不同标签之间的关系和层次结构。嵌套在其他标签中的标签是子节点。

DOM 节点的数量越多,构建 DOM 树所需的时间就越长。

avatar

预加载扫描仪Preload Scanner:

当浏览器构建 DOM 树时,此过程占用主线程。

发生这种情况时,预加载扫描程序将解析可用内容并请求高优先级资源,如 CSS、JavaScript 和 Web 字体。

多亏了预加载扫描程序,我们不必等到解析器找到对外部资源的引用来请求它。

它将在后台检索资源,以便在主 HTML 解析器到达请求的资产时,它们可能已经在运行中,或者已被下载。预加载扫查器提供的优化可减少阻塞。

例如:

<link rel="stylesheet" href="styles.css" />
<script src="myscript.js" async></script>
<img src="myimage.jpg" alt="image description" />
<script src="anotherscript.js" async></script>

在此示例中,当主线程解析 HTML 和 CSS 时,预加载扫描程序将找到脚本和图像,并开始下载它们。若要确保脚本不会阻止进程,请添加属性,或者如果 JavaScript 解析和执行顺序很重要,请添加属性。

构建CSSOM树:

关键呈现路径中的第二步是处理 CSS 并构建 CSSOM 树。

CSS 对象模型类似于 DOM。DOM 和 CSSOM 都是树。它们是独立的数据结构。

浏览器将 CSS 规则转换为它可以理解和使用的样式映射。浏览器遍历 CSS 中的每个规则集,根据 CSS 选择器创建具有父、子和同级关系的节点树。

avatar

除此之外,还有一些内容例如JavaScript编译和构建辅助功能树等等,这里不展开叙述。


3. 渲染Render

接下来是渲染部分,以下是四个比较重要的内容:

Style

关键渲染路径中的第三步是将 DOM 和 CSSOM 组合到渲染树中。计算样式树或渲染树的构造从 DOM 树的根开始,遍历每个可见节点。

Layout

关键渲染路径中的第四步是在渲染树上运行布局,以计算每个节点的几何体。布局是确定呈现树中所有节点的宽度、高度和位置的过程,也是确定页面上每个对象的大小和位置的过程。重排是页面任何部分或整个文档的任何后续大小和位置确定。

Paint

关键渲染路径的最后一步是将各个节点绘制到屏幕上,第一次出现称为第一次有意义的绘制。在绘画或光栅化阶段,浏览器将布局阶段计算的每个框转换为屏幕上的实际像素。绘画涉及将元素的每个视觉部分绘制到屏幕上,包括文本、颜色、边框、阴影以及按钮和图像等替换元素。浏览器需要非常快速地完成此操作。

Compositing

一旦主线程完成页面绘制,你会认为我们会“一切就绪”。事实未必如此。如果加载包含 JavaScript,该 JavaScript 已正确延迟,并且仅在 onload 事件触发后执行,则主线程可能繁忙,并且不可用于滚动、触摸和其他交互。

到这一步,浏览器的工作基本上就算是完成了。


三、Hosting

0. 概述Overview:

Hosting是指将网站存储在服务器上,以便全球用户通过互联网访问该网站的服务。它包括:

  1. 服务器租赁:为网站提供存储空间和带宽
  2. 网络架构:确保网站可以连接到互联网
  3. 技术支持:协助解决网站运行问题
  4. 网站维护:保证服务器性能和安全性

有多种不同的Hosting服务,如共享Hosting,虚拟专用服务器(VPS)和独立专用服务器(Dedicated Server)。

根据网站的需求,个人或企业可以选择合适的Hosting服务。

1. Hosting细节:

  1. 备份:一些Hosting提供商提供定期备份功能,以确保数据安全
  2. 安全:保护网站免受黑客攻击,提供SSL证书等安全功能是一项重要的任务
  3. 可扩展性:随着网站的发展,需要更多的存储空间和带宽,因此要选择可扩展的Hosting服务
  4. 性能:网站速度和可用性对用户体验有很大影响,因此要选择高性能的Hosting服务
  5. 技术支持:良好的技术支持是网站运行的重要保证,选择提供全天候技术支持的Hosting提供商是一个好选择。