从爬虫到网络---<基石1> 搞通DNS,HTTP(S)

*************************************************************************************************************

        免责声明:本文内容仅为网络技术的科普与学习交流之用,旨在帮助相关学习者了解互联网安全与网络管理的原理。请勿用于任何非法用途或违反相关法律法规的行为。若有人将本文知识用于违法活动,概与作者无关。请自觉遵守国家法律法规,共同维护良好的网络环境。

*************************************************************************************************************

撕开网站访问背后的面纱,实际上探的就是现代互联网底层的三大灵魂拷问:

  1. 你输入网址,怎么找到对方?(DNS)
  2. 怎么建立通讯通道,怎么开始对话?(TCP/IP、SSL、HTTP)
  3. 你要的内容,怎么回来?(数据收发、展示)


0. 引子:生活里的“访问网站”

一只普通网民的操作:

  1. 你在浏览器里敲下 google.com 回车。
  2. 浏览器开始加载,几秒钟后名为 Google 的网页跳出来。

表面不过三秒钟,但这背后的每一环,都是计算机网络三十年演进路上的精心雕琢。**你为啥能在北京早高峰家里一键直达美国硅谷服务器拉数据?**本质就是“网络通信”四个字。

还是得用生活打个比方:访问网站=寄快递+收信。但寄的是你想要的数据包,投递员是全球无数路由器,你得先说清地址(域名、DNS),还怕别人偷看(加密),不时包裹丢了(丢包重传)……这就是互联网通信的日常。

那么——回到你关心的正题,每个关键“动作”,到底发生了什么?DNS 究竟干了什么不可替代的脏活累活?下面咱们进入细节。


1. 你输入网址时,到底干了啥?DNS原理全剖析

如果你以为“访问网站=输入网址+回车=网页跳出来”,那我建议你还是快点醒一醒。


1.1 域名 ≠ 服务器位置,DNS像什么?

你的浏览器首先得弄清楚一点——你想要访问个啥?你敲的是“google.com”,可你的电脑认不认识“google.com”?

抱歉,回答是不认识。

计算机只认“IP地址”(例如 142.250.72.142),这是数字形式的互联网“门牌号”。域名不过是给人看的,记忆友好点。就像你寄快递知道“北京清华大学”,但快递员手上的“地址码”其实是经纬度带邮编。

这就引出了DNS,Domain Name System——域名系统

简单点说,DNS 就像你手机里的通讯录。你知道“老王”,但手机只记的住他的手机号,给“老王”发信息,你先查通讯录,查到号码,再拔出去。


1.2 DNS的流程——从你身边到互联网之巅

当你输入 google.com 回车,浏览器向操作系统请求这个域名所对应的 IP 地址,然后,DNS 豪华流程正式开跑:

(1)浏览器缓存:

先查查自己以前访问过没。比如你昨天刚刷过Google,浏览器能不能偷懒,从缓存里直接找?YES——直接用,不再走下面步骤。

(2)操作系统缓存:

浏览器没存,操作系统(比如 Windows、macOS 里)也会缓存一批曾经解析过的IP。查到了直接返回。

(3)本地 DNS服务器(通常由你宽带或路由器提供,ISP 宽带运营商搞的那些):

如果你本地都没有,操作系统那就给配置好的 DNS 服务器发请求,通常是运营商的 DNS(比如 114.114.114.114 或 8.8.8.8 等公共 DNS)。

这就是你家里U盘一样的DNS小伙伴,一看你要查google.com,它先查自己的本地缓存——要是没搜到,就单枪匹马地冲进“互联网DNS树”去翻江倒海。

(4)递归查询开始,全网大戏上演

如果本地DNS也没有存货,它会发起一次“递归查询”——自己像个快递员,麻烦亲自从互联网根部一层层问上去,直到查到结果。

DNS 有四大支柱角色:

  • 根域名服务器(Root DNS)
  • 顶级域(TLD)服务器(比如 .com, .cn)
  • 权威域名服务器(Authoritative DNS)(谁发布就由谁回答)

流程举例——以 google.com 为例:

  1. 本地DNS问“根 DNS”:
    你知道 google.com 的 IP 哪儿能查?
    根 DNS 回答:这个得问“.com”顶级域那群人。

  2. 再问“.com”DNS:
    你知道 google.com 的 IP 吗?
    .com 顶级域DNS说:去找专门负责 google.com 的“权威DNS服务器”。

  3. 再问“google.com权威DNS”:
    这个老哥终于掏出了 google.com 当前最权威、最新的IP地址。

  4. 一路返回
    根 --> TLD --> 权威 --> 本地DNS --> 你的电脑/操作系统 --> 浏览器。

每一级都有缓存,缓存过期就得再查。


