科普文:计算机系列【计算机网络四万字系统整理】作者|杨欣锐
(1)首先我们要简单了解计网发展历史以及一些基本概念如因特网、网络服务提供者等的含义。因特网Internet:全球范围内的计算机网络的集合,它连接了数以亿计的设备,包括个人计算机、服务器、路由器、交换机、智能手机等,使它们可以相互通信和交换数据。网络服务提供者ISP(Internet Service Provider):通过物理方式(如光纤、DSL、电缆等)将用户设备连接到互联网,并提供连接用户到
寒假为了恶补一下网络相关知识,在B站把湖科大的计算机网络视频花了三天看完了一遍并同步整理了笔记(文末附有获取笔记方式),整体知识过一遍后的感觉就是内容真的太太太太太太多太细了……所以想着趁学习记忆还不久远还没逝完,就把知识重点整理归纳了一下,方便之后用到再学习时不会感到太庞杂太乱。后续有空会不断更新完善滴~
后来笔者参加了华为 ICT 网络赛道,临时抱佛脚复盘又补充了不少内容,相信对你有帮助!
一、计算机网络概述
1、基础概念
(1)首先我们要简单了解计网发展历史以及一些基本概念如因特网、网络服务提供者等的含义。

因特网Internet:全球范围内的计算机网络的集合,它连接了数以亿计的设备,包括个人计算机、服务器、路由器、交换机、智能手机等,使它们可以相互通信和交换数据。
网络服务提供者ISP(Internet Service Provider):通过物理方式(如光纤、DSL、电缆等)将用户设备连接到互联网,并提供连接用户到互联网的一系列服务的公司或组织。这些服务可能包括互联网接入、网络托管、域名注册、虚拟主机、云存储等。ISP 通常在特定地区或全球范围内提供服务,国内则主要是移动、电信和联通。

(2)因特网的标准化工作的一大特点是面向公众,其相关标准化技术文档 RFC(Request For Comments)可以在 http://www.ietf.org/rfc.html 上免费下载阅读,任何人都可以随时发电子邮件对某个文档发表建议。

(3)因特网由边缘部分与核心部分组成。边缘部分由所有连接在因特网上的主机组成,用户直接使用,用于通信(传送数据、音频或视频)和资源共享;核心部分由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(连通与交换等)。路由器是实现分组交换的关键构件。

(4)常见基本术语前瞻
结点Node:网络中的结点可以是计算机,集线器,交换机或路由器等。
链路Link : 从一个结点到另一个结点的一段物理线路,中间没有任何其他交点。
主机Host :连接在因特网上的计算机。
以太网Ethernet:一种局域网技术,用于在局域网中传输数据,定义了数据在物理层和数据链路层的格式和传输规范。它是一种基于共享介质(通常是双绞线或光纤)的通信技术,最常用于连接计算机、打印机、路由器和其他网络设备。
DNS域名系统(Domain Name System):将人类可读的域名 (如http://www.baidu.com) 转换为机器可读的 IP 地址 (例如 220.181.38.148 )。我们可以将其理解为专为互联网设计的电话薄。
网关:网络中的一个设备,在一个局域网中通常是连接到互联网的设备,具有一个内部 IP 地址和一个外部 IP 地址,它接收来自内部网络的数据包,并决定如何将这些数据包转发到外部网络。网关可以是路由器、三层交换机、防火墙或服务器等设备。
2、计算机网络
计算机网络的简单定义:一些互连、自治的计算机的集合。
(1)计算机网络的几种分类:
按覆盖范围可以分广域网WAN(范围大、速率低、延迟高,由多个局域网组成)、局域网LAN(蓝牙、热点、WLAN 等,范围小、速率高、延迟低,局域网间通过广域网进行连接通信)、个域网PAN等。
按使用方可以分公用网(任何符合条件的用户都可以通过订阅服务接入,安全性与质量低)和专用网(只允许授权用户或设备访问,具有较高的安全性和隐私保护但成本高)。
按传输媒介可以分有线网络(典型如光纤入户以太网)和无线网络(典型如 WiFi)。
按拓扑结构可以星型(所有节点与中心节点直接连接,便于集中管理和维护且易于扩展)、总线型(所有节点链接在同一公共传输通道上,适用于小规模局域网)、环型(适合需要稳定传输的场景,可以采用自愈环)、树型(数据传输路径较短且延迟低,适合用户接入网、数据中心和分布式系统)、网状型(各节点可独立运行和管理,通信保障质量高)网络和组合型网络等等。

(2)计算机网络的核心交换技术
交换网络作为数据交换和传输的核心桥梁,其设计和功能对整个交换系统的运行效率和性能具有关键性的影响。
计算机网络的交换技术主要可以分电路交换网络、报文交换网络、分组交换网络。互联网常采用复杂的分组交换,基于统计时分复用方式不用进行连接;而在智能网 IN、公用电话交换网 PSTN、数字数据网 DDN 等业务网中常采用简单的电路交换,基于同步时分复用方式进行物理连接。

此外新兴有快速电路交换 FCS、快速分组交换 FPS 和异步转移方式 ATM 交换。后者 ATM 交换综合电路交换与分组交换的优势,基于统计时分复用面向连接,可构成 ATM 传送网与 B-ISDN 网,具有高效的网络运营效率。
(3)计算机网络的性能指标:速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率和丢包率。

速率是一个理论上的最大值,并不考虑实际传输过程中可能出现的丢包、错误或延迟


吞吐量指的是实际的数据传输速率,即在一定时间内成功传输的数据量





(4)计算机网络体系主要分为三种结构:
法律上的国际标准即OSI参考模型(自底向上七层依次为物理层、数据链路层、网络层、运输层、会话层、表示层还有应用层)。OSI(Open System Interconnect)即开放式系统互联,由 ISO 在1985年研究发展形成。
事实上的国际标准即TCP/IP体系结构(自底向上四层依次是网络接口层、网络层、运输层和应用层)。
适于学习理解的原理体系结构(自底向上五层依次为物理层、数据链路层、网络层、运输层和应用层)。

在原理体系结构中:
物理层解决了传输媒体、接口和设备之间的物理连接问题,在连接各种计算机的传输媒体上传输数据比特流。电路交换网即对应在此层进行物理连接,无需使用协议。
数据链路层解决在直接相连的设备之间进行数据传输时可能出现的错误检测和纠正、流量控制、访问控制等问题。ATM 协议、帧中继网协议和以太网协议就对应这低两层。
网络层解决在不同网络之间进行数据传输时的寻址、路由选择、拥塞控制等问题,确保数据能够在网络中正确地传输。使用 X.25 协议的分组交换网就对应这低三层。
运输层解决在端到端通信中可能出现的问题,实现了可靠的数据传输、流量控制、多路复用与分用、会话连接管理、端到端的错误检测和数据包排序组装。
应用层解决用户与网络应用之间的交互问题,包括数据格式、协议选择、会话管理等,以实现用户友好的网络应用。
(5)现代通信网络的分层结构
业务与终端:关注的是网络的最终用户和应用服务,一般涉及应用服务(包括各种互联网应用,如电子邮件、Web 浏览、文件传输、视频会议等)、用户终端(指连接到网络的各种设备,如个人电脑、智能手机、平板电脑、物联网设备等)与用户体验等。
交换与路由:涉及到网络内部数据的高效传输和路由管理,交换是网络内部的数据交换和转发,通常在局域网(LAN)或数据中心内部发生,交换设备可以是交换机(Switch),用于在局域网中传输数据包;路由是不同网络之间数据包的转发和路径选择,通常在广域网(WAN)中发生。路由器(Router)负责根据目的地址选择最佳路径进行数据传输。
接入与传递:关注网络如何与最终用户连接和数据如何在网络中传递,接入技术如数字用户线(DSL)、光纤到户(FTTH)、有线电视网(CATV)、无线接入(Wi-Fi、4G/5G)等,用于将用户终端连接到网络;传输网络包括各种传输设备和技术,如光纤网络、电缆网络、卫星通信等,用于在网络核心和边缘之间传输数据。
3、网络协议、信令与服务
(1)实体与协议
实体:任何可以发送给或接受信息的硬件或软件进程。对等实体就是收发双方为相同层次中的实体。
协议:控制两个对等实体进行逻辑通信的规则集合。

(2)协议的三要素:
语法:定义所交换信息的格式。
语义:定义收发双方所要完成的操作。
同步:定义收发双方的时序关系。
(3)信令认识
- 网络协议主要负责媒体数据的传输,在 RTC 中网络协议确保能够在网络中高效安全地传输音视频数据。
- 信令协议则负责控制信息和元数据的传输,不传输媒体数据,在通信双方之间建立、管理和终止会话。
信令不仅仅用于控制通信的建立、维护和释放,还负责管理和优化网络资源、实现各种高级功能和服务。信令的传送同样遵循相应的信令协议,且信令按传送他的与用户信息传送通道关系的不同可以分为随路信令CCS和共路信令CAS,如下图所示:

信令按工作区域可以分为连接终端与节点的用户线信令和网络节点之间的局间信令,按功能可以分为线路信令、路由信令和管理信令:
线路信令用于控制通信线路建立、维持和释放过程,主要用于通信链路的管理和控制,确保在通信过程中的各种状态能够正确地传达和处理。常见于传统的电话网络中,如 PSTN,作为固定电话网中用于监视终端设备(如电话机)忙闲状态的信令。它可以指示一个电话线路是否处于空闲、摘机(拿起话筒)、挂机(放回话筒)或其他特定状态。
路由信令用于控制数据包或信息在网络中的路由和传输过程,主要负责确定数据的传输路径和路由选择,确保数据能够从源到达目的地。广泛应用于各种计算机网络中,包括互联网、企业内网和数据中心网络等。
管理信令用于管理和优化网络资源、配置设备以及支持高级服务功能,主要用于网络资源的分配、性能监控和安全管理等方面,如 TCP/IP 网络中,信令常指控制消息或数据包。其在各种通信网络中都有应用,特别是在移动通信、云计算和物联网等新兴技术领域,支持复杂的网络管理和服务。
(4)协议与服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务,即要实现本层协议还需要下面一层所提供的服务。协议水平通信,服务垂直传递,下面的协议对上面的实体是”透明“的。

(5)服务访问点SAP(Service Access Point)指在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同服务类型。
数据链路层的服务访问点是帧类型字段。
网络层的服务访问点是IP数据报首部中的协议字段。
运输层的服务访问点是端口号。
服务原语是上层使用下层所提供的服务必须通过与下层交换的命令。
(6)计网中常以数据包作为数据单元
对等层次之间传送的数据包称为该层的协议数据单元PDU,它们包含了控制信息和用户数据。
同一系统内相邻层之间交换的数据包称为服务数据单元SDU,它是下层协议为上层协议提供服务的接口。
SDU 和 PDU 之间的关系可以是1:1,也可以是N:1或1:N,取决于具体的网络环境和协议设计。

上下层之间进行交互所遵循的约定叫做接口,同一层之间进行交互所遵循的约定叫做协议。
数据从物理层原始的比特流,经过每一层的封装其大小会因为各层头部的添加而增加,到应用层逐渐变成了包含多层头部信息的结构化数据包,以满足各种控制和安全等多样性需求。
4、网络连接设备的发展
(1)两台电脑间互连的开始
早期人们发明了能网络通信的网口(以太网端口),再通过一根网线(以太网电缆)来连接两台电脑,实现了两台电脑间的交互传输。
(2)集线器 Hub
为了连接多个电脑,人们设计出了一款具备多个网口的微型计算机,专门实现多台计算机的互联扩展,这就是集线器。它通过网线直接将所有接收到的数据包复制并广播到连接的所有其他设备的网口上,不具备智能识别数据包的能力。集线器工作在物理层。
(3)交换机 Switch
集线器和每台设备相连,但不能分辨出具体信息是发送给谁的,只能广播出去,容易产生信息冲突错误和网络堵塞等,因此设计了交换机。
它在局域网内学习接收到的数据包 MAC 地址,并将该信息存储在帧交换表中,以便以后可以快速识别目的地址并将数据包定向转发,而不是广播到整个网络,减少了网络数据流量和冲突还提高网络性能和安全性。交换机工作在数据链路层。
(4)无线接入点 Access Point
AP 通过无线信号提供网络接入,支持 Wi-Fi 设备连接局域网,工作在数据链路层。
FAT AP 具备完整的网络功能,负责无线数据的处理和分析,相当于一个独立的无线路由器,采用集中式网络架构,一个主 AP 控制多个从 AP,不需要依赖无线控制器 AC。适用于小型网络、家庭、小型商户或小型办公等不需要复杂的漫游和负载均衡功能的场景。
FIT AP 功能较为精简,负责无线数据的转发和管理,相当于无线交换机或集线器,采用分布式网络架构,多个 AP 之间具有智能通信和自主管理能力,需要配合无线控制器 AC 使用。适用于中大型的无线网络建设等需要覆盖广泛的区域并提供无缝漫游体验的场景。

(5)路由器 Router
对于跨地域跨网络的网络连接,人们设计了路由器用于连接不同的网络或子网,如局域网和广域网,实现不同网络间的通信。它通过查看数据包的目标 IP 地址和路由表,决定将数据包发送到哪个网络接口,并且可以根据网络状况选择最佳路径进行转发。路由器工作在网络层。
(6)NAS(Network Attached Storage)
NAS 是一种连接到网络的文件存储设备,它通过网络浏览器进行配置和管理,利用 RAID 技术直接连接磁盘储存阵列构成一个大型存储空间,多种存储设备且可扩展,允许用户通过网络连接来存取数据,保护数据安全性和完整性。每个 NAS 设备在局域网中作为独立的网络节点存在,具有自己的 IP 地址,可以被网络中的多个用户和设备共享使用和远程协作。
NAS 配置:通过有线电缆或无线网络连接并启动,在 Web 浏览器访问 NAS 的管理界面,通常需要输入 NAS 的 IP 地址,接着配置静态 IP 地址、子网掩码、默认网关和 DNS 服务器等网络参数;根据 NAS 提供的向导完成初始设置,包括语言选择、时间和区域设置、存储池配置等,创建管理员账户、用户账户、分组和共享文件夹并设置权限、备份和同步等功能;接着配置端口转发或使用 DDNS(动态DNS)服务即可从外部网络访问 NAS。
5、现代家庭或办公室网络环境认识
(1)猫(Modem)、路由器(Router)和 WiFi(无线网络)这三样在现代家庭或办公室的网络环境中密切相关,它们协同工作提供互联网接入和无线网络连接,建立起一个完整的家庭或办公室网络环境,保证设备能够稳定、高效地访问互联网。
窄带(Narrowband):相对较低的数据传输速率,通常在每秒几十 Kbps 到几百 Kbps 的范围内,具有低速率、连接时断时续的特点,最典型的应用是传统的拨号上网服务,通过电话线路进行数据传输。
宽带(Broadband):相对较高的数据传输速率,通常以 Mbps 或 Gbps 为单位,可以通过多种技术实现,包括 DSL、光纤、电缆、卫星和移动宽带等,具有高速率、持续连接、多接入方式等特点。目前宽带已经成为 ISP 主流的互联网接入方式,即一种上网业务,ISP 会给我们一个专属的宽带账号和密码获得上网宽带条件,也基于这个账号来向我们用户收费。

(2)猫 Modem
猫是调制解调器 Modem 的简称,它将 ISP 提供的数字信号(如计算机生成的数据)调制成适合在模拟信道(如电话线)上传输的模拟信号,并在接收端将接收到的模拟信号解调回数字信号,是互联网接入的第一步。
在有线网络中,通常负责将电话线、光纤或电缆信号转换为以太网信号。猫的常见类型与连接端口如下:
- DSL Modem:用于DSL(数字用户线路)互联网,通过电话线传输数据。
- Cable Modem:用于有线电视网络的宽带互联网服务。
- Fiber Modem:也称为光猫,用于光电转换,通常通过光纤到户(FTTH)来提供高速互联网,目前最普及。
输入端口:连接到 ISP 提供的线路(电话线、同轴电缆、光纤)。
输出端口:通常是一个以太网端口(RJ-45),用于连接到路由器。
(3)路由器 Router
路由器负责在本地网络(LAN)和广域网络(WAN)之间转发数据包,提供网络地址转换(NAT)、防火墙功能和DHCP服务,为每个设备分配 IP 地址,是局域网的核心设备。一般有以下端口:
- RJ-45端口:这是最常见的以太网端口,用于连接计算机、打印机等设备,根据通信速率的不同,还可以分为 10Base-T、100Base-TX 和 1000Base-T 等类型。
- SC端口:这是光纤端口,用于连接光纤网络,更多出现在企业级或高端路由器上。
- WAN端口:连接到调制解调器的输出端口,以接收互联网信号。
- LAN端口:连接到局域网内的设备(如计算机、交换机)。
- WiFi天线:用于广播无线信号。

有线路由器通过以太网电缆连接到设备;无线路由器通常内置了一个无线接入点 AP 模块用于提供 WiFi 连接,该模块工作在数据链路层。实际上,大多数现代路由器都是无线路由器。
(4)WiFi 无线网络
WiFi 是一种无线联网技术,使用无线电波在局域网内传输数据,允许设备(如智能手机、平板电脑、笔记本电脑)通过无线方式连接到网络。
WiFi 主要工作在 2.4GHz 和 5GHz 频段,称为 ISM(Industrial Scientific Medical)频段,具有 802.11a/b/g/n/ac/ax 等标准,每个标准都有不同的频率和速率特性。网络由无线路由器创建,路由器通过无线电波广播 SSID(服务集标识符),设备通过连接 SSID 加入网络。

2.4GHz 频段:频率范围在 2.400GHz 至 2.4835GHz,工作在 UHF 频段,属于分米波,是最早被广泛采用的Wi-Fi频段之一,有较好的穿透能力和覆盖范围,能够穿过墙壁和其他障碍物传输信号,因此在家庭、办公室和公共场所中常见。
5GHz 频段:频率范围在 5.150 GHz 至 5.825 GHz,工作在 SHF 频段,属于厘米波,是近年来越来越流行的 WiFi 频段,具有更大的带宽,提供更高的数据传输速率,相对干扰较少,可以提供更稳定和可靠的连接,目前覆盖范围较小。
(5)网络工作流程
互联网接入:ISP 通过电话线、有线电视线或光纤提供互联网接入,接着调制解调器连接到 ISP 的线路,将信号转换为以太网信号。
信号传递:调制解调器通过以太网电缆连接到路由器的 WAN 端口,路由器通过 NAT 和 DHCP 服务管理内部网络流量,并保护网络安全。
网络分发:路由器通过 LAN 端口和 WiFi 天线以有线或无线形式将网络信号分发到局域网内的各个设备。有线设备通过以太网电缆连接到路由器的 LAN 端口;无线设备通过 WiFi 连接到路由器,获取网络访问权限。
二、物理层
电脑之间要组网连接,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等物理手段方式,这就是物理层的工作内容:将信息编码成电流脉冲或其它信号,为数据链路层屏蔽了各种传输媒体的差异,使其不必考虑网络具体的传输媒体是什么。
1、主要特性
(1)物理层传输媒介四大特性
- 机械特性:接口接线器的尺寸形状、引脚数目和排列等。
- 电气特性:电气相关参数范围,如电压电平、传输速率等。
- 功能特性:某条线上出现的某个电平的电压表示含义。
- 过程特性:不同功能的各种可能事件出现顺序)。
(2)传输媒体分类
导引型分同轴电缆、双绞线、光纤、电力线;非导引型分无线电波、微波、红外线、可见光。



