共计 1457 个字符,预计需要花费 4 分钟才能阅读完成。
一: 相关概念说明:
1.1: DNS(Domain name System) 缓存:(域名系统)(查看本机的 ipconfig/displaydns)
当电脑把一个域名解析完之后, 它把这个这个域名和那个主机 Ip 地址相关联起来了, 电脑吧这个关系存到 DNS 缓存表中, 下次电脑再输入 www.baidu.com 的时候, 电脑通过查找 DNS 缓存, 就可以知道这个域名对应的 IP 地址了, 不再进行域名解析了, 提高了效率
1.2: ip 地址:
ip 地址对应好像门牌号, 我们通过这个地址可以找到主机的位置
1.3: 域名:(domain name):
Ip 地址是 4 个数字, 用顿号隔开, 这个东西不好记, 我们一般用字母搭配数字的方式使用比如.www.baidu.com.,Ip 地址和域名不是一一对应的, 一个域名可以绑定多个 IP, 但在同一时刻一个域名只能解析成一个 Ip 地址 (这个活由我们的 DNS 帮我们完成)
二: 相关请求大致流程
1: 浏览器根据域名解析出来 Ip 地址
2: 浏览器根据 IP 地址进行 Socket 通信
3: 浏览器和客户端进行通信, 浏览器请求, 服务器接收请求
4: 浏览器和服务器断开链接
三: 具体的流程
3.1: 查找过程
1: 浏览器先从自己 DNS 表中查找看有没有.www.baidu.com(对应的 IP 地址)
2: 从操作系统中的 DNS 表中查找 (维护域名和 ip 地址对应关系的一张表)
3: 从操作系统 host 文件夹中查找
4: 操作系统将域名发送到 LDNS(本地区域域名系统), 比如我在工大, 那么 LDNS 服务器就在 我们学校, 查找 DNS 缓存, 继续失败的话发送一个迭代的 DNS 解析请求.
4.1:LDNS 向 Root name server(根域名服务器, 存储每个域名的域),Root name Server 返回 com 域的顶级域名服务器地址
4.2:LDNS 向 com 顶级域名服务器发送请求, 返回 www.bai.com 域名服务器的地址
4.3:LDNS 向 www.baidu.com 域名服务器发送请求, 得到 www.baidu.com 的 ip 地址
4.1:LDNS 向 Root name server(根域名服务器, 存储每个域名的域),Root name Server 返回 com 域的顶级域名服务器地址
4.2:LDNS 向 com 顶级域名服务器发送请求, 返回 www.bai.com 域名服务器的地址
4.3:LDNS 向 www.baidu.com 域名服务器发送请求, 得到 www.baidu.com 的 ip 地址
5:LDNS 得到 Ip 地址返给操作系统, 并把这个 iP 地址缓存到 DNS 表中
6: 操作系统将地址返给浏览器. 同时也将 IP 地址缓存起来
7: 现在浏览器已经得到了 Ip 地址
3.2: 建立连接 (三次握手)(采用 TCP 协议)
知道了百度的 Ip 地址, 接下来是三次握手的实现连接
1: 客户机向服务器发送建立连接请求 (你好, 很高兴认识你)
2: 服务器接到请求后发送同意连接请求 (好的, 很高兴认识你)
3: 客户机接收到服务器同意请求后, 再次向服务器发送确认信号 (我也很高兴认识你), 自此主机和服务器两个建立连接
3.3: 网页请求和显示
建立连接之后, 那么服务器和客户机之间就会进行通讯
3.1: 客户机浏览器根据 IP 地址生成 Http 请求, 请求包含文件的位置, 请求的方式
3.2: 服务器接收到 http 请求内容决定如何获取相应的 HTML 文件
3.3: 服务器将相应的 HTML 文件发送给浏览器
3.4: 浏览器还没完全接收 HTML 文件的时候, 开始渲染, 显示网页
3.5: 根据 html 代码, 继续请求图片,
3.4: 断开过程 (四次挥手过程)
1: 客户机向服务器发送一个断开的请求 (不早了, 我该走了)
2: 服务器接受到请求发送确认请求的信号 (知道了)
3: 服务器向客户端发送断开通知 (我也该走了)
4: 客户机接受到断开通知, 反馈一个信号 (好的), 服务器接收到反馈信号断开链接
正文完
星哥玩云-微信公众号