1.3 举例说明“DNS查询的真相”

你住在北京,敲下“google.com”。本地DNS没缓存,结果要跨国找。

  • 第一问(根DNS通常在国内也有镜像):
    “您好,我想找 google.com 的地址。”
  • 根DNS说:去 .com 顶级服务器问。
  • 你去找 .com 服务器:“google.com 呢?”
  • .COM DNS再指给你权威的google.com DNS。
  • 最后,权威 google.com DNS 给你 IP 地址。(比如 142.250.72.142)

……整个流程要是用交通方式类比,大致就是:

“打车:你先问门卫,门卫让你问门口保安,保安让你找派出所,派出所正好有你朋友的身份证。”

说复杂是复杂,但这套递归级联机制保证了互联网可扩展、分布式、防单点故障,还能全球飞速应答。所以说,没有DNS,互联网服务全都会崩。


1.4 DNS安全的暗战——污染、劫持和加密新趋势

你天真地以为问路是百分之百安全?想多了。

DNS劫持与污染

举个中国用户很熟的“墙”例子:你查 youtube.com,运营商或网络出口处帮你“偷偷”把查到的 IP 换成了一个莫名其妙的地址,让你根本访问不了。

DNS over HTTPS(DoH) / DNS over TLS(DoT)

为了对付劫持和窃听,行业新风潮就是把 DNS 查询加密。你输入的域名请求,不再是裸奔(明文),而是通过 HTTPS 或 TLS 隧道安全发送,使中间商贩没法轻易篡改数据。这才是真正的网络通信安全进步。


2. 拿到IP地址后发生了什么?让TCP/IP和HTTP来接管

DNS只是“问路”,找到正确的路牌之后,才开始真正的网络对话


2.1 建立连接——三次握手,门外须三叩

你有了 IP 地址,还要真跟“对方房间”搭上线。这一步要 TCP 协议出场,三次握手登场(没错,程序员界永远的经典梗)。

2.1.1 为什么要握手三次?

类比打电话:

  • 第一步:你发“喂”(SYN),问对方在不在。
  • 第二步:对方回“喂,你好,我收到了你的喂”(SYN+ACK)。
  • 第三步:你再说一声“我知道你收到我了,我也准备好了”(ACK)。

这三步确保双方都准备用可靠、安全的通道说话,才开始真正发数据。不这样做?数据就有丢失风险。

2.1.2 为什么不用一次或两次?

不用试探,对方也不知道你准备好了。
两次试探,谁知道对面是收到了还是丢了?三次正好对齐——扯平,双方都“备齐行头”再聊。


2.2 HTTPS/SSL——防止“旁边偷听”的加密交互

你上淘宝、银行,网页都“https://”开头,是为啥?HTTP+SSL=HTTPS。
SSL(现在是 TLS)加密,就是全程安全隧道,从你到服务器都加了一层“看不见的安全罩”。

  • 通信的每句话都经过加密,别人即使偷听(抓包),也只能得到乱码。
  • SSL 握手复杂得多,关键在于公钥、私钥、证书等安全机制。其中还能有 CA 机构签名,防伪证。

2.3 请求发出——浏览器拼装“请求包”

拿着“钥匙”(SSL),开通了高速隧道(TCP),你才正式发出“我要首页”的请求。

HTTP 协议就是这个快递包的“快递单”,里头规定了:

  • 客户端想要哪个资源(如 GET /index.html)
  • 用的是什么浏览器、系统(User-Agent)
  • 支持什么语言 / 编码
  • Cookie 等各种状态参数

2.4 服务器收到请求——怎么处理?

服务器收到“快递单”,精确识别你的要求:

  1. 检查你要的页面有没有被缓存。
  2. 是否有对应权限验证。
  3. 需要时,后端程序处理你的请求(比如你访问的是动态页面,如登录、发帖、购物等)。
  4. 把生成好的页面数据(一般是 HTML、JS、CSS、图片等)打包成“响应包”发回你。

2.5 数据组装——HTTP响应包怎么回来?

HTTP 响应,携带你想要的内容,核心是:

  • 状态码(比如 200 成功,404找不到,500服务器炸了)

  • 响应头(告诉浏览器,返回数据长啥样、是否压缩、过期等)

  • 响应体(也就是实际的 HTML 或资源)

  • 通过 TCP connection(安全的话就是SSL加密的TCP管道)回到你电脑。


3. 再拆分:数据怎么在互联网飞行?——IP分片、丢包重传、路由转发

互联网不是一条直线,你和服务器之间隔着无数路由器、交换机、光缆、卫星。数据包不是一次发完就一蹴而就,背后是复杂的“快递转运”。


3.1 数据包的分段与重组