多模光纤有色散等,只适合近距离传输;单模光纤没有模式色散,适合长距离传输
(3)传输方式
分串行/并行传输、同步/异步传输、单向通信(单工)、双向交错通信(半双工)和双向同时通信(全双工)。

2、编码与调制
(1)码元
数据在物理层上的最基本单位,也是数据的抽象表示,它表示在特定的时间间隔内的信号状态。每个码元可以携带一定量的信息。在数字通信中,一个码元可能对应于 1bit,也可能对应于多个 bit,这取决于所使用的调制方式和编码方式。
(2)调制与解调
在发送端,数据需要转换为模拟信号,以便在通信媒介中传输,这个过程称为调制(Modulation)。基本调制方法如调幅 AM、调频 FM、调相 PM。

在接收端,模拟信号需要转换回数字形式,以便计算机或其他设备进行处理。这个过程称为解调(Demodulation)。
(3)编码:不归零编码 NRZ、归零编码 RZ、曼彻斯特编码、差分曼彻斯特编码的方式。

反向不归零编码 NRZI 在码元时间内不会出现零电平,相邻电平反转表示 0,电平保持不变则表示 1。
数据在物理层被转换成模拟信号并在传输介质中传输,接收端根据相应的解调和解码过程将模拟信号转换成原始的数字数据。大致流程如下图所示:

3、信号分析


数据传输速率(bit/s)=码元传输速率*每个码元可携带的 bit 数量。

无噪声影响用奈氏准则,有信噪比关系用香农公式。在信道带宽一定时,要想提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比。各种新的信号处理和调制方法不断出现,其目的都是尽可能接近香农公式给出的传输速率极限。
三、数据链路层
单纯的电信号 0 和 1 没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?这就是数据链路层的工作内容:它在物理层之上确定了 0 和 1 的分组方式。早期各家公司都有自己的电信号分组方式,后来逐渐采用以太网(Ethernet)协议,它规定一组电信号构成一个数据包,叫做帧(Frame)。
1、核心概念
(1)数据链路 Data Link
数据链路层位于物理层之上,负责直接相连的节点之间的数据传输,通过物理网络链路(如以太网、WiFi 等)连接相邻的网络设备,并规定了0和1的分包形式,确定了网络数据包的形式。

(2)帧Frame
帧是数据链路层传输和处理数据的基本单位,每一帧分成两个部分:标头(Head)和数据(Data),标头包含数据包的一些说明项,比如发送者、接受者、数据类型等等;数据则是数据包的具体内容。
标头的长度为 18字节(目的MAC地址)+ 18 字节(源MAC地址)+ 2 字节(类型或长度字段)= 38 字节;数据字段的长度为最短为 28 字节,最长为 1480 字节。
因此,整个帧最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成多个帧进行发送。

(3)MAC 地址(Media Access Control)
以太网规定,所有联网设备都必须具有“网卡 NIC”接口,用来定义网络设备的位置。数据帧必须是从一块网卡传送到另一块网卡。前面提到帧的标头包含了数据帧的发送地址和接收地址,就是 MAC 地址,通常用户主机会包含两个网络适配器:有线网卡和无线网卡,每个网卡都有全球唯一的MAC地址。


MAC 地址由 48 位二进制数组成,通常表示为 12 个十六进制数,前 6 个十六进制数是厂商编号,后 6 个是该厂商的网卡流水号。Windows 系统标准 MAC 表示:XX-XX-XX-XX-XX-XX,如 E0-AD-47-20-09-FF;其他 MAC 表示方法:XX:XX:XX:XX:XX:XX 或 XXXX.XXXX.XXXX 等。
(4)交换机的工作原理
在数据链路层工作的交换机的自学习是指交换机通过观察网络中传输的数据帧,并从中学习设备的 MAC 地址和端口的映射关系进行帧交换的过程,大致如下:
学习源地址: 当交换机接收到一个帧时,它会查看帧的源MAC地址,并将其与接收到该帧的接口相关联。
更新转发表: 交换机会将源MAC地址和接收到该帧的接口号的映射关系动态添加到自己的转发表中,表中每条记录都存在自己的有效时间,到期自动删除,即 MAC 地址与交换机接口对应关系非永久。
目标地址查找: 当交换机接收到一个帧时,它还会查看帧的目标MAC地址,并在转发表中查找与目标MAC地址相关联的接口信息。
帧转发分为以下三类:
- 明确转发(Direct Forwarding):交换机在转发表中找到了目标MAC地址与某个端口的映射关系时,它会直接将帧转发到该指定端口,高效省流。
- 盲目/洪泛转发(Blind Forwarding/Flooding):若没有找到目标 MAC 地址的映射关系,它将执行盲目/洪泛转发,将帧发送到除了接收端口以外的所有其他端口。
- 明确丢弃(Explicit Drop):当帧的目的 MAC 地址是广播地址(FF:FF:FF:FF:FF:FF)或者帧是环路(即源 MAC 与目的 MAC 相同)时,交换机会识别这些情况并将帧丢弃,防止不必要的网络拥塞和环路。
(5)STP 详解
生成树协议 STP(Spanning Tree Protocol)主要目标是在增加冗余链路来提高网络可靠性的同时确保网络拓扑中不存在环路,以避免数据包在网络中无限循环,造成网络拥塞和数据包丢失。
STP 协议中的桥优先级(Bridge Priority)取值范围是 0 到 61440,如果需要手动设置桥优先级,那么它必须是 4096 的整数倍,这样可以确保在不同厂商的设备之间保持一致性。桥优先级越低,成为根桥的可能性越大。
BPDU(Bridge Protocol Data Unit)是 STP 正常工作的核心,作为协议报文直接封装在以太网数据帧中用于构建和维护 STP,目的 MAC 是组播 MAC 地址 01-80-C2-00-00-00;BPDU 分为以下两种:
- 配置BPDU(Configuration BPDU):用来进行生成树计算和维护生成树拓扑的报文。
- TCN BPDU(Topology Change Notification BPDU):拓扑变化通知 BPDU,是在网络拓扑发生变化时,用来通知相关设备的报文。
配置 BPDU 主要由以下部分组成:
- 根桥ID(Root Bridge ID):发送此配置 BPDU 的交换机所认为的根交换机的标识。
- 发送者到根桥的开销(Root Path Cost):从发送此配置 BPDU 的交换机到达根交换机的最短路径总开销,含交换机根端口的开销,不含发送此配置 BPDU 的端口的开销。
- 发送者桥ID(Bridge ID):发送此配置 BPDU 的交换机的 STP 交换机标识。
- 发送者桥端口ID(Port ID):发送此配置 BPDU 的交换机端口的 STP 端口标识。
在 STP 的初始化过程中,每台交换机都会产生并发送配置 BPDU;到 STP 树形成后的稳定期,只有根桥才会周期性地发送配置 BPDU,非根桥会从自己的根端口收到配置 BPDU,并更新自己的配置 BPDU,再从指定端口发送出去。
在 RSTP 中边缘端口是指直接连接到终端设备(如主机、打印机等)的端口,这些终端设备不会发送 STP/RSTP BPDU 报文,因此边缘端口通常不参与生成树协议的计算,可以快速进入转发状态,从而减少网络收敛时间。如果边缘端口接收到 BPDU 报文,它将失去边缘端口的属性,转变为普通的 STP 端口。
(6)RSTP
快速生成树协议 RSTP 通过选择性地阻塞网络中的冗余链路来消除二层环路,并具备链路备份的功能。它简化 STP 的端口状态为三个状态:
- 丢弃Discarding:端口不转发任何数据,只接收 BPDU 用于初始状态或环路保护。
- 学习状态Learning:端口开始学习 MAC 地址,但不转发数据。
- 转发状态Forwarding:端口可以正常转发数据。
RSTP 定义了四种端口角色:根端口 Root Port、指定端口 Designated Port、替代端口 Alternate Port、备份端口 Backup Port。
2、数据链路层解决的三个基本问题
(1)封装成帧:数据链路层将网络层传递的数据单元添加帧头和帧尾使之成为帧。每个数据帧包含了控制信息、数据部分和校验序列,用于确保数据的完整性和可靠性。帧头和帧尾的作用之一就是帧定界。

