19 KiB
title | description | keywords | tags | author | date | ||
---|---|---|---|---|---|---|---|
网络基础 | 网络基础 |
|
|
仲平 | 2024-01-04 |
网络概述
互联网是一个由全球各种计算机网络相互连接而成的大型网络,可以让人们在任何时间、任何地点连接并交换信息。它是人类历史上最重要的信息革命之一,对人们的生活、工作和学习都产生了深远的影响。
互联网的发展历史可以追溯到 20 世纪 60 年代初,当时美国国防部研究项目 ARPA(高级研究计划署)为了解决军用计算机之间的信息共享问题,开发了一种名为 ARPANET 的计算机网络。在此基础上,随着互联网技术的不断发展,越来越多的计算机网络加入了互联网,并形成了现在的全球互联网。
- 20 世纪 60 年代:美国国防部高级研究计划局(ARPA)开展研究,设计出了一种分组交换网络的方案,称为 ARPANET。
- 20 世纪 70 年代:ARPANET 逐渐扩展到美国各地的大学和研究机构,并且开始出现了电子邮件和文件传输等应用。
- 20 世纪 80 年代:TCP/IP 协议成为互联网的标准协议,互联网的规模进一步扩大,并且开始商业化运营。
- 20 世纪 90 年代:Web 浏览器的出现,使得互联网的应用变得更加易用和普及,互联网的用户数量开始飞速增长。
- 21 世纪以后:互联网的规模继续扩大,出现了移动互联网、云计算、大数据等新技术,互联网的应用也从简单的信息传递演变成了涵盖生活、工作、学习等方方面面的综合性平台。
互联网实现的关键在于互联网协议族(Internet Protocol Suite),通常称为 TCP/IP 协议。TCP/IP 协议提供了一种标准化的方法来在不同的计算机之间进行通信。它由两个协议组成:
- 传输控制协议(TCP):负责将数据包分解成若干个小数据包,并在接收端重新组装。
- 互联网协议(IP):负责将数据包从一个网络传输到另一个网络。
在互联网中,每个设备都被分配了一个唯一的 IP 地址,用于标识该设备在网络中的位置。当设备发送数据包时,它会将数据包传送到本地网络上的路由器,然后路由器会根据 IP 地址将数据包传送到目标设备所在的网络上的路由器,直到数据包到达目标设备。
网络基础
网络协议
OSI 模型层级 | 功能 | 协议/设备 |
---|---|---|
应用层(Application) | 提供高级服务,例如文件传输、电子邮件和虚拟终端 | HTTP、SMTP、FTP、SSH |
表示层(Presentation) | 将数据转换为网络标准格式 | SSL/TLS、JPEG、ASCII |
会话层(Session) | 管理连接、交换数据 | NetBIOS、RPC、SSH |
传输层(Transport) | 提供端到端的可靠数据传输 | TCP、UDP |
网络层(Network) | 处理分组在网络中的传输与路由 | IP、ICMP、OSPF、BGP |
数据链路层(Data Link) | 处理帧在网络中的传输和检错 | Ethernet、Wi-Fi、HDLC |
物理层(Physical) | 处理比特流在物理媒介中的传输 | RJ45、Fiber、802.11 |
应用层协议
SSH
SSH (Secure Shell) 是一种加密的网络协议,用于在不安全的网络上安全地运行命令行 shell。SSH 通常用于远程登录到远程计算机或服务器,并提供文件传输和加密会话功能。
FTP
FTP (File Transfer Protocol) 是一种标准的文件传输协议,用于在网络上传输文件。FTP 在 TCP/IP 协议中的传输层上运行,支持两种工作模式:主动模式和被动模式。
SMTP
SMTP (Simple Mail Transfer Protocol) 是一种在计算机网络上发送和接收电子邮件的协议。SMTP 定义了电子邮件如何通过网络传输的标准。SMTP 服务器负责接收和发送邮件。
HTTP
HTTP (Hypertext Transfer Protocol) 是一种用于在计算机网络上传输超文本文档的协议。HTTP 是万维网的基础协议,支持 Web 浏览器和 Web 服务器之间的通信。
DNS
DNS (Domain Name System) 是一种将域名映射到 IP 地址的分布式命名系统。DNS 是在互联网上执行名称解析的基本协议,使用户可以使用易于记忆的域名来访问网络资源。
传输层协议
TCP
TCP (Transmission Control Protocol) 是一种面向连接的协议,用于在网络上可靠地传输数据。TCP 保证传输的数据的可靠性,使用三次握手来建立连接,四次握手来终止连接。
UDP
UDP (User Datagram Protocol) 是一种面向无连接的协议,用于在网络上传输数据包。UDP 不保证数据的可靠性,因此常用于传输实时数据,如音频和视频。
网络层协议
IPv4
IPv4 (Internet Protocol version 4) 是一种网络层协议,用于在网络上传输数据。IPv4 定义了 IP 地址的格式和分配方式,并为互联网上的每个设备分配唯一的 IP 地址。
IPv6
IPv6 (Internet Protocol version 6) 是 IPv4 的下一代协议,用于在网络上传输数据。IPv6 地址长度更长,提供更多的地址空间,并支持更多的协议选项,使网络更加灵活和可扩展。
ICMP
ICMP (Internet Control Message Protocol) 是一种在网络上传输控制消息的协议。ICMP 用于发送诊断信息,如 ping 和 traceroute 命令所使用的信息。
数据链路层与物理层协议
Ethernet
Ethernet 是一种常用的局域网技术,其物理层使用双绞线或光纤传输数据,数据链路层采用 CSMA/CD 技术实现多个设备共享网络资源。Ethernet 还定义了 MAC 地址格式、帧格式等标准,是 TCP/IP 协议族的重要组成部分。
Wi-Fi
Wi-Fi 是一种基于无线电波的局域网技术,采用无线信号传输数据,常用于家庭和公共场所的无线网络。Wi-Fi 还定义了各种标准,如 802.11b、802.11g、802.11n 等,以支持不同的无线传输速率和距离要求。
Bluetooth
Bluetooth 是一种短距离无线通信技术,通常用于连接手机、平板电脑、耳机、键盘等设备。Bluetooth 定义了自己的物理层和数据链路层协议,使用频段为 2.4GHz。
路由协议
RIP
RIP(Routing Information Protocol)是一种基于距离向量的内部网关协议(IGP),用于在小型网络中选择最佳路由。RIP 协议采用 Hop Count 作为路径计算标准,当路由表中某个目的地址的距离超过 15 个跳时,该地址将被认为是不可达的。
OSPF
OSPF(Open Shortest Path First)是一种基于链路状态的内部网关协议(IGP),用于在大型网络中选择最佳路由。OSPF 协议将网络划分为多个区域,每个区域拥有自己的链路状态数据库(LSDB),可以实现快速收敛和路由分级。
BGP
BGP(Border Gateway Protocol)是一种外部网关协议(EGP),用于在不同自治系统之间交换路由信息。BGP 协议可以实现路由的动态学习和选择,支持多路径和路由策略等功能。BGP 是互联网核心路由器之间的主要协议。
IS-IS
IS-IS(Intermediate System to Intermediate System)是一种基于链路状态的内部网关协议(IGP),用于在大型网络中选择最佳路由。IS-IS 协议类似于 OSPF 协议,但使用的是双向链路,可以提供更高效的路由选择。IS-IS 协议常用于 ISP 内部网络和数据中心网络。
图例
graph TD;
subgraph 数据传输路径
A2(主机A应用层) -- HTTP请求 --> A3(主机A传输层);
A3 -- TCP连接 --> A4(主机A网络层);
A4 -- IP数据报 --> A5(主机A数据链路层);
A5 -- 以太网帧 --> R1(路由器A数据链路层);
R3(路由器A应用层) -- HTTP请求 --> R4(路由器A传输层);
R4 -- TCP连接 --> R5(路由器A网络层);
R5 -- IP数据报 --> R6(路由器A数据链路层);
R6 -- 以太网帧 --> R1;
R7((路由器 A)) --- R3;
R7 -- 路由 --> R12((路由器 B));
R8(路由器B应用层) -- HTTP响应 --> R9(路由器B传输层);
R9 -- TCP连接 --> R10(路由器B网络层);
R10 -- IP数据报 --> R11(路由器B数据链路层);
R11 -- 以太网帧 --> R2(路由器B数据链路层);
R12 --- R8;
B2(主机B应用层) -- HTTP响应 --> B3(主机B传输层);
B3 -- TCP连接 --> B4(主机B网络层);
B4 -- IP数据报 --> B5(主机B数据链路层);
B5 -- 以太网帧 --> R2;
end
网络设备
网络设备是用于组建计算机网络的硬件。它们用于确保数据在网络中的正确传输,并在不同设备之间建立连接。以下是一些常见的网络设备及其功能:
路由器(Router)
路由器是用于在网络中转发数据包的设备,它根据数据包的目的地和网络的拓扑结构来决定数据包应当沿哪条路径传输。路由器连接多个网络,并在这些网络之间传输数据,从而实现网络互联。此外,路由器还可以执行网络地址转换(NAT)以及其他网络层功能,以确保数据包的安全传输。
交换机(Switch)
交换机用于连接网络中的设备,并在它们之间传输数据。交换机通过存储和转发机制,将数据包发送到目标设备。与集线器相比,交换机具有更高的效率,因为它只将数据包发送到目标设备,而不是广播到所有连接的设备。
无线接入点(Wireless Access Point,WAP)
无线接入点是用于将有线网络扩展到无线网络的设备。WAP 在有线网络与无线网络设备之间建立一个桥接,允许无线设备通过无线信号与有线网络通信。它们通常用于扩展网络覆盖范围,提高无线设备的连接性能。
网络集线器(Hub)
网络集线器是一种基本的网络设备,用于连接多台计算机或其他网络设备。集线器接收来自一个设备的数据包,然后将其广播到所有连接的设备。然而,由于这种广播方式,网络集线器在大型网络中效率较低,容易导致网络拥堵。
网络防火墙(Firewall)
网络防火墙是一种用于保护网络安全的设备,它可以阻止未经授权的访问和数据包的传输。防火墙可以在硬件和软件层面实现,通过检查传入和传出的数据包,确定它们是否符合特定的安全规则。防火墙有助于保护网络中的设备免受恶意软件和攻击的侵害。
VPN 网关(VPN Gateway)
VPN 网关是一种用于实现虚拟专用网络(VPN)的设备。它允许远程用户通过加密的通道访问内部网络资源,从而提高数据安全性。VPN 网关可以实现企业内部资源的安全共享,以及保护远程办公用户的数据安全。
网络拓扑
- 总线拓扑:所有设备都连接到一条公共总线上,每个设备可以发送和接收数据包,总线会将数据包广播给所有设备。
- 星型拓扑:所有设备都连接到一个集线器或交换机,中心设备负责转发和分配数据包。
- 环型拓扑:所有设备连接成一个环形链路,数据包沿着环形链路进行传输,每个设备负责将数据包从一个端口传递到另一个端口。
- 树型拓扑:将多个星型拓扑连接起来,形成一个树状结构,中心节点可以是一个路由器或交换机,每个子节点连接到中心节点。
- 网状拓扑:所有设备之间都可以直接相互连接,没有中心节点,数据包可以通过多条路径进行传输,具有高度的冗余和可靠性。
- 混合拓扑:不同拓扑结构的组合,如星型 - 总线拓扑、星型 - 环型拓扑等。
网络服务
Web 服务
Apache
Apache(Apache HTTP Server)是一个开源的 Web 服务器软件。它由 Apache 软件基金会 维护,起源于 1995 年。Apache 支持多种操作系统,如 Linux、Unix、Windows 等。Apache 使用模块化的架构,可以通过安装和配置不同的模块来扩展其功能。
Apache 适用于各种规模的网站和应用;未来方向将继续优化性能,提高安全性,支持新的 Web 技术和标准。
Nginx
Nginx 是一个轻量级的 Web 服务器、反向代理服务器和电子邮件代理服务器。起源于 2002 年,其设计目标是提供高性能、高并发和低内存占用。Nginx 在处理静态资源、负载均衡和反向代理等方面表现出色。
Nginx 适用于高并发、高流量的网站和应用,以及作为反向代理和负载均衡器。
IIS
IIS(Internet Information Services)是微软推出的 Web 服务器软件,起源于 1995 年。IIS 只支持 Windows 操作系统。IIS 支持 ASP.NET、PHP 等多种语言,并且可以通过模块扩展其功能。
IIS 适用于依赖于 Windows 平台和 Microsoft 技术的网站和应用。
DHCP 服务
ISC DHCP
ISC DHCP(Internet Systems Consortium Dynamic Host Configuration Protocol)是一款开源的、广泛使用的 DHCP 服务器软件,起源于 1999 年。它支持 IPv4 和 IPv6 地址分配,适用于各种规模的网络环境。
ISC DHCP 适用于需要稳定可靠的 DHCP 服务的企业和数据中心。未来将继续优化性能,提高稳定性和安全性,增加新功能。
Dnsmasq
dnsmasq 是一个轻量级的 DHCP 和 DNS 服务软件,起源于 2000 年。它的设计目标是为小型网络提供简单易用的服务。dnsmasq 支持 IPv4 和 IPv6 地址分配,以及 DNS 缓存功能。
dnsmasq 适用于家庭、小型企业和实验室等小型网络环境。未来将继续保持轻量级特点,优化性能,增加新功能。
DNS 服务
BIND
BIND(Berkeley Internet Name Domain)是一款开源的 DNS 服务器软件,起源于 1980 年代。它是目前最广泛使用的 DNS 服务器软件,支持各种操作系统,如 Linux、Unix、Windows 等。
BIND 适用于需要完整功能的 DNS 服务的企业和数据中心。
Unbound
Unbound 是一个开源的、专注于安全和高性能的 DNS 服务器软件,起源于 2004 年。它采用了模块化的设计,支持 DNSSEC 和其他安全相关功能。
Unbound 适用于需要高性能和安全的 DNS 服务的企业和数据中心。
PowerDNS
PowerDNS 是一个开源的、功能强大的 DNS 服务器软件,起源于 2000 年。它支持多种后端数据库,如 MySQL、PostgreSQL、SQLite 等。PowerDNS 提供了灵活的 API,方便进行二次开发和集成。
PowerDNS 适用于需要与数据库集成、自定义开发和高度可配置的 DNS 服务的企业和数据中心。
NTP 服务
Chrony
Chrony 是一个开源的 NTP(Network Time Protocol)服务器和客户端软件,起源于 1997 年。它具有高度可配置的特点,可以在各种网络环境中提供精确的时间同步服务。
Chrony 适用于需要精确时间同步服务的企业、数据中心和科研机构。
NTPd
NTPd(Network Time Protocol daemon)是一款开源的 NTP 服务器和客户端软件,起源于 1985 年。它广泛应用于各种规模的网络环境,支持各种操作系统。
NTPd 适用于各种规模的网络环境,需要可靠的时间同步服务。
VPN 服务
OpenVPN
OpenVPN 是一个开源的 VPN(Virtual Private Network)软件,起源于 2001 年。它基于 SSL/TLS 协议,提供安全稳定的远程访问和站点间连接功能。
OpenVPN 适用于需要安全远程访问和站点间连接的企业和个人用户。
IPSec
IPSec(Internet Protocol Security)是一组用于保护 IP 数据包的协议,起源于 1990 年代。IPSec 提供了认证、完整性和加密功能,广泛应用于 VPN 场景。
IPSec 适用于需要安全通信和网络互联的企业和数据中心。
WireGuard
WireGuard 是一个简单、高性能的 VPN 软件,起源于 2016 年。它使用现代加密技术,具有易于配置和部署的特点。
WireGuard 适用于需要简单易用、高性能 VPN 的企业和个人用户。
负载均衡
HAProxy
HAProxy(High Availability Proxy)是一个开源的、高性能的负载均衡软件,起源于 2000 年。它可以用于分发 TCP 和 HTTP 流量,广泛应用于大型网站和云计算环境。
HAProxy 适用于需要高性能、高可用性负载均衡服务的大型网站和云计算环境。
LVS
LVS(Linux Virtual Server)是一个开源的、基于 Linux 内核的负载均衡软件,起源于 1998 年。它支持 TCP 和 UDP 协议,可以用于分发各种网络服务。
LVS 适用于需要高性能、高可用性负载均衡服务的大型网站和数据中心。
文件共享服务
Samba
Samba 是一个开源的文件共享服务软件,起源于 1992 年。它允许在不同操作系统(如 Linux、Windows 和 macOS)之间共享文件和打印机。
Samba 适用于需要在不同操作系统之间共享文件和打印机的企业和家庭网络环境。
NFS
NFS(Network File System)是一种分布式文件系统协议,起源于 1984 年。它允许在 UNIX/Linux 系统之间共享文件。
NFS 适用于需要在 UNIX/Linux 系统之间共享文件的企业和数据中心。
SFTP
SFTP(SSH File Transfer Protocol)是一种基于 SSH 协议的文件传输协议,起源于 1990 年代。它提供安全的、加密的文件传输服务。
SFTP 适用于需要安全传输文件的企业和个人用户。
邮件服务
Postfix
Postfix 是一个开源的邮件传输代理(MTA),起源于 1997 年。它用于接收、路由和发送电子邮件。
Postfix 适用于需要高性能、可靠的邮件传输服务的企业和数据中心。
Sendmail
Sendmail 是一个经典的邮件传输代理(MTA),起源于 1981 年。它用于接收、路由和发送电子邮件。
Sendmail 适用于需要灵活、可定制的邮件传输服务的企业和数据中心。
Dovecot
Dovecot 是一个开源的邮件传输代理(MTA),起源于 2002 年。它主要用于提供邮件接收和存储服务。
Dovecot 适用于需要高性能、可靠的邮件接收和存储服务的企业和数据中心。
Exim
Exim 是一个开源的邮件传输代理(MTA),起源于 1995 年。它用于接收、路由和发送电子邮件。
Exim 适用于需要灵活、可定制的邮件传输服务的企业和数据中心。