3. [1] 计算机网络和Internet的基本概念
1. 概念介绍
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。我们日常生活中最常接触到的、全球最大的计算机网络就是因特网(Internet) 。
- IP地址 (IP Address): 每台连接到网络上的设备都被分配的一个唯一数字标识,就像是设备在网络中的“门牌号”。例如
192.168.1.1(IPv4) 或2001:0db8:85a3:0000:0000:8a2e:0370:7334(IPv6)。 - 域名 (Domain Name): 由于IP地址难以记忆,我们使用如
www.google.com这样的域名来访问网站。DNS (Domain Name System) 服务器负责将域名翻译成对应的IP地址。 - 协议 (Protocol): 为了让不同设备之间能够顺畅通信而制定的一套规则。最核心的协议是 TCP/IP协议簇。
-
- TCP (Transmission Control Protocol): 传输控制协议,提供一种可靠的、面向连接的数据传输服务。它确保数据无差错、不丢失、不重复,且按序到达。
- HTTP (HyperText Transfer Protocol): 超文本传输协议,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议,也就是我们上网浏览网页时主要使用的协议。
2. 算法步骤 (数据包传输流程简化步骤)
这里我们用一个简化的“客户端请求网页”的流程来代替“算法步骤”。
- DNS查询: 用户在浏览器输入
www.example.com。浏览器向DNS服务器发送请求,查询该域名对应的IP地址。 - 建立TCP连接: DNS服务器返回IP地址后,用户的计算机向该IP地址的服务器发起TCP连接请求(“三次握手”)。
- 发送HTTP请求: TCP连接建立后,浏览器向服务器发送一个HTTP请求,请求获取网页内容。
- 服务器处理请求: 服务器收到请求后,找到对应的网页文件。
- 发送HTTP响应: 服务器将网页内容打包成一个HTTP响应,通过TCP连接发回给用户的浏览器。
- 渲染页面: 浏览器接收到响应后,解析HTML、CSS、JavaScript等内容,最终将网页显示出来。
- 断开TCP连接: 数据传输完毕,连接断开(“四次挥手”)。
3. 算法可视化svg图示 (简化的Client-Server模型)
4. 核心特性
- 资源共享: 共享硬件(如打印机)、软件和数据。
- 快速通信: 提供电子邮件、即时消息等多种通信方式。
- 分布式处理: 允许一个大型任务被分解到网络上的多台计算机上协同完成。
- 高可靠性: 网络中的某个节点出现故障,信息可以通过其他替代路径传输。
5. C++代码基础实现
对于入门级选手,直接用C++进行网络编程是超纲的。这里仅作概念展示,说明网络通信的本质是数据交换,并不会实际运行。
// 伪代码,仅为概念展示,无法编译运行
#include <iostream>
#include <string>
// 假设存在一个网络库
#include "network_library.h"
int main() {
// 1. 指定目标服务器地址和端口
std::string server_ip = "93.184.216.34"; // example.com的IP地址
int port = 80; // HTTP默认端口
// 2. 尝试连接服务器
Connection conn = Network.connect(server_ip, port);
if (conn.is_successful()) {
// 3. 构造一个HTTP GET请求
std::string http_request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n";
// 4. 发送请求
conn.send(http_request);
// 5. 接收服务器的响应
std::string http_response = conn.receive();
// 6. 打印响应
std::cout << "服务器响应: " << std::endl;
std::cout << http_response << std::endl;
// 7. 关闭连接
conn.close();
} else {
std::cerr << "连接服务器失败!" << std::endl;
}
return 0;
}
6. 优化策略
此部分对于概念性知识不适用。可理解为网络技术的发展趋势:
- 提高带宽: 从拨号上网到光纤入户,传输速度越来越快。
- 降低延迟: 通过优化路由算法、建设更多CDN节点来减少数据传输时间。
- IPv6: 解决IPv4地址耗尽的问题,提供更大的地址空间。
7. 优缺点
- 优点:
-
- 信息获取便捷: 轻松访问全球信息。
- 沟通无障碍: 打破地理限制,方便人际交流。
- 资源共享: 节约成本,提高效率。
- 缺点:
-
- 网络安全问题: 病毒、黑客攻击、数据泄露等风险。
- 信息泛滥: 难以甄别信息的真伪和价值。
- 网络沉迷: 可能对现实生活造成负面影响。
8. 应用场景
- 网页浏览: 使用浏览器访问网站。
- 文件传输: FTP、网盘等。
- 即时通讯: QQ、微信、Telegram。
- 电子邮件: 使用Email客户端或网页版收发邮件。
- 在线游戏: 多人通过网络进行游戏。
9. 扩展
- OSI七层模型: 一种更复杂的网络分层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)。
- Socket编程: 进行网络程序开发的基础。
- 网络安全: 防火墙、加密技术(HTTPS中的SSL/TLS)、数字签名等。
- 物联网 (IoT): 将各种物理设备(如家电、汽车)连接到互联网。
10. 5个课后配套练习及C++代码实现答案
由于本节是概念知识,练习将以问答题形式出现,不涉及C++代码。
练习1: 什么是IP地址?什么是域名?它们之间有什么关系?答案: IP地址是设备在网络中的唯一数字标识,如192.168.1.1。域名是方便人类记忆的字符串地址,如www.google.com。域名通过DNS系统解析(翻译)成对应的IP地址,计算机才能找到目标服务器。
练习2: 当你在浏览器地址栏输入 http://www.noi.cn/ 并回车后,至少涉及了哪些网络协议?答案: 至少涉及了 DNS协议(用于将www.noi.cn解析为IP地址)、TCP协议(用于建立可靠的数据连接)和HTTP协议(用于请求和传输网页内容)。
练习3: TCP协议和UDP协议(用户数据报协议)的主要区别是什么?答案: 主要区别在于TCP是可靠的、面向连接的协议,它保证数据按序、无差错地送达,但开销较大。而UDP是不可靠的、无连接的协议,它只管发送数据,不保证数据能否到达或按序到达,但速度快、开销小。常用于视频直播、在线游戏等对实时性要求高的场景。
练习4: 客户端(Client)和服务器(Server)在网络通信中分别扮演什么角色?答案: 客户端是服务的请求方,例如我们的个人电脑、手机上的浏览器。服务器是服务的提供方,例如存放网站文件的计算机。通信通常由客户端发起请求,服务器进行响应。
练习5: Ping命令是一个常用的网络诊断工具,它的主要作用是什么?答案: Ping命令的主要作用是测试网络连接是否通畅。它向目标主机发送一个小的ICMP(Internet控制报文协议)数据包,并等待对方返回,通过返回时间和是否成功返回来判断网络的连通性和延迟情况。
11. 相关网络资源推荐
- MDN Web Docs - HTTP
- 菜鸟教程 - TCP/IP 教程
- YouTube - Crash Course Computer Science (网络部分) (需科学上网)