以太网的数据链路层封装好 MAC 帧后将其交付给物理层,物理层会在MAC帧前面添加8字节的前导码,再将比特流转换成电信号发送,其前7个字节为前同步码(使接收方时钟同步),后1字节为帧开始定界符。


为了提高帧的传输效率,应当使帧的数据部分尽可能长一些。考虑差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传输单元MTU(Maximum Transfer Unit)。
(2)差错检测:用差错检测码来检测数据在传输过程中是否产生了比特差错,常见的错误检测技术包括循环冗余检验CRC(Cyclic Redundancy Check)和奇偶校验。如果检测到错误,数据链路层可以请求重新传输或进行错误纠正。


检错码只能检测出帧在传输过程中是否出现差错,但不能定位错误,因此以上两种无法纠正错误。可以使用冗余信息更多的纠错码进行前向纠错,但开销大,计网中较少使用。
(3)透明传输:指数据链路层对上层交付的传输数据没有任何限制,确保数据的完整性得到保证,不会发生数据的修改、失真或丢失。

转义字符是一种特殊的控制字符,长度为1个字节,十进制为27。
3、数据链路层的可靠传输
不可靠传输:丢弃有误码的帧,其余什么都不操作。
可靠传输:想办法实现发送端发送什么,接收端就收到什么,各层均可实现该传输。

数据链路层可靠传输的三种实现方式分别为停止-等待协议 SW、回退N帧协议 GBN、选择重传协议 SR。
(1)停止-等待协议(Stop-and-Wait)是一种简单的协议,发送方每次只发送一个数据包,并等待接收方的确认 ACK 后再发送下一个数据包。如果在发送方收到 ACK 之前,数据包丢失或者超时,发送方将重新发送该数据包。


(2)回退N帧协议(Go-Back-N)允许发送方一次发送多个数据包,形成一个窗口。只要至少有一个数据包被成功接收,接收方就会发送 ACK。如果在任何时候发现一个错误,发送方将重新发送窗口中的所有数据包。

回退 N 帧协议在流水线传输的基础上利用发送窗口来限制发送方联系发送数据分组的数量是连续ARQ协议。工作过程中发送和接收窗口不断向前滑动的协议又称为窗口协议。
当通信线路质量不好时 GBN 协议的信道利用率并不比 SW 协议高。
(3)选择重传协议(Selective Request)也允许发送方一次发送多个数据包,只重传那些丢失或错误的数据包,而不是整个窗口的数据包。

4、使用点对点信道的数据链路层
(1)PPP 协议(Point-to-Point Protocol)
点对点信道是一种直接连接两个网络实体的信道方式,它不涉及任何中间节点,最常用的点对点数据链路层协议是 PPP,能够将网络层的数据封装成帧,并确保数据的透明传输,提供差错检测机制;适用于不同类型的物理媒介,如串行链路、光纤链路等;还支持身份验证和数据压缩。
(2)PPP 协议由以下三个主要组成部分构成:
- 封装成帧的方法:PPP 定义了如何将网络层的数据封装成帧,包括帧的起始和结束标志、地址和控制字段、协议字段以及信息字段。
- 链路控制协议(LCP):LCP 负责建立、配置和测试数据链路连接,包括协商通信参数和检测链路质量。
- 网络控制协议(NCP):NCP 负责建立、配置和测试网络层协议,如 IP 协议,包括协商网络层地址和其他网络层特定的参数。
(3)PPP 协议的工作状态包括以下几个阶段:
- 链路建立阶段:在这个阶段,通信双方通过 LCP 协商通信参数,如最大传送单元、差错检测机制等。
- 网络层协议建立阶段:一旦链路建立成功,通信双方通过 NCP 协商网络层协议的参数,如 IP 地址。
- 网络层协议运行阶段:在这个阶段,通信双方通过已经建立的网络层协议进行数据传输。
- 链路终止阶段:当通信结束或链路故障时,通信双方通过 LCP 终止链路连接。
(4)PPPoE(点对点协议过以太网)
PPPoE 是一种将 PPP 封装在 Ethernet 框架中的网络隧道协议,使得 ISP 可以通过 ADSL、电路调制解调器、以太网等宽带接入技术以太网接口的形式为用户提供接入服务。

发现阶段:设备为用户分配接入的 Session ID,用来标识一条用户与设备之间的 PPPoE 虚拟链路。

会话阶段:执行标准的 PPP 过程,包括 LCP 协商、CHAP/PAP 认证、NCP协商等阶段。

终结阶段:用户下线,客户端或服务器通过向对方发送一个 PADT 报文用于断开连接。

5、使用广播信道的数据链路层
使用广播信道的数据链路层通常属于多点协议情况,多个节点通过共享同一个广播信道进行通信。这种广播信道可以是有线的(如以太网)或者是无线的(如 Wi-Fi)。在多点协议中,数据链路层需要实现一些机制来管理多个节点之间的通信,包括媒体访问控制(MAC)和地址识别等。
(1)静态划分信道
复用(Multiplexing):通过一条物理线路传输多路用户的信号。可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

频分复用FDM:所有用户同时占用不同频带资源并行通信,对应频分多址 FDMA。

时分复用TDM:所有用户在不同的时间占用同样的频带宽度,对应时分多址 TDMA。

波分复用WDM:将不同波长的光信号复用到同一根光纤中进行传输,对应波分多址 WDMA。

码分复用CDM:通过为每个用户分配独特的码序列来区分不同用户的信号通信,对应码分多址 CDMA。每一个 bit 时间再划分为m个短间隔记为码片 Chip,m 通常取64或128,使用 CDMA 每一个站被指派一个唯一的 m bit 码片序列,若站发送 1 则发送自己 m bit 码片序列,若站发送 0 则发送自己 m bit 码片序列的二进制反码。
码片序列原则:每个站的码片序列必须各不相同且相互正交(内积为0)。
两个不同站 S 和 T 的码片序列满足向量关系 ,,,S∗T≡0,S∗T¯≡0,S∗S≡1,S∗S¯≡−1 。


(2)动态接入控制
总线局域网使用的CSMA/CD协议(Carrier Sense Multiple Access/Collision Detection)

CSMA/CD 协议曾用于各种总线结构以太网和双绞线以太网的早期版本中,现在的以太网基于交换机和全双工连接,不会有碰撞,因此没必要使用 CSMA/CD 协议了。
无线局域网使用的CSMA/CA协议(Carrier Sense Multiple Access/Collision Avoidance)

设备首先侦听信道,判断信道是否空闲,如果信道忙碌,它将继续监听直到信道变为空闲;当设备检测到信道空闲后,它会先等待一个 DIFS 固定时间间隔(默认 50 μs ),如果设备在 DIFS 之后检测到信道忙碌会启动退避机制,等待一个随机退避时间后信道空闲后,发送 RTS 帧请求发数据,待收到 CTS 帧确认后开始正式发送数据;数据发送期间接收设备会发送一个确认帧 ACK 告知发送设备成功接收,若发送设备未收到 ACK,它将认为数据丢失,并尝试重新发送。
四、网络层
互联网是无数子网络共同组成的一个巨型广域网络,链路层以太网协议依靠 MAC 地址发送数据,但如果两台计算机不在同一个子网络,广播是传不过去的,这就是网络层的工作内容:在链路层之上引入网络 IP 地址帮助我们确定计算机所在的子网络,以便 MAC 地址则将数据包送到该子网络中的目标网卡。两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,目前主要是 IPv4,IPv6 格式的 IP 地址。
1、IPv4详解
网络层通过 IPv4,IPv6 格式的 IP 地址来找到对应的主机,进而实现数据包在整个网络中的路由和转发,以便数据能够从源节点传输到目标节点,跨越不同的网络进行传输。我们先认识几个 IPv4 术语名词:
- 网络地址是指分配给一个网络的 IP 地址,用于标识特定的网络段,其主机部分全 0。
- 广播地址是用于向特定网络段上的所有设备发送数据包的地址,其主机部分全 1。
- 多播地址用于向一组特定的主机发送数据包,而不是单个主机或整个网络,范围 224.0.0.0~239.255.255.255。
- 环回地址:分配给环回接口不可路由的私有 IP 地址 127.0.0.1,与 localhost 等价互用。

本地软件环回测试指的是使用环回接口进行的测试,环回接口 Loopback Interface 是一个虚拟网络接口,它允许软件在不通过网络的情况下发送和接收数据包,其状态永远是up,可以配置 IP 地址,不能封装任何链路层协议。
通过环回测试,可以检查本机的网络协议栈是否安装和配置正确,如能够成功 ping 通 127.0.0.1 通常意味着 IP 协议安装没有问题;可以用来测试系统功能,确保系统能够正确处理发送和接收的数据;有助于确保网络安全,因为它可以检测和避免网络中的环路问题,这些问题可能导致网络瘫痪。
(1)IPv4(Internet Protocol version4)地址
互联网上的每一台计算机,都会分配到一个 IP 地址,其为 32bit 即4字节的 int 型标识符,确保数据能够准确无误地从源地址传送到目的地址。0.0.0.0 是最小的 IP 地址,255.255.255.255 是最大的 IP 地址。

IPv4 的发展经历了分类编址、划分子网、无分类编址这些阶段,下面依次递进分析。
(2)分类编址的 IPv4 地址
IP 地址由两大部分组成:网络号部分和主机号部分,通常把一个网络号所定义的网络范围称为一个网段,网络号区分网段,主机号区分具体设备。

只有 A、B、C 类地址可以分配给网络中的主机或路由器的各接口,且主机号为“全0”的地址是网络地址,为“全1”的地址是广播地址,都不能分配给主机或路由器的各接口。
网络地址 0.0.0.0 只能作为源地址使用,表示“在本网络上的主机”,封装有 DHCP Discovery 报文的 IP 分组源地址使用 0.0.0.0;
广播地址 255.255.255.255 只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。
(3)子网掩码的 IPv4 地址
子网是指在一个较大的网络中划分出的较小的网络,从而更灵活有效地管理网络资源,并限制广播流量的传播范围。子网划分通常通过子网掩码来实现和控制范围。
32bit 的子网掩码用于帮助路由器和主机识别区分 IPv4 中的网络部分和主机部分,用连续的 bit1 来对应网络号,用连续的 bit0 来对应主机号。IPv4 地址与其对应的子网掩码进行逻辑与运算就可以得到该 IPv4 的网络地址部分。如下示例:
IPv4地址: 11000000.10101000.00000001.01100100 (192.168.1.100)
子网掩码: 11111111.11111111.11111111.00000000 (255.255.255.0)
-----------------------------------------------
网络地址: 11000000.10101000.00000001.00000000 (192.168.1.0)
网络号为前 24 位 192.168.1,而主机号是 100,意味着 192.168.1.0 到 192.168.1.255 之间的地址都属于同一个子网,其中 192.168.1.0 用于网络地址(子网的标识),192.168.1.255 用于广播地址(子网内广播),故该子网可分配 IP 地址为 254 个。
定长的子网掩码FLSM:使用同一个子网掩码来划分子网,子网划分方式不灵活,每个子网所分配的 IP 地址数量相同,容易造成 IP 地址浪费。
变长的子网掩码VLSM:使用不同的子网掩码来划分子网,子网划分方式灵活(可以按需分配),每个子网所分配的 IP 地址数量可以不一样,尽可能减少对 IP 地址的浪费。

(4)无分类编址 CIDR(Classless Inter-Domain Routing)
CIDR 允许使用任意长度的子网掩码,提供更灵活高效的 IP 地址管理。
CIDR记法:在 IPv4 地址后面加斜线“/”,其后跟子网掩码位数。如 128.14.35.7/20,表示子网掩码有 20 位为 1,即网络号为前 20 位,主机号为后 12 位。
CIDR 可以将网络前缀都相同的连续的 IP 地址组成一个“CIDR 地址块”,我们只要知道 CIDR 地址块中任何一个地址就可以知道该地址块的最小最大地址、地址数量、聚合某类网络的数量、子网掩码。

