作为中国的一名ai专业的学生,很多时候要从国外的服务器上下载或调用相应的资源,但是限于网络的连接问题,以及南大智科不开设计算机网络这门课,我觉得每个智科人有必要掌握计算机网络的相关知识,具备能在现实使用中分析解决网络连接问题的能力
本笔记的目的就是使得智科人快速掌握相关知识,具备实战能力,能解决遇到的常见问题
基础
网络连接的最基础的模型:
应用程序 ↓ DNS 查询域名对应的 IP ↓ 建立 TCP / TLS 连接 ↓ 通过本地网络、运营商、跨境链路、CDN 路由到服务器 ↓ 服务器鉴权、返回数据
(暂时不需要知道每个特定名词的意思,先了解流程)
因此我们平时遇到网络问题可能不只是简单的网络不好,而可能是在某一层出现了问题:
域名解析失败:DNS 问题 能解析但连不上:路由 / 防火墙 / 端口问题 能连上但 TLS 报错:证书 / 代理 / 系统时间问题 返回 401/403:权限 / token / 区域限制 下载很慢:CDN / 路由 / 镜像源问题 Python 能访问,浏览器不能:环境变量 / proxy 配置问题 浏览器能访问,代码不能:requests / huggingface / git 配置问题
curl -v https://example.com 这个指令是linux的一个比较重要的指令,它能告诉你目前卡在了什么地方,是DNS、TCP、TLS 还是 HTTP 返回阶段。
核心概念
IP 地址:设备在网络中的地址 端口:一个机器上不同服务的入口 DNS:把域名变成 IP TCP:可靠连接,SSH、HTTP、HTTPS 都依赖它 UDP:更轻量,DNS、WireGuard 常用 HTTP/HTTPS:网页和 API 的主要协议 TLS:HTTPS 的加密层 NAT:内网机器共享一个公网出口 防火墙:控制哪些端口能进出 代理:让流量先经过另一个节点 VPN:把你和远程服务器组成一个虚拟局域网
关键区分:
SSH:远程登录服务器 Proxy:让部分应用流量经过节点 VPN:让整个系统或部分网段流量经过节点
接下来是每个概念的最简单的解释和相关的关系
目前的疑问
- 为什么有了路由器,别人就不能直接通过公网ip访问你的电脑,为什么知道了ip地址就可以访问对应的设备,信号是怎么传递的?
- 端口数是怎么设置的,我怎么知道对方有哪些端口,每个端口对应什么功能?
- dns也有自己的ip地址,