#计算机网络

本篇是计算机网络系列的第七篇。在前面的文章中,我们已经分别探讨了 IP、DNS、DHCP、TCP、HTTP 等具体的技术点。然而,这些技术并非孤立存在,它们是一个庞大而精密的系统中的有机组成部分。为了理解它们如何协同工作,我们需要一个宏观的框架来审视整个网络世界。这个框架,就是网络分层模型。
在前几篇文章中,我们探讨了 IP、端口、URL、DNS、DHCP、HTTP、TCP 与 UDP 等核心网络概念。这些协议共同构成了互联网通信的基础。然而,应用程序是如何与这些底层协议进行交互,从而发送和接收数据的呢?这就要引出本文的主角:Socket。Socket 是应用层与传输层(TCP/UDP)进行交互的 API 接口,是网络编程的基石。本文将深入探讨 Socket 的核心概念,并通过 Swift 语言,展示如何在 iOS 和 macOS 平台上进行 TCP 和 UDP 的 Socket 编程实践。为了让读者能够完整地体验通信过程,本文不仅提供了客户端代码,还提供了可在 macOS 上运行的服务器端示例。
在前几篇文章中,我们探讨了 IP、端口、DNS、HTTP、TCP 和 UDP 等网络核心概念与协议。这些协议定义了数据如何在网络中寻址、路由和传输。然而,这些理论知识最终需要通过编程实践来应用。Socket(套接字)便是连接应用层程序与传输层协议(如 TCP/UDP)的桥梁,是进行网络编程的核心接口。本文将深入介绍 Socket 的基本概念、工作原理,并通过代码示例演示如何使用 Socket 进行网络通信。
TCP 与 UDP 是网络传输层的两大核心协议,它们以截然不同的方式定义了数据在应用程序间的传输。TCP 如同一次通话,追求可靠与完整;UDP 则像一张明信片,主张高效与迅捷。正是这两种设计哲学的差异,决定了它们在网页浏览、文件传输、视频会议、在线游戏等不同场景下的应用。本文将深入解析二者的核心机制与关键差异。
本系列的前几篇文章中,我们已经探讨了设备如何通过 IP 地址获得身份、如何通过 DNS 将域名解析为地址,以及如何通过 DHCP、NAT 和 VPN 等技术接入并穿梭于复杂的网络环境。至此,我们的设备已经具备了“定位”并“连接”到目标服务器的能力。 本文将深入探讨这个连接建立之后,应用程序之间进行通信所使用的“语言”——HTTP 协议,以及其安全版本 HTTPS。这两种协议构成了现代万维网的基石。
在上一篇文章的结尾,我们探讨了多种内网穿透技术,并初步介绍了 WireGuard 作为一种现代化 VPN 解决方案的优势。其实在更早之前,我们就亲手编译过 WireGuard 在 iOS 端的 SDK,也使用 WireGuard 实现过群晖 NAS 的公网访问。 本文将以 macOS 环境为基础,深入 WireGuard 内部,从内核交互的底层细节出发,解构虚拟网卡的实现机制,并详细剖析其密码学和路由设计。
本篇是计算机网络系列的第三篇,主要讲 DHCP 和内网穿透。在探索广阔的外网之前,先把内网相关的内容做个收尾。
本篇是计算机网络系列的第二篇,主要讲 URL 和 DNS。
最近在研究 Surge,众所周知主包这方面知识贼差,几乎可以算是从零开始学起,所以也想借这个机会好好补一下相关知识。 预计会写一系列文章,从计算机网络的基础概念开始,后续会包含常见的接口请求流程以及 WireGuard 等相关内容。 本篇就是系列的第一篇。