CIDR 地址块详解
路由聚合:CIDR 允许将多个网络汇总为一个更大的前缀,如网络 192.168.0.0/24 到 192.168.3.0/24 可用一个汇总前缀 192.168.0.0/22 表示,减少路由表的大小,且网络前缀越长,地址块越小,路由越具体。
最长前缀匹配:路由器查表转发分组时发现有多条路由可选,会选择网络前缀最长的那条。
(5)IPv4 私有地址
IPv4 私有地址是专门为局域网内设计的,在互联网上不被路由不能通信,范围定义如下:
- Class A: 10.0.0.0 到 10.255.255.255(子网掩码 /8)
- Class B: 172.16.0.0 到 172.31.255.255(子网掩码 /12)
- Class C: 192.168.0.0 到 192.168.255.255(子网掩码 /16)
这些地址无需向全球互联网注册机构申请,在整个互联网上不是唯一的,可以在不同网络中重复使用,主要用于本地网络,如家庭、学校和办公室的局域网。大多数 Wi-Fi 路由器都被配置为从一个私有 IP 地址范围(通常是192.168.0.0/16)分配地址。
(6)获取 IP 地址
Linux 终端输入命令 ifconfig;Windows 终端输入命令 ipconfig 可以查看本机 IP 等地址信息。
静态分配 IP 地址:也称为手工分配,网络管理员在计算机中直接设置所使用的 IP 地址。在 Windows 系统中,用户可以在“Internet 协议版本 4(TCP/IPv4)属性”对话框中手动配置静态地址
动态分配 IP 地址:计算机向 DHCP 服务器申请 IP 地址,获取后即可使用,但每次获取的 IP 地址都可能变化。如果 DHCP 服务器不在线或出现故障等情况时,客户机就无法获取地址,这时有些系统将会通过零配置技术为自己分配一个私有的地址,范围为 169.254.0.0~169.254.255.255。
2、ARP地址解析协议
提到 ARP 协议就得再简单理清一下 MAC 和 IP 地址的关系~
(1)当多个主机连接同一个广播信道时,要想实现两个主机之间的通信,每个主机都必须由一个唯一的标识即数据链路层地址。在每个主机发送的帧中必须包含标识发送主机和接收主机的地址,用于媒体接入控制(Media Access Control),因此称为 MAC 地址。

(2)IP 地址是 TCP/IP 体系结构网络层所使用的地址,也是因特网上的主机和路由器所使用的地址,用于标识两部分信息:网络号和主机号。

数据包的转发过程中,源 IP 地址和目的 IP 地址始终保持不变;但在经过每个网络设备(如交换机、路由器)时,数据包标记的源 MAC 地址和目的 MAC 地址逐段链路改变。
(3)ARP 协议属于网络层,作用是通过已知设备分配的 IP 地址获取该设备的MAC地址。工作原理:
- ARP请求:当主机 A 需要向主机 B 发送数据,但不知道主机 B 的 MAC 地址时,它会在本地网络中广播一个 ARP 请求,请求中包含主机 B 的 IP 地址。
- ARP响应:主机 B 接收到 ARP 请求后,会发送一个 ARP 响应单播给主机 A,响应中包含自己的 MAC 地址。
- ARP缓存:主机 A 会将主机 B 的 IP 地址和 MAC 地址的映射关系存储在 ARP 缓存中,以便后续通信使用,减少 ARP 请求的需要。
ARP 协议只能在同一个子网络中使用,不能跨网络使用,因为 ARP 请求和响应是通过广播和单播在局域网中发送的。如果两台主机不在同一个子网络,它们就无法直接进行 ARP 通信,只能把数据包传送到两个子网络连接处的网关(gateway)处理。

通过ARP广播获取的MAC地址属于动态缓存;自己手动缓存MAC地址属于静态缓存
3、路由简析
(1)路由相关概念
路由是网络设备之间传输数据的过程,通过选择最佳路径,使数据包能够有效地在不同的网络之间传输,确保数据能够到达目标设备。通常由专用的设备(称为路由器)来完成。
路由器工作在网络层,负责处理和转发数据包的目的 IP 地址并连接不同的网络,如局域网 LAN 和广域网 WAN,根据路由表决定将数据包转发到哪条路径。路由器还能提供更高级的安全功能,例如防火墙、虚拟专用网络 VPN 和入侵检测系统 IDS 等。
路由表是路由器的核心组件,它包含不同网络的路径信息(目标网络、下一跳地址、接口等)。
路由协议是一组规则和算法,用于交换路由信息,使路由器能够动态学习和更新路径。
静态路由是由网络管理员手动配置的固定路径,适合简单、较小的网络,路径稳定,但需要手动更新,灵活性差;动态路由是由路由协议自动计算和更新路径,适合大规模、复杂的网络,灵活性高、自动更新,但需要消耗路由器资源。
源设备将数据包发送到连接的路由器,路由器检查数据包的目标IP地址,根据路由表选择一条最佳路径,并将数据包发送到下一跳路由器或目标设备,每个路由器重复这个过程,直到数据包到达目标。
(2)路由表
路由表是路由器中存储网络路由信息的数据结构,可以手动配置也可以通过动态路由协议自动更新,它存储记录了网络的整体路由信息,包括目的网络、下一跳路由器 IP 地址、接口信息、路由来源等详细信息,帮助路由器决定如何将数据包转发到正确的目的地。


本机Linux系统上的路由表信息
默认路由(default):目的地 default(0.0.0.0)、网关 YXR1208、 子网掩码 0.0.0.0(默认路由不需要子网掩码)、标志 UG(活动且使用网关)、接口 eth0(以太网接口)。
本地网络路由(172.27.16.0):目的地 172.27.16.0(本地网络地址)、网关 0.0.0.0(无需)、子网掩码 255.255.240.0、 标志 U(活动)、接口 eth0(以太网接口)。

Windows使用route print命令得到的路由表部分输出
默认路由 0.0.0.0、网关 192.168.2.1、接口 192.168.2.111、跃点数 35;127.0.0.0/8 本地环回地址用于本地通信,不需要通过任何网关;172.27.16.0/20 和 172.30.176.0/20 这些是本地网络的地址范围,数据包在这些网络之间传输不需要通过网关。
(3)转发表
转发表是路由表生成的快速查找表,以目的 IP 地址为索引,记录了针对特定数据包的转发决策,迅速判断数据包应从哪个接口转发出去,通常只包含了目的地址和出接口的信息,其结构应当使查找过程最优化。

路由器默认情况下不会转发广播数据包,这是为了防止广播风暴和不必要的网络流量,它会根据路由表将数据包转发到特定的目标网络。
4、IP数据报的发送转发
(1)主机发送 IP 数据报
判断目的主机是否与自己在同一个网络。若在同一个网络则通过 ARP 协议查询目的主机 MAC 地址后直接交付;若不在同一个网络则通过 ARP 协议查询主机所在网络的默认网关(路由器),将数据报文发送给该默认网关,由其帮忙转发。

(2)路由器转发 IP 数据报
- 检查IP数据报首部是否出错。若出错则直接丢弃该 IP 数据报并通告源主机;若无出错则进行下一步查找。
- 根据IP数据报的目的地址在路由表中查找匹配的条目。若找到则转发给条目中指示的下一跳;若找不到则丢弃该 IP 数据报并通告源主机。
(3)IPv4 数据报的首部格式介绍



首部长度:占 4 bit,该字段取值以 4 字节为单位。最小十进制取值为 5,表示 IP 数据报首部只有20字节固定部分;最大十进制取值为 15,表示 IP 数据报首部包含 20 字节固定部分和最大40字节可变部分。
可选字段:长度从 1 字节到 40 字节不等,用于支持排错、测量及安全等措施。
填充字段:确保首部长度为 4 字节的整数倍,使用全 0 补充。
生存时间TTL:占 8 bit,以跳数为单位,路由器转发 IP 数据报时,该字段值-1,若不为 0 就转发,为 0 就放弃并发送 ICMP 超时消息给发送方。
协议:占8bit,指明 IPv4 数据报的数据部分是何种协议单元。常见协议及相应字段值如下:
| 协议名称 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
|---|---|---|---|---|---|---|
| 协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
首部检验和:占16bit,用来检测首部在传输过程中是否出现差错,比 CRC 检验码简单,但操作耗时。
(4)路由条目
路由条目类型:直连网络、静态路由(人工配置,方式简单开销小,但不能及时适应网络状态的变化,适用于小规模网络)、动态路由(通过路由选择协议自动获取路由信息,复杂且开销大,但能较好适应网络变化,适用于大规模网络)
特殊的静态路由条目:默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0)、特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)、黑洞路由(下一跳为null0)。
静态路由配置可能导致的路由环路错误:配置错误、聚合了不存在的网络、网络故障。

5、ICMP介绍
(1)网际控制报文协议 ICMP(Internet Control Message Protocol)
ICMP 用于在 IP 主机和路由器之间传递控制消息和错误报告,广泛应用于网络管理和故障排除工具中,用来 ping 检测网络连接状态、诊断网络故障等,确保网络通信的稳定性和可靠性。ICMP 报文被封装在 IP 数据报的 Payload 中发送,IP 报文头部 Protocol 值为 1 时表示其载荷是 ICMP 协议。

主机或路由器使用 ICMP 来发送差错报告报文和询问报文,可以有效转发IP数据报并提高交付成功的机会。ICMP 差错报文只会反馈给发送方,而不会给本地主机发送错误报文,且 ICMP 本身是无连接的协议,差错报文可能丢失。
(2)ICMP 差错报告报文类型
终点不可达(Destination Unreachable):

类型为3,终点目标分为网络、主机、协议和端口
源点抑制:

时间超过(Time Exceeded):

参数问题:

重定向(Redirect):

以下情况不发送 ICMP 差错报告报文:
对 ICMP 差错报告报文自身、对第一个分配的数据报片的所有后续数据报片、对具有多播地址的数据报、对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报。
(3)ICMP 询问报文类型
- 回送请求和回答(Echo Request/Reply):用来测试目的站是否可达并了解其有关状态。
- 时间戳请求和回答(Timestamp Request/Reply):用来进行时钟同步和测量时间,但在现代网络中,时间同步更多地依赖于 NTP。
(4)PING 分组网间探测(Packet Inter-Net Groper)
PING 是一种网络诊断工具,用来测试主机或路由器之间的连通性。它直接使用 ICMP 协议,不依赖于传输层协议(如 TCP 或 UDP)。PING 工作原理:
- 发送 ICMP 回显请求 报文。
- 目标主机收到请求后,返回 ICMP 回显应答 报文。
- 通过测量请求和应答之间的时间差,PING 可以确认目标主机是否可达并显示往返时延。
(5)跟踪路由(Trace-route)
Traceroute 是另一种常用的网络诊断工具,用于测试 IP 数据报从源主机到目的主机之间经过的路由器路径。
- Windows:使用 ICMP 回显请求和回显应答 报文,以及 ICMP 差错报告 报文(如超时和目标不可达)来实现 Traceroute 功能。每次发送的数据报 TTL 值(生存时间)会逐步增加,路由器在 TTL 变为 0 时发送 ICMP 超时报文,从而告知源主机它经过的路由器。
- Unix/Linux:使用 UDP 协议发送数据报(目标端口号通常是一个不常用的端口),然后等待路由器返回的 ICMP 超时报文 或其他差错报告。这种方式的优势在于,它避免了依赖 ICMP 回显请求和回显应答报文。
5、动态路由选择协议
(1)路由选择协议的主要特点:自适应(动态选择路由较好适应网络状态变化)、分布式(路由器之间交换路由信息)、分层次(将整个因特网划分为许多小的自治系统 Autonomous System)。

IGP专注于自治系统内部的路由选择,而EGP则用于不同自治系统之间的路由交换和策略决策
网关(Gateway)又称网间连接器、协议转换器,通常放置在网络边缘,与不同网络相连,它允许不同网络之间的设备进行通信。网关可以是物理设备,如路由器、交换机或防火墙,也可以是软件实体,如协议转换软件。
网关的主要作用是在使用不同通信协议、数据格式或语言的两种系统之间充当翻译器,它对收到的信息进行重新打包,以适应目的系统的需求,并可能提供过滤和安全功能。

(2)路由信息协议 RIP(Routing Information Protocol)
路由信息协议 RIP 是内部网关协议 IGP 中最先得到广泛使用的协议之一,基于距离向量。
RIP 使用跳数(Hop Count)作为度量来衡量到达目的网络的距离,不考虑网络间的开销大小。路由器到直连网络的距离定为1,到非直连网络的距离定义为所经过的路由器数目+1。允许一条路径最大只能包含15个路由器,距离等于16时即表示不可达,且 RIP 每30秒更新一次完整的路由表,收敛速度相对较慢。因此 RIP 只适用于小型互联网。

RIP仅和相邻路由器周期性地交换自己的路由表信息

(3)最短路径协议 OSPF(Open Shortest Path First)
OSPF 基于链路状态(指本路由器都和哪些路由器相邻以及相应链路开销),使用了最短路径算法 SPF 计算路由避免产生路由环路。它设计用于大型复杂网络,收到链路状态改变时立即更新,收敛速度快,但复杂性较高,需要精确的网络设计和配置。

