DNS:互联网的电话簿
本文是《计算机网络学习笔记》系列的第七篇。每次在浏览器里输入 www.google.com 并按下回车,第一件发生的事不是 TCP 握手,不是 TLS 握手,也不是发 HTTP 请求——而是一次 DNS 查询。在拿到目标服务器的 IP 地址之前,后续的一切都无从开始。DNS 就是这个"万事开头"的翻译官。
本文是《计算机网络学习笔记》系列的第七篇。每次在浏览器里输入 www.google.com 并按下回车,第一件发生的事不是 TCP 握手,不是 TLS 握手,也不是发 HTTP 请求——而是一次 DNS 查询。在拿到目标服务器的 IP 地址之前,后续的一切都无从开始。DNS 就是这个"万事开头"的翻译官。
本文是《计算机网络学习笔记》系列的第六篇。有了 TCP 保证可靠传输,有了 TLS 保证加密安全,应用层终于可以专注于"发什么"——这就是 HTTP 的职责。从 1991 年诞生至今,HTTP 经历了三次重大进化,每一次都是对上一代痛点的定点突破。
本文是《计算机网络学习笔记》系列的第五篇。有了 TCP,数据可以可靠地送达;但 TCP 是明文的,任何中间节点都能看到数据的内容,也能篡改它。TLS 正是为了解决这个问题而生——它架在 TCP 之上,为应用层提供加密、认证、完整性三重保障,是 HTTPS、SMTPS、FTPS 等所有安全协议的共同基石。
本文是《计算机网络学习笔记》系列的第四篇。TCP 知道数据怎么可靠地传过去(见第三篇),但还有一个同样重要的问题没解决:应该以多快的速度发?发太快,会压垮接收方的缓冲区,也会让整个网络陷入拥堵。为此,TCP 设计了两套独立的"限速"机制——流量控制和拥塞控制,分别对付这两种不同性质的"堵"。
本文是《计算机网络学习笔记》系列的第三篇。IP 层尽力而为,不保证送达,不保证顺序,不保证不重复——而 TCP 在这之上,构建出了对应用层"完全透明"的可靠字节流。本文就来讲清楚这件事是怎么做到的。
本文是《计算机网络学习笔记》系列的第二篇。TCP 是互联网最核心的传输协议,它的可靠性建立在一套精妙的连接管理机制之上——三次握手建立连接,四次挥手终止连接。看似简单的"多握几次手"背后,其实有很多值得深究的设计哲学。
本文是《计算机网络学习笔记》系列的一篇。在讨论三次握手、拥塞控制、可靠重传之前,有一个更基础的问题值得先弄清楚:TCP 的每一个报文段,究竟长什么样?每一个字段,为什么存在?本文将逐字段拆解 TCP 报文头,并解释其背后的设计意图。
「从输入 URL 到页面显示,中间发生了什么?」 这是互联网领域的一道经典面试题,考察候选人对计算机网络的整体认知深度。本文以一次完整的 Web 页面请求为例,将 DHCP、ARP、DNS、TCP、HTTP 等核心协议串联起来,自底向上逐步拆解数据在网络中传输的完整过程,帮助读者建立系统化的网络知识体系。
C++20引入了协程的概念,但是对于首次接触的开发者来说,理解起来还是有些吃力,本文尝试一次性讲通协程的基本概念以及用法。
官方 OmniTool 由以下 4 个模块组成:
谈起设计模式,最经典的莫过于Gof的23种经典设计模式,最近阅读了《设计模式-可复用面向对象软件的基础》一书,感触良多。
本文主要讲解Windows下字符编码的转换方法。
本文章主要讲解C++中指针相关问题,包括原始指针、野指针、空悬指针、智能指针(shared_ptr、unique_ptr、weak_ptr)、内存泄漏、循环引用、智能指针与多线程等知识。
PostgreSQL自身只提供了流复制的功能,想要搭建高可用集群的话,需要借助第三方库pgpool来实现。pgpool之间互相通信,并且监控PostgreSQL数据库,当有一个数据库节点宕机时,可以保证整个集群可用。如果是primary节点宕机,则让另外的standby节点提升为primary节点。如果是standby节点宕机,则对整体集群无影响。以此来保证数据库集群的高可用。