网络协议系列--网络协议串讲【掘金日新计划】

1,035 阅读4分钟

da025f33d7584f3ebc59624e72e0c9db_tplv-k3u1fbpfcp-zoom-crop-mark_1304_1304_1304_734.webp

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

网络协议系列 第1篇--网络分层,TCP/IP五层模型【掘金日新计划】
网络协议系列 第2篇--传输层工作原理【掘金日新计划】
网络协议系列 第3篇--TCP有哪些机制【掘金日新计划】
网络协议系列 第4篇--应用层HTTP发展史【掘金日新计划】
网络协议系列 第5篇--HTTPS原理【掘金日新计划】
网络协议系列 第6篇--网络协议串讲【掘金日新计划】
网络协议系列 第7篇--补充一些底层网络知识【掘金日新计划】


 ~  ~前言:每日革新自我、追求进步。积土而为山,积水而为海。我们来到系列的第六篇,这篇文章将以一次浏览网页为例子,纵观整个网络协议的运作。

周尛先森




网络协议虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我当年学习它的时候也废了挺大功夫。

网络分层、TCP协议、HTTPS中对称与非对称加密,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了网络协议


从输入URL到看到页面发生了什么?

这个问题非常大,当中的知识点非常多且很细,网上有一些资源是从浏览器的角度去分析,也是分析的非常棒。

本篇文章围绕网络协议,看看URL到看到页面中间发生了什么。简单总结了以下几个步骤:

  1. 拿到url,发起请求

  2. 检查缓存,有缓存则直接返回

  3. 没有缓存,首先进行DNS,获取IP地址,HTTPS的话还要建立S连接

  4. 利用TCP建立传输层连接,然后再处理应用层

  5. 传输数据,然后断开连接

接下来一个一个去分析吧

 ~第一步 ~ : 当用户在地址栏中输入一个查询关键字时,地址栏会判断输入的关键字是搜索内容,还是请求的 URL。
如果是搜索内容,地址栏会使用浏览器默认的搜索引擎,来合成新的带搜索关键字的 URL。
如果判断输入内容符合 URL 规则,比如输入的是 time.geekbang.org,那么地址栏会根据规则,把这段内容加上协议,合成为完整的 URL。

 ~第二步 ~ : 检查缓存,缓存分为强制缓存协商缓存。 当缓存数据库中有客户端需要的数据,客户端直接将数据从其中拿出来使用(如果数据未失效),当缓存服务器没有需要的数据时,客户端才会向服务端请求。
又称对比缓存。客户端会先从缓存数据库拿到一个缓存的标识,然后向服务端验证标识是否失效,如果没有失效服务端会返回304,这样客户端可以直接去缓存数据库拿出数据,如果失效,服务端会返回新的数据。
强制缓存的优先级高于协商缓存,若两种缓存皆存在,且强制缓存命中目标,则协商缓存不再验证标识。

 ~第三步 ~ : 没有缓存,需要发送请求,则需要DNS解析。
DNS解析过程大致是:先发一个DNS请求,首先是本地域名服务器开始工作,它会查找有没有缓存这个URL的IP地址,如果有就直接返回,没有的话就会从跟域名服务器开始找。
从顶级域名开始向下找,再找到一级域名,二级域名...最后将IP地址返回,客户端与服务端开始建立连接。

 ~第四步 ~ : 开始建立TCP连接,这里简述一下,就是TCP的三次握手,建立了TCP连接后开始应用层的处理,HTTP、HTTPS的连接。

 ~第五步 ~ : 服务器与客户端开始传输数据,所有数据都传输完了,如果没开启长连接,则要断开连接了。这里TCP断开连接使用的是四次挥手。

这里再放一张图,表示一个完整数据包携带的信息:

企业微信截图_16484551666566.png

图(图片来源于网络)


小结

URL到页面展示,真的是一个非常大的课题,中间的每个点都可以深入研究。这里本意只是将大的框架码出来,具体细节还需自己深入研究。

最后,让我们一起加油吧!

gg.jpg

都看到这了,不如顺手点个赞再走 ( *ˇωˇ* )