OSPF 有以下五种分组类型:
- 问候(Hello)分组:用来发现和维护邻居路由器的可达性。
- 数据库描述(Database Description)分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 链路状态请求(Link State Request)分组:向邻居路由器请求发送某些链路状态项目的详细信息。
- 链路状态更新(Link State Update)分组:路由器将其链路状态进行洪泛发送。
- 链路状态确认(Link State Acknowledgment)分组:对链路状态更新分组的确认。


使用 OSPF 的每个路由器都会产生LSA链路状态通告(Link State Advertisement):含有直连网络的链路状态信息、含邻居路由器的链路状态信息、被封装在 LSU 链路状态更新分组中(采用洪泛法发送)。

把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个 AS,这就减少了整个网络的通信量。
OSPF 认证分为两种类型:区域认证(Area-wide Authentication)和接口认证(Interface Authentication),都对本接口接收的所有报文认证,确保其报文的完整性和来源的合法性,防止了路由信息的泄露和篡改,增强了网络的安全性。
- 区域认证区域内的所有路由器必须使用相同的认证模式和密码,如果不一致,则无法建立 OSPF 邻居关系。
- 接口认证:在接口视图下配置,允许在相邻路由器之间设置不同的认证模式和密码,其优先级高于区域认证,即如果接口认证不通过就无法建立 OSPF 邻居关系。
(4)边界网关协议 BGP(Border Gateway Protocol)
BGP 是一个路径向量协议,主要用于不同自治系统 AS 之间的路由选择与信息交换。BGP 路由选择过程:
- 邻接建立:BGP 路由器首先建立邻接关系,称为 BGP 邻接会话(Peer),建立会话后,路由器开始交换路由信息。
- 路由交换:通过 BGP,路由器将自己的路由信息与其他 BGP 邻接路由器共享。每个路由信息包括目标网络和经过的自治系统路径(AS Path)。
- 路由选择:BGP 使用一系列的规则来选择最佳路径,最常见的标准有 AS 路径长度、路由优先级、最短路由、下一跳地址。
- 路由更新:当网络状态发生变化(如链路断开、网络增加)时,BGP 会进行路由更新,通知其他路由器新的路由信息。
BGP 使用 TCP 连接端口 179,分为内外两种:
- eBGP 用于不同 AS 之间的路由更新和交换。
- iBGP 用于同一 AS 内部的路由更新和交换,保证其所有路由器看到相同的路由信息。
BGP-4 有以下四种报文:
- OPEN报文:用来与相邻的另一个 BGP 发言人建立关系,使通信初始化。
- UPDATE报文:用来通告某一路由的信息,并列出要撤销的多条路由。
- KEEPALIVE报文:用来周期性证实邻站的连通性。
- NOTIFICATION报文:用来发送检测到的差错。
7、VPN与NAT介绍
(1)虚拟专用网 VPN(Virtual Private Network)
虚拟专用网 VPN 是一种通过公共网络(通常是互联网)建立安全连接的技术,用于实现远程用户或分支机构与企业私有网络或其他安全网络之间的安全通信。主要分为远程访问 VPN(用于连接个人设备与公司或组织内部网络,允许远程用户安全地访问公司资源,例如文件、应用程序等)和站点到站点 VPN(用于连接不同地理位置的公司或组织内部网络,例如总部和分支机构之间的连接),工作原理如下所示:
- 隧道建立:用户设备(如笔记本电脑、智能手机)上的 VPN 客户端与 VPN 服务器之间建立加密连接,称为 VPN 隧道。
- 加密:VPN 客户端和服务器之间的通信通过加密算法进行加密,确保数据在传输过程中不会被窃取或篡改。
- 数据封装:在隧道中,原始数据包的外层会添加 VPN 协议头部信息进行再封装。
- 目标网络访问:一旦数据包到达 VPN 服务器,服务器会将其解封装,并将其路由到目标网络上,就好像用户直接连接到了目标网络一样。

(2)VPN 的优点与应用在于:
- 安全性提升:VPN 通过加密和认证技术保护数据的安全性,防止数据被窃取或篡改。
- 隐私保护:用户可以通过 VPN 隐藏自己的真实 IP 地址,增强在线隐私保护。
- 跨地理访问:允许用户或机构在全球范围内访问安全资源,无需担心地理位置的限制(但注意法律与隐私问题)。
- 远程办公:允许远程员工安全地访问公司内部资源,提高工作效率(高效的帕鲁)。
- 跨地理办公室连接:允许不同地理位置的办公室之间建立安全的网络连接,实现资源共享和协作。
(3)网络地址转换 NAT(Network Address Translation)
网络地址转换 NAT 是一种将私有网络中的多个主机共享一或多个公共IP地址的过程。它主要用于 IPv4 网络中,以缓解 IPv4 地址枯竭问题和增强网络安全性。工作过程如下所示:
地址转换:当内部主机尝试访问外部网络时,NAT 设备会将内部主机的私有 IP 地址和端口号转换成公共 IP 地址和端口号,以保证数据包能够正确在公共互联网上传输。分为一对一映射的静态 NAT 和动态分配 IP 地址的动态 NAT。
端口转换: 为了支持多个内部主机共享一个公共 IP 地址,NAT 设备通常会使用端口转换技术 PAT,通过修改数据包的源端口和目的端口来区分不同的内部连接。

(4)NAT 的优点与缺点在于:
- 地址重用和节约:允许多个内部主机通过共享一个公共 IP 地址访问互联网,节约了公共 IP 地址的使用,减少了对公共 IP 地址的需求,简化了网络配置和管理。
- 增强网络安全性:隐藏内部网络的真实结构,对外界隐藏了内部私有地址,增加了网络安全性。
- 引入网络复杂性:NAT 技术本身需要管理映射表和处理转换逻辑,增加了网络设备的负担和复杂性。
- 影响某些应用程序:一些应用程序可能使用 IP 地址信息进行直接通信,经过 NAT 转换后可能会导致通信失败或性能下降。
8、IPv6认识
(1)IPv6(Internet Protocol version 6)
IPv6 地址长度为 128 位(16 字节),可用 IPv6 地址有 2128 个,空间巨大,所有设备都能获得一个全球唯一的 IP 地址,避免了地址短缺问题,因而不需要 NAT 来复用 IP 地址。
IPv6 默认支持 IPSec 协议,提供端到端的加密和认证,增强了网络安全性;使用简化的路由协议和更大的地址空间,避免了 NAT,使得路由表大小显著减少,提升了路由效率;支持 CIDR 来简化地址分配和路由聚合,降低路由器负载;引入了单播、组播和任播地址,单播地址用于单一设备通信,组播用于一对多通信,任播用于与最近的设备通信,但没有广播功能。
(2)IPv6 地址书写规范
IPv6 地址采用十六进制格式,每组 16 位分为 8 组,每组用冒号 : 分隔,大小写不敏感,如 2001:0db8:0000:0000:0008:0800:200c:417a。IPv6 地址较长,使用缩写规范可以简化表示,以下是 IPv6 地址缩写的主要规则:
每组 16 位数中可以去掉前导零,但不能去掉整个组,如上例简化为 2001:db8:0:0:8:800:200c:417a。
如果地址中有连续的零组 0:0,可以用双冒号 :: 替代一次,即进一步简化为 2001:db8::8:800:200c:417a。
(3)IPv6 数据报格式
IPv6 数据包头为固定的 40 字节且无选项字段(在扩展头部),比 IPv4 简洁,减少了处理时间,提高了传输效率。IPv6 的头部字段包括:

- 版本(Version):协议版本号,IPv6 为 6。
- 流量分类(Traffic Class):用于标识数据包的优先级。
- 流标签(Flow Label):为特定流的数据包打标签,便于区分 QoS 需求。
- 有效载荷长度(Payload Length):数据包载荷(包括扩展头部)的长度。
- 下一个头(Next Header):指示下一个扩展头部的类型或上层协议类型。
- 跳限制(Hop Limit):类似 IPv4 的 TTL 字段,限制数据包的生存时间。
(4)IPv6 地址自动配置(适合移动设备和 IoT 设备)
- 无状态地址自动配置 SLAAC(Stateless Address Autoconfiguration)基于 ICMPv6 协议,无需 DHCPv6 服务器,设备通过链路本地地址与路由器通信,自动生成全球单播地址。
- 有状态地址配置 DHCPv6:使用 DHCPv6 服务器分配 IPv6 地址及其他网络信息。

(5)IPv6 地址分类
单播地址(Unicast Address):用于唯一标识网络中的单个接口,通信仅发生在一个源和一个目的地之间,前 64 位用于网络前缀,后 64 位用于接口标识。分为
- 全局单播地址 GLA,全球范围内唯一可识别的公共地址,前缀为 2000::/3。
- 链路本地地址 LLA,用于同一链路网段设备通信但不能跨路由,前缀为 FE80::/10。
- 本地唯一地址 ULA,局域内唯一但无法在互联网中路由,前缀为 FD00::/7。
组播地址(Multicast Address):用于将数据同时发送给一组接收设备替代广播通信,提高带宽利用率,减少数据冗余传输,以 FF00::/8 为前缀。常见组播地址有
- FF02::1:链路本地范围的所有节点地址。
- FF02::2:链路本地范围的所有路由器地址。
- FF02::/16:链路本地范围的组播地址。
- FF08::/16:组织范围的组播地址。
- FF0E::/16:全球范围的组播地址。
任播地址(Anycast Address):用于将数据发送到一组设备中的任意一个最靠近的设备。主要用于分布式服务,比如 DNS 服务器或内容分发网络 CDN,多个设备可以共享一个任播地址,路由器会将数据包发送到距离最近的设备,从而优化响应时间和负载均衡。
(6)IPv6+
IPv6+ 是在基础 IPv6 协议上发展出来的增强型网络架构,结合了 IPv6 和多种新兴技术,提供更智能、高效、安全的网络服务。
引入多种增强功能,如 SRv6(Segment Routing over IPv6) 分段路由技术等协议,实现灵活、高效的路径控制。
通过网络切片,IPv6+ 能够在同一物理网络中虚拟化出多个逻辑网络,每个切片可以为不同类型的业务(如视频流、IoT 数据、VR/AR)提供定制化服务。
使用意图驱动的管理模式,简化网络运维,管理员可以通过输入高层意图(如“保证视频流畅”)来配置网络,而不需具体定义每个路由策略。
五、运输层
有了 MAC 地址和 IP 地址,我们可以在互联网上任意两台主机上建立通信,但一台电脑有许多程序都需要用到网络,比如一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来自己电脑,怎么知道它是发到网页的内容,还是发到在线聊天的内容?这就是运输层的工作内容:用端口标记这个数据包到底供哪个程序(进程)使用,实现程序之间的隔绝通信。
1、基本概念
(1)进程与端口认识
实际在计算机网络中进行通信的实体是位于通信两端主机中的进程。通信端口的作用是定位到主机上的某一个进程,通过这个端口进程就可以接受到对应的网络数据了。一个端口只能给某一个进程使用,多个进程不能同时使用同一个端口,且如果这个进程不需要网络通信,那么这个进程就不需要绑定端口。
运输层协议又称为端到端协议,为运行在不同主机上的应用进程提供端到端直接通信服务。

运行在计算机上的进程使用进程标识符PID来唯一标志,为了使运行在不同操作系统(使用PID格式不同)的计算机的应用端口进程之间能够进行网络通信,我们使用端口号来区分应用层的不同应用进程。
(2)端口号
运输层的端口号 Port 是 16bit 的 unsigned short 型数值,取值范围为 0~65535,只具有本地意义,标识本计算机应用层的各进程,不同计算机中相同端口号没有任何联系。
- 熟知端口号0~1023,如 FTP 使用 20/21,HTTP 使用 80,DNS 使用 53。
- 登记端口号1024~49151,使用需要在 IANA 按照规定手续登记,以防重复。
- 短暂端口号49152~65535,留给客户进程选择暂时使用,通信结束后这个端口号可以供其他客户进程以后使用。
(3)复用与分用
复用(Multiplexing):在发送端,复用层接受来自多个应用程序的数据,并根据目标端口号将它们合并成一个数据流发送到网络上。这样,多个应用程序的数据可以共享同一个传输层连接。
分用(Demultiplexing):在接收端,分用层接收传输层的数据流,并根据目标端口号将数据分解成多个应用程序的数据流。这样,每个应用程序可以接收到自己的数据,并且能够识别和处理它们。

2、TCP与UDP协议介绍
为了标记进程实现程序之间的隔绝通信我们必须在数据包中加入端口信息,这就需要新的协议:TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)
(1)UDP 与 TCP 的主要特点分析对比
连接:TCP 是面向连接的传输层协议,传输数据前先要建立连接;UDP 不需要连接,格式简单几乎就是在数据包前面加上端口号作为 Head,知道对端的 IP 和端口号就直接进行传输。
服务对象:TCP 是一对一的服务,一条连接只有两个端点;UDP支持支持一对一,一对多,多对一,多对多交互通信。
可靠性:TCP 是提供可靠交付数据的,会精准记录各数据传输状态,并有控制速度和选择重传机制,确保可以无差错,不丢失,不重复,按序到达,但过程复杂消耗较多资源;UDP 可靠性较差,但传输简单快捷。
传输方式:TCP 是流式传输,将一个个 IP 包变成了字节流,没有数据边界,保证顺序和可靠;UDP 的数据传输是基于数据报的一个包一个包发送,有边界可能会丢包或乱序。
应用场景:TCP 常用于 FTP 文件传输、HTTP/HTTPS 等;UDP 常用于直播、视频会议、广播通信等。
(2)TCP 与 UDP 的共同之处
无边界的传输:都不保证数据按照特定的消息边界进行传输。
拥塞控制和流量控制:都可以支持拥塞控制和流量控制机制,以适应网络条件和接收方的处理能力,只是在实现上有所不同。
错误检测:都提供了一定程度的错误检测功能,TCP 使用更复杂的校验和,而 UDP 使用较为简单的校验和。
支持广播和多播:都可以支持广播和多播传输,允许同时向多个目的地发送数据。
不关心网络层的细节:都抽象了网络层的细节,使得应用程序可以不关心底层网络的具体实施。
(3)TCP 协议段格式详解

