---
title: "计算机网络与互联网"
description: "计算机发展史、组成原理、网络与编程语言基础知识。"
---

> Documentation Index
> Fetch the complete documentation index at: https://cppguide.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 计算机网络与互联网

![](https://img.dailyup.xyz/originals/8208462169070-083d9a42-4484-4e0a-b88b-ec07c4590d8b.png)

你能想像一个没有互联网的世界吗？如果没有互联网，很难想像这个世界将会如何运作。

实际上互联网是一个相对比较新的发明，最初是由一名叫蒂姆.伯纳斯.李（Tim Berners-Lee）的英国计算机科学家在 1989 年构想出来的，从互联网的诞生到现在也不过三十多年时间，还很年轻。

### 计算机网络

当我们谈论计算机网络时，通常指的是将分散的、具有独立功能的多台计算机通过通信线路与设备连接在一起，以便它们之间可以共享资源、传递信息。

计算机网络按规模大小可分为：

- **局域网（LAN）**，如一个家庭、一个公司、一个学校的内部网络都可以看作是一个局域网。覆盖范围约几十米到几千米的区域。

- **城域网（MAN）**，在一个城市范围内所建的网络。覆盖范围约 5 千米～ 50 千米。
- **广域网（WAN）**，一个国家或多个国家范围内所建的网络。覆盖范围约几十千米到几千千米。

计算机网络按拓扑结构可分四种类型: **总线型、星型、环状型和网状型**。

![](https://img.dailyup.xyz/optimized/8208462161055-2b82f434-5846-4a65-a719-848aa8ee9a07.png)

而因特网（Internet）是全球最大、最广泛使用的计算机网络，因特网也称为互联网，它连接了全世界各地的数以亿计的设备，包括计算机、服务器、移动设备和其它智能设备，使人们能够在全球范围内进行通信和访问各种资源。

> 计算机网络是一个抽象的概念，它定义了网络的逻辑结构。而因特网（Internet）则一个具体的网络，这个网络连接着分布在全世界各个地方数以亿计的网络设备、通信线路和终端设备。

### 域名 / URL / IP 地址

既然互联网可以让人们全球范围内进行通信和访问各种资源，那我们是如何去找到对应的资源呢？

人们经常说，给我一个网址，我去看看内容怎么样？这里的网址就是让我们可以去找到相应的资源（如文章、文件、视频等）的一个目标地址，就像我们要去朋友家，需要知道朋友家所在的详细地址一样。

实际上，当我们在浏览器中输入网址或点击链接时，涉及到背后一些重要的概念，包括**域名、URL和IP地址**。下面我们来逐一看看它们的含义及它们之间的关系。

#### URL（Uniform Resource Locator）

URL 是统一资源定位器的缩写，它是用于标识和定位互联网上的资源（如网页、图片、视频等）的地址。

URL包含了访问资源所需的信息。一个URL通常由以下几个部分组成：

- **协议（Protocol）**：指定了访问资源所使用的通信协议，如HTTP（超文本传输协议）或HTTPS（安全的超文本传输协议）。
- **域名（Domain Name）**：指定了资源所在的域名，如 abc.com。
- **路径（Path）**：指定了资源在服务器上的位置，如/blog/intro.html。

![](https://img.dailyup.xyz/optimized/8208462159530-f68b7172-e920-40f3-bf7e-dbfad3abb1df.png)

#### 域名（Domain Name）

域名是用于标识和定位网站的名称。它是由一系列按照特定规则组合在一起的字符组成的，比如abc.com。域名的目的是提供一个易于记忆和使用的名称，代替了复杂的IP地址。

当我们输入一个网址时，浏览器会通过域名系统（DNS）将域名转换为对应的 IP 地址，然后浏览器使用 IP 地址来建立与服务器的连接，最后根据路径在服务器上找到对应的资源。

域名通常根据其后缀进行分类，不同后缀的域名有不同的含义，域名分为两类：

- **国别域名**，例如：`.cn` 代表中国，`.us` 代表美国，`.jp` 代表日本
- **通用域名**，例如：`.com` 代表商业公司或组织，也是世界上最流行的能用域名后缀；`.org` 代表非营利组织，`.edu` 代表学校或教育部门

### IP地址与子网划分

当我们使用互联网时，为了确保计算机之间通信顺利进行，我们需要给每台计算机分配一个唯一的地址，就像我们在现实生活中有门牌号一样。

> 实际上，当我们用网址（URL）访问网站时，最终还是转换成通过 IP 地址去找到域名所指向的服务器（计算机），然后根据服务器设置的规则，将访问转发到对应的服务上去。

这个唯一的地址就是 IP 地址，它是由一串数字组成的标识符，目前最常用的两个不同的 IP 地址版本是 **Ipv4 和 Ipv6** 。

IPv4（Internet Protocol version 4）是互联网协议的第四个版本，它是目前广泛使用的IP地址版本。**IPv4地址由32位二进制数字组成，通常以四个十进制数（例如192.168.0.1）表示**。每个数字的范围是0到255。

随着互联网的普及，越来越多的设备，如智能手机、智能家居等也连入了互联网，也就需要更多的 IP 地址，而 IPv4 只有约 42 亿个可用地址，IPv4 地址也将逐渐耗尽。

为了解决IPv4地址短缺的问题，IPv6（Internet Protocol version 6）被开发出来。**IPv6采用128位的地址格式，以8个四位的十六进制数表示**（例如2001:0db8:85a3:0000:0000:8a2e:0370:7334）。128 位能提供的地址远远超过了 IPv4 可用的地址数量，此外，IPv6还提供了更好的安全性和效率，并支持新的互联网功能和协议。

> IP 实际上是 Internet Protocol（网际互联协议）的缩写，是 TCP/IP 体系中的网络层协议

随着互联网的发展，可以预计IPv6将逐渐取代IPv4成为主流的IP地址版本。

### 子网划分

IP 地址根据地址范围分为了 A 到 E 五大类。

- A类用于大型网络
- B类用于中型网络
- C类用于小型网络
- D类用于组播
- E类用于实验

具体关于 IP 地址与子网划分的内容比较复杂，这里就不展开了，感兴趣的同学可以查阅相关资料。

## OSI 七层模型及 TCP/IP 四层模型

**OSI七层模型**（Open System Interconnect）即开放系统互连参考模型，是由**ISO**（International Organization for Standardization）**国际标准化组织**提出的，用于计算机或通信系统间互联的标准体系。

从上到下可分为七层：**每一层都完成特定的功能，并为上一层提供服务，并使用下层所提供的服务。**

7、应用层（Application）：为用户的应用程序提供网络服务  
6、表示层（Presentation）：将信息表示为一定形式和格式的数据流  
5、会话层（Session）：负责通信主机之间会话的建立、管理和拆除，协调通信双方的会话  
4、传输层（Transport）：负责通信主机间端到端的连接  
3、网络层（Network）：负责将**分组（Packet）从源机送到目的机**，包括寻址和最优路径选择等  
2、数据链路层（Data Link）：提供可靠的**帧（Frame）传递**，实现差错控制、流控等等  
1、物理层（Physical）：提供透明的**比特流（Bits）**，也就是 0 1 传递  

![](https://img.dailyup.xyz/originals/8208462157041-23ce4ee2-a50d-41ee-a23a-d138d3a5dbad.png)

上图来源：https://wsgzao.github.io/post/osi/

TCP/IP 四层参考模型从上到下可分为四层：  
4、应用层（Application）：为用户提供所需要的各种服务  
3、传输层（Transport）：为应用层实体提供端到端的通信功能，保证了数据包的顺序传送及数据的完整性  
2、网际层（Internet）：主要解决主机到主机的通信问题  
1、网络接口层（Network Access）：负责监视数据在主机和网络之间的交换  

## 存储单位

当谈到长度时，我们知道有厘米、分米、米这样的长度单位；当谈到重量时，我们知道有毫克、克、千克这样的重量单位。

那当我们讨论计算机中的数据存储和处理时，同样会涉及到如何来表示存储的大小单位，下面我们来了解一下。

#### 1. 位（bit）
**位是计算机中最基本的单位**，它表示二进制的数字 0 或 1。可以将位看作是一种开关的状态，要么是 0，要么是 1，共两种状态。

计算机中的所有程序和数据最终都是以位的形式来存储和处理的。

#### 2. 字节（byte）

字节是位的组合，通常由 8 位组成，1字节（Byte） = 8 位（bit）。**字节是计算机存储和处理数据的基本单元**。比如，一个字节可以表示一个英文字母或一个数字。

> 我们在前面讲到 CPU 性能衡量指标时提到过一个字长，字也是一个比位和字节更大的单位，具体字的单位大小和电脑设备相关。

除此之外，计算机中的还有以下一些常见的数据存储单位，其中一些大家应该比较熟悉。

3. **更多存储单位**

- **KB（Kilobyte）**，千字节，1 KB = 1024 B，常用于表示一些较小的文件和存储容量，如一些文档、图片等。
- **MB（Megabye）**，兆字节，1 MB = 1024 KB，常用于表示一些中等大小的文件和存储容量。
- **GB（Gigabyte）**，吉字节，1 GB = 1024 MB，常用于表示一些较大的文件和存储容量，如高清视频等。
- **TB（Terabyte）**，太字节，1 TB = 1024 GB，常用于表示大型文件和存储容量，现在很多大容易的移动硬盘都是几个 TB。

了解这些数据存储单位及其换算关系对于理解和管理计算机中的数据存储是非常重要。它们帮助我们衡量和比较不同文件和存储设备的容量，并确保我们有足够的空间来存储和处理数据。

> 注意，除了字节（Byte）与位（bit）的换算关系是 8 倍外，其它单位每级之间都是 1024 倍的换算关系。1024 恰好是 $2^{10}$

了解这些存储单位及换算关系对我们是很有帮助的，比如说，一个摄像爱好者，想买一个移动硬盘来存储照片，假设每张照片平均下来的大小为 2MB，如果它买一个 256G 的移动硬盘，大概能装多少张这样的照片呢？

**换算示例：**

256G = 256 * 1024 MB，256 * 1024 / 2 = 131072，大概可以存储 13 万张大概为 2MB 的照片。

## 小结
本章节的知识点看起来毕竟枯燥，其实与我们息息相关，我们的生活环境几乎就离不开互联网，每天上网查找资料，就会涉及到URL、域名，存储任何资料，就会使用到各种存储单位。

涉及到计算机网络与互联网的内容还有很多，这里只是很小一部分，感兴趣的同学可以自行去查阅相关资料，作为常识，多了解一些与我们身处的数字环境相关的知识也是很有必要的。

Source: https://cppguide.xyz/computer-basics/network/index.mdx