举个“快递转运中心”例子:

  • 一个巨大的数据包会被分成很多“小包裹”
  • 每一段包裹都独立打标签(标明顺序与编号)
  • 到终点后,按编号重组回来
  • 如果中间有包裹丢了,TCP协议还会自动“重发”,保证整体数据完整、准确、一个字不能少

3.2 路由器的分工协作

你的请求和响应可能穿越全球上百台路由器,各个运营商、骨干网、CDN节点……每个路由器负责把数据转发到“最优路径”,就像寄快递,每一环都有转运中心,动态换线防止拥堵。


3.3 丢包、重传与队头阻塞

  • 路上数据丢了?TCP帮你自动重发,直到确认收到了。
  • 网络特别慢时会有“队头阻塞”:慢包拖慢后面所有包。
  • 这就是为何你明明有百兆宽带,有时网页还是莫名慢——可能中间某台环节出问题了。

4. 浏览器收到内容后,还会经历什么?(前端解析与渲染)

别以为拿到数据就完事了。

  1. 浏览器先把各类资源(HTML、CSS、JS、图片等)缓存起来。
  2. 解析 HTML,搭建 DOM 树。
  3. CSS 一起合成渲染树。
  4. JS 脚本同步/异步执行。
  5. 各种资源如果是外链,还要继续走上面的 DNS-HTTP-数据包流程(比如图片、广告、第三方统计code)。
  6. 最后页面才一帧帧渲染出来,展现给你。

5. 现实世界的挑战

5.1 慢、卡、打不开?问题可能在哪

  • DNS 解析慢(比如国内有时访问国外站点,为何需要用“DNS加速”甚至自定义DNS?)
  • 路由器拥堵、出口封锁(被墙/断网时的那个“打不开”页面)
  • CDN加速与缓存(内容分发网络,让静态资源自动就近分发、加速)

5.2 安全和隐私

  • DNS 泄露:你全家去哪都被运营商看光。用自定义加密的DNS、安全上网。
  • HTTP 窃听:见过“网页被篡改”?不用HTTPS的数据在路上其实像没有胶带的快递箱。
  • 中间人攻击:比如假冒银行官网,盗取密码。

5.3 实战场景

  • 美国的朋友开公司,.com 域名权威服务器挂了,全世界片区分分钟打不开。
  • 某公司用114DNS、阿里DNS分流,一个域名入口能做到全国各地分发不同的CDN节点。
  • 甚至很多初创者首站重大事故:域名忘交年费,DNS解析全部失效,所有项目下线。

6. 总结:一次网页访问,互联网世界的“合力演出”

瞧见没?输入网址那一刻,表面是你和浏览器的温柔互动,台下是万台机器连轴转,以亿次请求调度保驾护航——无数服务器、交换机、协议、加密机制,为的就是让你能在全球彼此看似“秒通”。

再想想,没有 DNS 的互联网等于没有门牌号的城市。没有加密的互联网,无异于花钱寄信,信封全透明,地址谁都能偷换。


7. 附:整个“访问网站”全景流程图

让我们回头看看,整个过程就像这样:

  1. 输入“www.abc.com”,浏览器查缓存;
  2. 找不到,问操作系统缓存;
  3. 操作系统没答案,发给本地DNS;
  4. 本地DNS一层层递归问——根DNS、顶级域(.com)、权威DNS;
  5. 得到 IP,归还给你电脑;
  6. 浏览器用 IP 发起 TCP 三次握手;
  7. 需要加密时,SSL 握手建立安全通道;
  8. 发送 HTTP 请求(或 HTTPS);
  9. 服务器收到,处理请求,返回响应包;
  10. 互联网在路上运送数据包;
  11. 浏览器组装内容、解析渲染页面、分离加载各种外链和静态资源;
  12. 页面展现在你眼前。

最后一点忠告

你可以继续“只会点网址”,但别忘了,每个互联网操作背后都是产业标准、工程师汗水和无数次暗战的结晶。DNS这样的骨干系统,别人一旦破坏,你的世界就会一秒黑屏。

明白了这些流程,以后再遇见网页打不开、加载缓慢、被墙、证书报错,你总比一群只会重启路由器的“羊群”,更懂点门道。还觉得访问网页只是“敲URL回车”这么简单?醒醒,互联网的魔法才刚开始。


*************************************************************************************************************

        免责声明:本文内容仅为网络技术的科普与学习交流之用,旨在帮助相关学习者了解互联网安全与网络管理的原理。请勿用于任何非法用途或违反相关法律法规的行为。若有人将本文知识用于违法活动,概与作者无关。请自觉遵守国家法律法规,共同维护良好的网络环境。

*************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晦涩难董先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值