源/目的端口号:表示数据是从哪个进程来, 到哪个进程去。
32位的序列号:占4个字节,TCP 是面向字节流的,所以在每一个 TCP 连接中传送的字节流的每一个字节都是按顺序编号,整个要传送的字节流的起始序号必须在建立时设置,通过 SYN 包传给接收方,主要解决网络包乱序(去重)的问题(接收方更加关心)。
32位的确认应答号:占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号,比如说:A 给 B 发送了一个 6 7 8,B 返回的应该是 7 8 9,如果 A 只收到了一个9,那就说明9之前的所有数据 B 都已经正确收到,主要解决不丢包的问题(发送方更关心)。
4位首部长度(也有叫数据偏移):表示该 TCP 头部有多少个32位bit(有多少个4字节);所以 TCP 头部最大长度是15 * 4 = 60。
6位保留:保留为今后使用,目前应置为0。
URG(紧急URGent):当 URG = 1时,表示当前报文段中存在优先处理的数据,也叫带外数据 OOB(out of band),不要按原来的排队顺序发送,会把数据紧急插入到本报文段的最前面,这时就和后面的的16位紧急指针配合使用,可以理解为一种数据的插队机制。
ACK(确认ACKnowledegment):仅当 ACK = 1时,确认号字段才有效,ACK = 0时,确认号无效。
PSH(推送Push):提示接收端应用程序立刻从 TCP 缓冲区把数据读走,比如:A 和 B 正在通信,A 端的一个进程希望立刻获得B端的回应,这时 A 端就把 PSH 置为1,立即创建一个报文段发送出去,B 端收到后,尽快交付给上层的进程,不需要等待缓冲区填满再向上交付。
RST(复位Reset):RST = 1时,说明 TCP 连接出现了问题,必须释放连接,然后再重新建立连接,RST 还可以用来拒绝一个非法的报文段或者拒绝打开一个连接,RST 也可以叫做重置位。
SYN(同步SYNchronization):在连接建立时用来同步序号,当 SYN = 1,ACK = 0时,说明这是一个连接请求报文段,如果对方同意,在响应报文段中 SYN = 1,ACK = 1。
FIN(完结Finish):用来释放一个连接,当 FIN = 1时,表示数据发送完毕,并要求断开连接。
16位窗口大小:占 2 字节,窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口),窗口值会告诉对方:从现在开始,我只要多少的数据,是因为接收方的缓冲区大小是有限制的,窗口字段明确指出了现在允许对方发送的数据里量。
16位校验和:占2字节,发送端填充,CRC 校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含 TCP 首部,也包含 TCP 数据部分。
16位紧急指针:占2字节,紧急指针只有在 URG = 1时才有意义,实际是一段偏移量,指出紧急数据的末尾在报文段的位置。
(4)UDP 协议段格式详解

目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。
包长度:保存了 UDP 的首部长度和数据长度的和。
校验和:校验和是为了提供可靠的 UDP 首部和数据,检测数据报在传输中是否有错,有错就丢弃。
3、TCP流量控制与拥塞控制
TCP 以字节为单位的窗口来实现可靠传输。TCP 全双工通信,通信中每一方都在发送和接收报文段,因此都有自己的发送窗口和接收窗口。同一时刻发送方的发送窗口并不总是和接收方的接收窗口一样大。

(1)TCP 的流量控制(Flow Control)
流量控制指让发送方的发送速率控制在让接收方来得及接收的范围内,确保接收方能够有效地处理来自发送方的数据,防止接收方因为处理能力不足而丢失数据或网络堵塞。
滑动窗口是 TCP 流量控制的核心:
- 在 TCP 连接建立时,接收方会在 TCP 报文段的 ACK 确认中告诉发送方它的 接收窗口大小(Receive Window Size),即它的缓冲区大小。
- 发送方根据接收方的窗口大小控制数据的发送量,确保不会发送超过接收方缓冲区处理能力的数据。
- 接收方会根据缓冲区量动态调整自己的接收窗口大小,通知发送方继续发送数据。
(2)TCP的拥塞控制(Congestion Control)
拥塞指对网络中某一资源(如带宽、交换节点中的缓存和处理机等)需求超过了该资源所能提供的可用部分,影响网络性能变差,整个网络的吞吐量将随输入负电荷的增大而下降。
拥塞窗口是 TCP 拥塞控制的核心。TCP 拥塞控制算法的主要目标是在网络拥塞时,通过调整数据发送的速率来适应网络的实际情况,确保数据高效稳定无误地传输,以维持整体网络的稳定性和可靠性。

判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)
(3)慢开始与拥塞避免
慢开始是 TCP 在连接刚建立时,采用慢启动算法来快速增加发送速率。初始设置拥塞窗口cwnd为一个较小的值,可以根据网络的拥塞程度动态变化,发送方将拥塞窗口作为发送窗口swnd,即 swnd=cwnd,并设置一个慢开始门限ssthresh根据两者大小关系切换到拥塞避免:
- cwnd < ssthresh 时,使用慢开始算法,即每收到一个 ACK,cwnd 加倍,以快速利用可用带宽;
- cwnd ≥ ssthresh 时,改用拥塞避免算法,将拥塞窗口 cwnd 按线性规律增长,即每个 RTT 只增加一个 MSS(最大报文段长度)的发送量。
(4)TCP 超时重传
TCP 的超时重传是指当发送方在发送数据后,未能在合理的确认时间内收到对应的确认 ACK,则会认为该数据丢失或未能正确传输,从而触发重传机制。
TCP 发送方发送数据段到网络,等待接收来自接收方的确认 ACK 并启动定时器;如果定时器超时了发送方也没收到确认,发送方会认为这个数据段丢失了,以慢开始算法来快重传丢失的数据段,其携带与原始数据段相同的序列号,接着进入快恢复。

超时重传时间RTO的设置思考
(5)快重传与快恢复
快重传是指发送方在接收到三个重复确认(指示某个报文段丢失)后,立即重传该报文段,而不必等待超时。
快恢复是在收到三个重复确认执行完快重传后,将 ssthresh 值调整为当前 cwnd 的一半,且 cwnd 设置为 ssthresh + 3 MSS,用于快速从丢包事件中恢复,快恢复结束后接着开始回归执行拥塞避免算法。

4、TCP的运输连接管理
(1)TCP 是面向连接的协议,它基于运输连接来传送 TCP 报文段,运输连接的建立和释放是每一次面向连接的通信必不可少的过程。
TCP 运输连接有三个阶段:三报文握手建立TCP连接、数据传送、四报文挥手释放TCP连接。
(2)三次握手过程简述:

- 客户端发送SYN(同步)报文段:客户端向服务器发送一个带有 SYN 标志的 TCP 报文段,表示客户端请求建立连接,并指定客户端的初始序列号 ISN。
- 服务器回复SYN+ACK报文段:服务器收到客户端的 SYN 报文段后,会回复一个带有 SYN 和 ACK 标志的 TCP 报文段,表示服务器已收到客户端的请求,并同意建立连接。
- 客户端发送ACK报文段:客户端收到服务器的 SYN+ACK 报文段后,会发送一个带有 ACK 标志的 TCP 报文段作为确认,表示客户端已收到服务器的回复,双向连接建立成功。
TCP 标准规定,凡是需要对端确认或携带数据的一定消耗 TCP 报文的序列号,SYN 报文段需要对端确认消耗一个序列号,但通常不携带数据;ACK 报文段不需要对端确认,只有在携带数据时才会消耗序列号。
在 TCP 协议中,接收方每接收到一个数据包,通常会发送一个 ACK 报文段,以确认已接收到的数据,并告知发送方下一个期望接收的数据包的序列号。
(3)四次挥手过程简述:

- 客户端发送FIN报文段:当客户端想要关闭连接时,它会发送一个带有 FIN 标志的 TCP 报文段给服务器,表示客户端不再发送数据,但仍然可以接收数据。
- 服务器回复ACK报文段:服务器收到客户端的 FIN 报文段后,会发送一个带有 ACK 标志的 TCP 报文段作为确认,表示服务器已收到客户端的关闭请求。
- 服务器发送FIN报文段:当服务器也准备关闭连接时,它会发送一个带有 FIN 标志的 TCP 报文段给客户端,表示服务器已完成数据传输并准备关闭连接。
- 客户端回复ACK报文段:客户端收到服务器的 FIN 报文段后,会发送一个带有 ACK 标志的 TCP 报文段作为确认,表示客户端已收到服务器的关闭请求。此时,双向连接均已关闭。
tips:在 TCP 四次挥手中,服务器发送 ACK 报文段和 FIN 报文段不能合成一次,因为第二阶段服务器只是确认了关闭请求,并且仍然可以发送数据给客户端,不然就会导致连接的不完整性和数据的丢失。因此,为了确保通信的可靠性和正确性,TCP 四次挥手中服务器发送 ACK 报文段和 FIN 报文段需要分开发送。
六、应用层
应用程序收到运输层的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读,这就是应用层的工作内容:规定应用程序的数据格式。
1、基本概念
(1)应用层概述
应用层位于计网体系结构最顶部,是设计和建立计算机网络的最终目的、也是计算机网络发展最快的部分。
传输层如 TCP 协议可以为各种各样的程序传递数据,比如 Email、WWW、FTP 等等。那么,必须有不同协议规定电子邮件、网页、FTP 数据的格式,这些应用程序协议就构成了应用层,这是最高的一层,直接面对用户。
(2)网络应用程序在各种端系统上的组织方式和它们之间的关系主要有两种:

(3)URI 认识
当我们打开浏览器,要访问一个网站或者一个 FTP 服务器的时候,一定要输入一串字符串, 比如:ftp://192.168.0.111/,这样我们就可以得到一个 HTML 格式的页面或者一个文件。这个字符串就是个 URI。
统一资源标识符 URI(Uniform Resource Identifier)是一个用于唯一标识某一互联网资源名称的字符串。它可以是 URL(Uniform Resource Locator)或 URN(Uniform Resource Name)。URL 提供了资源的位置信息,而 URN 则提供了资源的名称,不依赖于位置。

URL 是统一资源定位符,用于唯一标识和定位网络上的资源,如 HTML 网页、CSS 文档、图片、视频等。它由协议、域名、后缀等多个部分以点分隔组成,由于后来 URN 没流行起来,导致几乎目前所有的 URI 都是 URL。
用 HTTP 协议访问 Web 服务器如:http://www.example.com/index.html,如果页面需要传递查询参数,URL可能会包含查询字符串,例如 http://www.example.com/search?q=hello+world。
用 FTP 协议下载和上传文件如:ftp://ftp.example.com/public,如果需要使用特定的用户名和密码登录,URL可能会是 ftp://username:http://password@ftp.example.com/public。
2、域名系统DNS(Domain Name System)
DNS 的主要功能是将人类可读的域名转换为计算机可识别的 IP 地址。这个过程称为域名解析,它充当了互联网的“电话簿”。任何需要通过网络名称来定位网络资源的设备或软件都可以被视为 DNS 客户端,其与 DNS 服务器就是请求与响应的关系,共同构成了域名系统(DNS)的核心交互模式。
(1)域名认识
域名是主机在互联网上的字符标识方式,各分量用"."隔开代表不同层级结构,每级域名都由英文字母和数字组成,不超过 63 字符且不区分大小写。
从右往左读取,顶层是根域名(.),下一级是顶级域名,然后是二级域名,依此类推,最左边是主机名,直接与设备或主机相关联,例如 http://www.example.com:
- 顶级域名(TLD):如 .com, .org, .cn 等。
- 二级域名(SLD):通常是组织或网站的名称。
- 主机名:用于指代特定的服务、部分或功能,如 www、mail、ftp 等。
所有的域名构成了一个全球唯一的域名空间,每个域名在该空间中具有唯一性。
(2)TLD(Top Level Domain)
顶级域名 TLD 是域名的最右边部分,表示域名的类别或用途,分为三类:
- 国家顶级域名nTLD(如cn表示中国,us表示美国)。
- 通用顶级域名gTLD(如com表示公司企业,net表示网络服务机构,org表示非营利性组织,edu表示教育机构,int表示国际组织)。
- 反向域arpa(用于反向解析域名,即 IP 地址反向解析为域名)。
(3)二级域名由国家自行决定,我国则将二级域名分为以下两类:
- 类别域名(ac表示科研机构,com表示工商金融等企业,edu表示教育机构,gov表示政府机构,net表示网络服务机构,mil表示军事机构,org表示非营利性机构)。
- 行政区域名(34个,适用于我国各省、自治区和直辖市)。
(4)域名和 IP 地址的映射关系必须保存在域名服务器中,供所有其他应用查询,DNS 使用分布在各地的域名服务器来通过递归查询和迭代查询来处理域名解析请求,主要分为以下类型:
- 根域名服务器:实际上是由分布在世界各地许多计算机构成的服务器集群,是全球DNS系统的最顶层,它们不直接存储特定域名的 DNS 记录,通常返回的是该域名所属顶级域名服务器的IP地址。
- 顶级域名服务器:负责管理特定顶级域名(如 .com、.org 等)下的所有域名记录。
- 权限域名服务器:负责管理特定区域(zone)内的域名,且还知道其下级域名服务器的地址。
- 本地DNS服务器:通常由网络服务提供商(ISP)或企业机构提供,主要负责本地 DNS 缓存的管理和域名解析的处理,它会向以上三个域名服务器发起请求,获取 DNS 信息,并将这些信息缓存到本地以提高 DNS 解析效率。
- 递归DNS服务器:DNS 查询中的第一站,它作为客户端与 DNS 域名服务器的中间人,接收客户端的查询请求,并代表客户端向其他 DNS 服务器进行查询,直到获取到最终的解析结果。
- 缓存DNS服务器:存储最近查询过的 DNS 记录,以加快后续查询速度,减少对外部服务器的查询频率。
(5)域名查询
DNS 报文使用运输层的UDP协议进行封装,端口号为 53。

