36 | 从URL到网卡:如何全局观察网络数据流动?
LMOS
该思维导图由 AI 生成,仅供参考
你好,我是 LMOS。
从这节课起,我们就要开始学习网络篇的内容了。网络是一个极其宏大的知识结构,我会通过五节课带你了解计算机网络的关键内容。
具体我们是这样安排的。作为网络篇的开始,今天这节课我会从一个面试中高频出现的问题切入,带你梳理从输入 URL 到网卡的网络数据流动过程中都发生了什么事。如果你真正理解了这个过程,相信你对整个网络架构的认知也会有质的飞跃。
网络篇的第二节课,我会带你分析网络数据包在内核中如何流转;第三节课,我们一起探讨互联网架构演进过程,并动手做一次协议栈移植;最后两节课,我还是照例带你看看 Linux,让你理解套接字在 Linux 内核中怎样实现。
从一道经典面试题说起
下面我们一起来看看一个问题,估计你多多少少会觉得熟悉。
输入 URL,从一个请求到响应都发生了什么事?
没错,这是一道非常经典的面试题,你在网上随便一搜,也会找到各种各样的资料解答这道题。
不过啊,那些答案都有一些笼统,今天我会尽量详细地为你梳理一下这个过程。跟着我学完这节课,你就能明白,为什么面试官对这道题青睐有加了。
这里我先给你概括一下全过程,让你有个整体印象。
1. 常规的网络交互过程是从客户端发起网络请求,用户态的应用程序(浏览器)会生成 HTTP 请求报文、并通过 DNS 协议查找到对应的远端 IP 地址。
2. 在套接字生成之后进入内核态,浏览器会委托操作系统内核协议栈中的上半部分,也就是 TCP/UDP 协议发起连接请求。
3. 然后经由协议栈下半部分的 IP 协议进行封装,使数据包具有远程定位能力。
4. 经过 MAC 层处理,找到接收方的目标 MAC 地址。
5. 最终数据包在经过网卡转化成电信号经过交换机、路由器发送到服务端,服务端经过处理拿到数据,再通过各种网络协议把数据响应给客户端。
6. 客户端拿到数据进行渲染。
7. 客户端和服务端之间反复交换数据,客户端的页面数据就会发生变化。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入浅出地解释了网络数据流动的全过程,从用户输入URL到网络数据包在网卡的流转,详细介绍了网络分层和网络协议的重要性。文章从发起请求阶段开始,讲解了用户输入URL、浏览器缓存、域名解析和DNS解析的过程。随后,详细解释了TCP连接的建立、TCP包头字段、IP层处理,以及MAC地址、MAC头格式和数据包转化为电信号的过程。最后描述了客户端与服务器之间用网络协议连接通信的过程。整体而言,本文内容丰富,适合想要全面了解网络数据流动过程的读者阅读。文章重点强调了网络协议对数据的处理过程,以及处理过程中不同协议的数据结构和关键头部字段。读者可以通过本文快速了解网络数据流动的全过程,对网络协议的重要性有更深入的理解。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《操作系统实战 45 讲》,新⼈⾸单¥68
《操作系统实战 45 讲》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- pedro内核接管应用层数据后依次将其打包为tcp包(传输层),帧(数据链路层),并数据其从内核拷贝到网卡,后续由网卡负责数据的发送;反过来内核收到网卡数据后层层解析,并将数据包交给用户态应用程序。
作者回复: 哈哈 铁子 快
2021-07-3026 - 艾恩凝天呐,这文章真的超赞,这是我见过讲的最通俗易懂的关于“ 输入 URL,从一个请求到响应都发生了什么事?”计算机网络是个人来说最欠缺的,因为不感兴趣,这篇直接点燃了内心兴趣之火,听说星星之火可以燎原,哈哈哈
编辑回复: 兴趣是学习的助燃剂,哈哈哈~
2022-05-152 - 青玉白露在内核中是分层级处理的,一层包一层。
作者回复: 哈哈 也对
2021-07-302 - springXu这道思考题是下节课的内容么?
作者回复: 哈哈
2021-07-301 - 梦醒十分精彩的文章。
编辑回复: 很开心得到认可~欢迎多多分享你的学习体会
2023-02-12归属地:上海 - memora小白发问,第一张图ISO-OSI中最右边的箭头是不是先指向SO物理介质?
作者回复: 是的,图中的箭头描述的是宏观层面指向的是整体。但微观层面确实是先传到物理层再依次向上传递的。
2021-08-04 - Geek_b3ad17讲的非常好2024-03-09归属地:江西
收起评论