- 迭代查询(Iterative Query):DNS 客户端向一个 DNS 服务器发送查询请求,如果该服务器没有缓存结果,它会返回一个指向下一个可能知道答案的 DNS 服务器的引用。客户端然后向这个新的服务器发送请求,依此类推,直到找到答案或查询失败。
- 递归查询(Recursive Query):DNS 客户端向一个 DNS 服务器发送查询请求,该服务器负责完成整个查询过程,即使需要向其他 DNS 服务器查询。客户端只需要等待最终结果。
- 分布式架构:DNS 系统是高度分布式的,这意味着没有单一的点存储所有 DNS 记录。这种设计提高了系统的可扩展性、可靠性和抗攻击能力。
(6)DNS 资源记录 RR(Resource Record)
RR 是 DNS 服务器用来存储关于域名的各类信息的数据结构,包含多个字段如 Name、TYPE、CLASS、TTL、RDLENGTH、RDATA,用于定义特定的 DNS 信息。
- A记录(Address Record):类型代码为1,用于将域名指向IPv4地址。
- AAAA记录(IPv6 Address Record):类型代码为28,用于将域名指向IPv6地址。
- CNAME记录(Canonical Name Record):类型代码为5,用于将一个域名作为别名指向另一个域名。
- MX记录(Mail Exchange Record):用于指定接收电子邮件的服务器。
- PTR记录(Pointer Record):用于将IP地址反向解析为域名。
3、应用层常用协议
(1)动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)
DHCP 提供了即插即用连网机制,允许一台计算机加入新网络时可以自动获取IP地址等网络配置信息而不用手工参与,简化网络管理,提高IP地址的利用效率,并减少配置错误。
DHCP 主要使用以下报文:DHCP DISCOVER 发现报文、DHCP OFFER 提供报文、DHCP REQUEST 请求报文、DHCP ACK 确认报文、DHCP NACK 否认报文、DHCP RELEASE 释放报文。

DHCP 报文在运输层使用 UDP 协议封装,服务器监听端口 67,客户端集成在电脑操作系统,监听端口 68,客户在未获取到 IP 地址时使用地址 0.0.0.0;现在每个网络至少有一个 DHCP 中继代理(通常是一台路由器),它配置了 DHCP 服务器的 IP 地址信息,是各网络中计算机与 DHCP 服务器的桥梁。工作过程通常涉及以下几个步骤:
- 发现:当一个 DHCP 客户端首次加入网络或需要配置 IP 地址时,它会广播一个 DHCPDISCOVER 报文,它不包含客户端的 IP 地址,因为客户端尚未配置网络参数。
- 提供:网络中的 DHCP 服务器收到 DHCPDISCOVER 报文后,会在其地址池中选择一个可用的 IP 地址,并向客户端发送一个 DHCPOFFER 报文,包含了服务器提供的 IP 地址及其他配置信息。
- 选择:客户端收到一个或多个 DHCPOFFER 报文后,会选择一个报文并向该服务器发送一个 DHCPREQUEST 报文,以请求分配选定的 IP 地址。
- 确认:DHCP 服务器在收到 DHCPREQUEST 报文后,会向客户端发送一个 DHCPACK 报文,正式确认 IP 地址的分配,并开始计时租约。

(2)文件传送协议 FTP(File Transfer Protocol)
文件传送指将某台计算机中的文件通过网络传送到另一台计算机中,FTP 提供交互式访问,允许指明文件类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,支持两种模式传输:ASCII 模式用于文本文件的传输,会在发送前进行文件内容的字符编码转换;二进制模式用于二进制文件,如图像、音频、视频和可执行文件的传输,它不会修改文件内容,确保文件完整性。
FTP客户与服务器之间要建立以下两个并行的 TCP 连接:
- 控制连接(整个会话期间保持打开,用于传送 FTP 相关控制命令)。
- 数据连接(用于文件传输,在每次文件传输时建立,结束即关闭)。

默认情况下,FTP 控制连接端口号通常为 21;数据连接端口号在主动模式下为 20,在被动模式下由服务器动态分配。
传统的 FTP 在传输过程中不加密数据,这可能导致敏感信息泄露。为了提高安全性,可以使用 FTPS(FTP Secure)或 SFTP(SSH File Transfer Protocol),这两种协议都提供了数据加密功能。
4、电子邮件
(1)电子邮件系统采用C/S方式,有以下三个主要组成构件:
- 用户代理(客户端软件,用户与电子邮件系统的接口)。
- 邮件服务器(发送和接收邮件并维护用户的邮箱)。
- 协议(如邮件发送协议 SMTP 和邮件读取协议 POP3 等)。

(2)简单邮件传送协议 SMTP(Simple Mail Transfer Protocol)

SMTP 协议只能传送ASCII码文本数据,命令和响应都是基于 ASCII 文本的,不能传送可执行文件、多媒体邮件、非英语文字或其他二进制对象。
(3)多用途因特网邮件扩展 MIME(Multipurpose Internet Mail Extension)
MIME 是 SMTP 的扩展,它增加了5个新的邮件首部字段,提供了有关邮件主体的信息;并定义了许多邮件内容的格式,允许将邮件内容封装成多个部分,每个部分可以有不同的媒体类型,如文本、图像、音频、视频等;还定义了许多邮件内容的格式。
(4)电子邮件的信息格式是在 RFC 文档内定义的:
一个电子邮件有信封和内容两部分,内容又由首部和主体两部分构成,电子邮件地址格式通常遵循“收信人邮箱名@邮箱所在主机的域名”,这个域名在整个互联网上必须是唯一的,而用户名在相应的域名下也必须是唯一的。

(5)常见的邮件读取协议有以下两个:
- 邮局协议POP(Post Office Protocol):用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户计算机,不允许用户在邮件服务器上管理自己的邮件。POP3 是其第三版,因特网正式标准。
- 因特网邮件访问协议IMAP(Internet Message Access Protocol):用户在自己计算机上就可以操控邮件服务器中的邮箱。IMAP4 是其第四版,目前是因特网建议标准。
POP3 使用熟知端口号110,IMAP4 使用熟知端口号143,两者都采用基于TCP连接的C/S方式。
(6)基于万维网的电子邮件,即通过浏览器登录邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。功能强大,而不需要将邮件下载到本地进行管理。

5、万维网
(1)万维网 WWW(World Wide Web)
万维网是一种基于互联网的信息系统,通过超链接将全球各地的资源连接在一起,是互联网最为广泛应用的服务之一,采用了分布式、去中心化的架构,通过使用统一资源定位符(URL)、超文本传输协议(HTTP)和超文本标记语言(HTML)等技术,为用户提供了浏览、检索和共享信息的能力。
互联网是一个庞大的全球互连网络,由各种网络设备、通信线路和协议组成,为信息的传输和交换提供了基础设施;而万维网是互联网上的一个应用,通过网络上的超链接连接各种信息资源,使用户能够方便地浏览和访问这些资源。除了万维网,互联网还支持电子邮件、文件传输、即时通讯等其他服务。
(2)万维网的核心组件
URL(Uniform Resource Locator):统一资源定位符,用于唯一标识和定位网络上的资源,如网页、图片、视频等。它由协议、域名、后缀等多个部分以点分隔组成,例如:http://www.example.com/index.html。
超链接(Hyperlink):网页中的一种元素,它允许用户通过点击链接跳转到另一个网页或页面。超链接通常由文本或图片组成,当用户激活(通常是鼠标点击)超链接时,浏览器会导航到链接指向的 URL。
Web浏览器:作为客户端通过 HTTP 协议向服务器发送请求,用于查看和访问万维网上的信息资源。常见的浏览器包括谷歌浏览器、火狐浏览器、Safari、微软 Edge 等。

Web服务器:存储和提供网络上的信息资源的计算机或软件。它通过 TCP 接收和处理来自客户端的 HTTP 请求,并通过 TCP 连接返回相应的 HTML、图片、视频等资源。使用不同浏览器访问同一个网站时,所对应的服务器及内容是相同的。现代 Web 服务器,如 Apache、Nginx 和 IIS 都提供了高度的优化和扩展性,支持多种模块和插件,可以根据需要增加额外的功能,如 SSL/TLS 加密、负载均衡、内容缓存和压缩等。
(3)万维网文档包含以下三个部分:
超文本标记语言HTML(HyperText Markup Language):使用多种标签和属性来定义文本、链接、图像和其他内容元素,如 <p>、<div>、<img> 等分别代表段落、分区、图像等元素,使其具有结构化和可交互性,用来描述网页的基本结构和内容(网页扩展名为 .html 或 .htm)。如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的第一个HTML页面</title>
</head>
<body>
<h1>欢迎来到我的网站!</h1>
<p>这是一个简单的段落。</p>
</body>
</html>
层叠样式表CSS(Cascading Style Sheets):用来美化 HTML 文档外观的语言,通过定义颜色、字体、布局等样式属性,使网页呈现出预期的视觉效果(文件扩展名为 .css)。如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS 示例</title>
<style>
body {
background-color: lightblue;
}
h1 {
color: white;
text-align: center;
}
p {
font-family: verdana;
font-size: 20px;
}
</style>
</head>
<body>
<h1>欢迎来到我的网站!</h1>
<p>这是使用CSS样式化的段落。</p>
</body>
</html>
脚本语言JavaScript:一种用于控制网页行为的脚本语言。它可以实现动态内容更新、用户交互效果以及与服务器的通信等功能(文件扩展名为 .js)。如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 示例</title>
</head>
<body>
<h1 id="greeting">欢迎来到我的网站!</h1>
<script>
document.getElementById("greeting").innerHTML = "你好,访客!";
</script>
</body>
</html>
6、HTTP 超文本传输协议
(1)HTTP(Hyper Text Transfer Protocol)
Web 浏览器和 Web 服务器之间进行数据通信的基础协议,定义了浏览器即万维网用户进程怎样向万维网服务器请求万维网文档,以及万维网服务器怎么把万维网文档传送给浏览器。它是一种无状态的应用层协议,每次请求都是独立的,服务器不会保留之前请求的状态信息。
HTTP 是面向文本的,其报文每一个字段都是 ASCII 码串,长度不定。

HTTP 负责将 HTML 文档及其他资源(如 CSS、JavaScript、图片等)从服务器传输到客户端浏览器。当用户通过浏览器请求一个网页时,浏览器会向服务器发送一个 HTTP 请求,服务器响应这个请求,并通过 HTTP 发送包含 HTML 内容的响应。浏览器接收到 HTML 内容后,会解析这些内容并在屏幕上呈现出来。
(2)HTTP 版本迭代
- HTTP/1.0 采用非持续连接方式,每次请求都需要建立一个 TCP 连接并在响应后关闭,每请求一个文档就有两倍 RTT 开销用于连接建立和数据传输。
- HTTP/1.1 采用持续连接方式,即 TCP 连接保持打开,且在同一个 TCP 连接里面,客户端可以同时发送多个请求,可以使用流水线式工作。
- HTTP/2.0 是二进制协议,头信息和数据体都是二进制,采用完全多路复用即不用按照顺序一一对应,且通过 HPACK 压缩算法来压缩 HTTP 请求和响应的头部信息,从而减少每个请求的数据量。
- HTTP/3.0 :基于 QUIC 协议,使用 UDP 和更有效的连接管理,进一步减少延迟,支持更好的多路复用和加密,提供更强的安全性。
(3)常见主要的 HTTP 方法
- GET:请求指定资源。请求参数在 URL 中传递,常用于获取数据。
- POST:向指定资源提交数据,通常用于表单提交或上传文件。
- PUT:上传新资源或替换现有资源。
- DELETE:删除指定资源。
- HEAD:类似GET请求,但只返回响应头部,不返回具体内容。
- OPTIONS:返回服务器支持的 HTTP 方法。
- PATCH:对指定资源进行部分修改。
(4)HTTP 状态码用于表示服务器对请求的处理结果,常分为以下五类:
- 1xx(信息):请求已接收,继续处理。
- 2xx(成功):200 OK 请求成功;201 Created 请求成功并创建了新的资源。
- 3xx(重定向):301 Moved Permanently 资源永久移动到新位置;302 Found 临时重定向。
- 4xx(客户端错误):400 Bad Request 请求格式错误;401 Unauthorized 未授权需要认证;404 Not Found 资源未找到(这个大家应该最熟悉 doge)。
- 5xx(服务器错误):500 Internal Server Error 服务器内部错误;503 Service Unavailable 服务不可用。
(5)HTTPS 认识
HTTPS(HyperText Transfer Protocol Secure)是 HTTP 的安全版本,在传输层基于 TCP 通过 SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议加密数据传输,确保数据的机密性和完整性。默认使用 443 端口。
- 客户端发起 HTTPS 请求,连接到服务器的 443 端口,要求服务器必须要有一套数字证书;
- 服务器将自己的数字证书发送给客户端(公钥在证书里面,私钥由服务器持有);
- 客户端收到数字证书之后,会验证其合法性。如果验证通过,就会生成一个随机的对称密钥,用证书的公钥加密;
- 客户端将公钥加密后的密钥发送到服务器,服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,这样子传输的数据都是密文啦;
- 服务器将加密后的密文返回客户端,客户端收到后用自己的密钥对其进行对称解密,就能得到服务器返回的数据。
(6)使用 Cookie/Session 记录用户信息

Cookie 是保存在客户端的一小块文本串数据。客户端向服务器发起请求时,服务器会向客户端发送一个 Cookie,客户端就把 Cookie 保存在本地。下次向同一服务器再发起请求时,Cookie 就被携带发送到服务器。服务器可以根据这个 Cookie 判断用户的身份和状态。其优点是减少了服务器存储压力,但 Cookie 有大小限制(通常约4KB)且有一定安全问题。
Session 是保存在服务器的记录服务器和客户端一次会话的过程。服务器为每个会话生成一个唯一的 Session ID,客户端通过 Cookie 或其他方式保存并在后续请求中发送这个 Session ID,服务器根据 Session ID 查找和管理会话数据。其优点是能够存储更多信息且更安全,但在服务器端存储大量 Session 数据可能导致内存压力,因此需要采取适当的管理策略(如会话过期和清理机制)。
7、从浏览器地址栏输入URL到显示主页
(1)DNS 解析
首先,浏览器需要将我们输入的 URL 中的域名(例如:www.example.com)转换成对应的 IP 地址,这是通过 DNS 完成的。

浏览器先检查本地(浏览器和系统)缓存是否已有该域名的 IP 地址解析记录;如果本地缓存都没有,浏览器会自动根据 DNS IP 向配置的 DNS 服务器发送查询请求即 DNS 数据包(53端口);如果本地 DNS 服务器也没有记录,会向根域名服务器发起递归查询,最终响应返回域名对应的 IP 地址给浏览器。
(2)TCP 连接
浏览器获得目标服务器的 IP 地址后,需要与该服务器建立连接即 TCP 三次握手。
客户端发送 SYN 同步包到服务器请求建立连接;服务器回应一个 SYN-ACK 同步-确认包同意建立连接;客户端再发送一个 ACK 确认包就连接建立成功了,可以开始 HTTP 通信。
(3)发送和处理 HTTP 请求
建立连接后,浏览器会向服务器发送一个 HTTP 请求。这个请求包含了请求方法(GET、POST等)、请求 URL、请求头(包含用户代理、cookies 等)以及请求体(如果是 POST 请求)等。
服务器接收到请求后,会根据请求的内容进行处理。对于静态页面,它可能会直接从文件系统读取文件并返回;对于动态页面,它可能会执行后台代码(如 PHP、Python、Node.js 等)生成 HTML 内容。
(4)服务器返回响应
服务器处理完请求后,会返回一个 HTTP 响应。响应包括:
- 状态行:包含状态码(如 200 表示成功,404 表示未找到资源等)和状态描述。
- 响应头:有内容类型(Content-Type)、内容长度(Content-Length)、缓存控制(Cache-Control)等信息。
- 响应体:实际的 HTML 内容、图像、CSS、JavaScript 等资源。
(5)浏览器接收响应
浏览器接收到 HTTP 响应后,开始处理响应内容:
- 解析HTML:浏览器解析 HTML 文档,构建 DOM 树(Document Object Model)。
- 解析CSS:同时,浏览器解析 CSS 文件,生成 CSSOM 树(CSS Object Model)。
- 解析JavaScript:执行内嵌或外部引用的 JavaScript 代码,这可能会进一步修改 DOM 或 CSSOM。
- 加载资源:根据 HTML 中的引用,浏览器会继续请求其他资源,如图像、视频、字体等。
(6)渲染页面
浏览器将 DOM 树和 CSSOM 树结合起来,生成渲染树(Render Tree)。然后进行:
- 布局(Layout):根据渲染树中的信息,计算各个元素在页面中的确切位置和大小。
- 绘制(Painting):将渲染树的各个节点绘制到屏幕上。
访问同一服务器,不同浏览器的渲染引擎不同,可能会导致页面显示和功能细节上有一些差异。
(7)用户交互
页面渲染完成后,用户可以与页面进行交互,如点击按钮、输入文本等。浏览器会处理这些事件,并可能会再次发送请求或更新页面内容。
tips:各浏览器的渲染引擎不同(如 Chrome 的 Blink、Firefox 的 Gecko、Safari 的 WebKit),对 CSS 解析、JavaScript 执行、页面绘制的处理细节有所差异,可能会导致页面显示和功能细节的不同。
8、SSH
(1)SSH(Secure Shell)网络协议
SSH 是一种应用层的网络安全协议,基于 TCP 通过对网络数据加密和认证机制实现安全的远程登录和文件传输等业务,同时压缩数据提高传输效率。
传统远程登录和文件传输方式如 Telnet、FTP 使用明文传输数据,存在很多的安全隐患。目前 SSH 已经被全世界广泛使用,大多数设备都支持 SSH 功能,远程登陆 Linux 主机、git 版本管理使用的都是此协议。
SSH 它是一个协议族,其中有三个子协议,分别是:
- 传输层协议 SSH-TRANS 提供服务器验证、完整性和保密性功能,建立在传统的 TCP/IP 协议之上。
- 验证协议 SSH-USERAUTH 向服务器验证客户端用户,有基于用户名密码和公钥两种验证方式,建立在传输层协议 SSH-TRANS 之上。
- 连接协议 SSH-CONNECT 将加密隧道复用为若干逻辑信道,建立在 SSH-USERAUTH 之上。
(2)SSH 工作原理
SSH 由服务器和客户端组成,通过 SSH Client 我们可以连接到运行了 SSH Server 的远程机器上。为建立安全的 SSH 通道,SSH 的工作流程包括如下几个阶段:
连接建立:SSH 服务器会在默认端口 22 监听连接请求,一旦检测到客户端的 TCP 连接请求,就会接受连接。
版本协商:客户端和服务器协商使用的 SSH 版本,目前广泛使用的版本是 SSH2.0。
密钥交换:通过密钥交换算法(如Diffie-Hellman),客户端和服务器安全地协商出一个共享的会话密钥和会话ID,会话密钥通过算法计算得出,主要用于后续数据传输的加密,会话ID用于在认证过程中标识该 SSH 连接。

用户认证:客户端使用选定的认证方法(如密码、公钥等)向服务器证明其身份。公钥认证是一种常见的方法,它提供了更高的安全性,因为它依赖于非对称密钥对。

公钥认证

密钥认证
会话请求和交互:认证通过后,客户端向服务器发送会话请求,请求服务器提供某种类型的服务,如命令行 Shell 访问。服务器根据客户端请求进行回应,并建立会话进行数据交互。双方发送的数据均使用会话密钥进行加解密。

(3)SSH 和 TLS/SSL 的区别
SSH 是在计算机网络上安全地执行命令和传输文件的应用层协议,在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。
SSL 则是使用 SSL 证书保证两台设备间安全地传输数据,而不是像 SSH 那样可以执行命令。例如,用户通过浏览器访问某安装了 SSL 证书且启用了 HTTPS 的服务器,浏览器和服务器之间可以安全地传输数据。
TLS 用于在计算机网络上保障通信安全的传输层协议,是 SSL 的上位替代品。主要用于在 Web 浏览器和服务器之间、电子邮件系统中等进行安全通信。提供端到端的通信安全,确保数据在传输过程中不被窃听或篡改。
(4)SSH 客户端安装和基本使用
OpenSSH 是 SSH 协议的流行的免费开源实现,提供了服务端程序(openssh-server)和客户端工具(openssh-client)。在大多数 Linux 发行版中,SSH 客户端通常已经预装,可以通过在终端运行以下命令来检查 SSH 是否已安装:
ssh -V

如果 SSH 已安装,该命令将如上显示安装的 SSH 客户端版本
如果未安装,可以使用包管理器安装它,例如在 Ubuntu 上可以使用以下命令安装:
sudo apt update
sudo apt install openssh-client openssh-server
运行并启动 SSH 服务(如让其他设备连接到你的 WSL 环境):
sudo service ssh start
sudo service ssh status // 检查 SSH 服务是否运行
要连接到远程服务器可以使用以下 SSH 命令格式:
ssh [username]@[server address] // 例如ssh Yxr1208@172.23.243.119
首次连接时,系统可能会提示我们接受服务器的公钥。输入 yes 继续。然后,您将被提示输入密码。输入正确的密码后将登录到远程服务器。
要设置免密码登录,我们需要在本地机器上生成一个 SSH 密钥对,并将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。在本地机器上可以使用以下命令生成密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
可以选择不设置密码短语。生成的密钥对默认保存在 ~/.ssh 目录中。然后可以使用 ssh-copy-id 命令将公钥复制到远程服务器:
ssh-copy-id Yxr1208@172.23.243.119
或者手动将公钥内容添加到远程服务器的 ~/.ssh/authorized_keys 文件中,并确保该文件的权限设置正确(chmod 600 ~/.ssh/authorized_keys)。完成这些步骤后就能够无密码登录到远程服务器啦。
(5)使用 SSH 协议进行文件传输
要从本地机器上传文件到远程服务器,可以使用 scp(secure copy)命令:
scp /path/to/local/file Yxr1208@172.23.243.119:/path/to/remote/directory
要从远程服务器下载文件到本地机器,使用:
scp Yxr1208@172.23.243.119:/path/to/remote/file /path/to/local/directory
小结
当涉及到计算机网络原理体系结构的五层分别是做什么的时候,我们可以使用以下简单连贯的实际生活例子来帮助理解,并解释它们之间的递进关系:
- 物理层:想象你要给朋友寄一封信。在物理层,你写下信的内容,并将信放入信封中。这里的信就像数据,而信封就像物理层,负责保护和传输数据(信)的基本单位——比特(0和1)。物理层处理的是数据的物理传输,就像快递员在路上传递信件一样。
- 数据链路层:现在你的信已经装进了信封,你需要将信交给邮递员。在数据链路层,你将信递交给邮递员,他会把信装入邮袋,并添加地址和邮戳。这就相当于数据链路层在数据帧中添加了控制信息,如MAC地址和校验位,以确保数据的可靠传输。
- 网络层:邮递员现在需要确定最佳的路线来递送你的信。在网络层,邮递员会使用地图和邮局系统来确定最佳路由,以便把你的信送到目的地。类似地,网络层负责选择最佳路径来传输数据包,添加IP地址和路由信息。
- 传输层:你的信已经由邮递员送到了朋友的家门口,但是可能出现了一些问题,比如信件不完整或者被弄丢了。你的朋友会接收到信,并确认是否完整和正确,如果出现问题,他会请求你重新寄送。传输层负责端到端的数据传输,提供可靠的数据传输和错误处理,类似于电话系统中的纠错和重传功能。
- 应用层:你的朋友终于收到了你的信,他打开信封并阅读信件。在应用层,他通过阅读信件来与你进行交流,并可能通过写回信来回复你。应用层负责处理特定的应用程序和用户之间的通信,提供用户友好的界面和功能。
这些层次之间形成递进关系,每一层都建立在前一层的基础之上,并为上一层提供服务。物理层提供了比特传输的物理媒介,数据链路层在物理传输的基础上增加了数据帧的控制信息,网络层在数据链路层的基础上添加了路由和寻址功能,传输层在网络层的基础上提供了端到端的数据传输和错误处理,而应用层在传输层的基础上提供了特定应用程序和用户之间的通信功能。每一层都为上一层提供了更高层次的抽象和服务,它们一起构成了计算机网络的体系结构。
……
最后,计算机网络是很庞大的体系下又充满细节的知识板块,个人学习建议是除非专研网络内容,没必要都搞懂弄明白,初学可以先较快地过一遍系统课视频对计算机网络的几个层次体系有个基础认识,知道各层是做什么的有什么用,在脑海中建立一个体系流程的印象,可以重点关注和学习 IP、TCP 和 MAC 还有应用层协议等那些最常见的,之后更多是什么时候用到再专门学习会合适点。仅供参考,希望能帮助你的学习~
更多推荐
所有评论(0)