访问百度的过程详解

目录

1. DNS 域名解析

DNS 域名解析过程:

具体过程为:

2. 向服务器请求数据

3. 涉及的协议

应用层:

传输层:

网络层:

网络层:


DNS 域名解析-->向服务器请求数据-->涉及的协议

1. DNS 域名解析

首先,需要将 www.baidu.com 通过 DNS 解析获得百度的 IP 地址。

DNS (域名系统):DNS 协议运行在 UDP 协议之上,使用端口为 53。

DNS 域名解析过程:

浏览器缓存 --> 系统 host 缓存 --> 本地域名服务器 --> 请求根服务器 --> 主(顶级)域名服务器 --> 网站注册的域名服务器 --> 本地域名服务器返回ip 地址

具体过程为:

1. 浏览器首先查询浏览器的缓存,因为浏览器会按照一定的频率缓存 DNS 记录。

2. 若浏览器无缓存,那么查询操作系统的 HOST 文件,查询是否有 DNS 记录。

3. 若还没有命中域名,就请求本地域名服务器该服务器一般都会缓存域名查询结果,因此大部分域名解析都能在这里解析完成。

4. 若本地域名服务器还没有命中,就地域名服务器请求根服务器,根服务器返回一个所查询域的主域名服务器(国际顶尖域名服务器,如.com,.cn,.org等),这里访问的是 www.baidu.com 百度,即返回 .com 的主域名服务器。

5. 本地域名服务器 继续访问 主域名服务器,查找这个域名网站注册的域名服务器

6. 本地域名服务器 继续访问 本地域名服务器,根据映射关系表找到目标 IP 地址,返回给 本地域名服务器

本地域名服务器拿到 IP 地址后,对这个域名和 IP 地址进行缓存,并将 IP 地址返回浏览器,至此,DNS 域名解析过程结束,拿到域名对应的 IP 地址

 

2. 向服务器请求数据

拿到百度的服务器地址后,浏览器开始向该 IP 地址发起 HTTP/HTTPS 会话请求,而 HTTP/HTTPS 协议皆基于 TCP 协议,因此,在进行 HTTP 请求之前,浏览器还需要与百度服务器进行三次握手,建立 TCP 连接。因此,步骤如下:

1. 与服务器进行三次握手,建立 TCP 连接。三次握手传送门

2. 发出 HTTP/HTTPS 请求,由于我们访问的是 www.baidu.com ,因此请求的是百度首页。

3. 服务器响应数据发送给客户端浏览器,即百度首页数据。

4. 通过四次挥手,TCP 连接释放。四次挥手传送门

5. 浏览器对首页数据进行解析渲染,将最终的页面效果展示给用户

3. 涉及的协议

应用层:

HTTP:客户端向服务器发起 HTTP 会话请求。

DNS:域名解析服务,解析服务器的 ip 地址。

传输层:

TCP:HTTP/HTTPS 基于 TCP 协议进行传输。

UDP:传输层,DNS 域名解析的传输通过 UDP 协议传输。

网络层:

IP:IP 数据包传输和路由选择。

网络层:

ICMP:提供网络传输过程中的差错检测。

ARP网络层,将本机默认网关 ip 地址映射成物理 MAC 地址。

  • 18
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
学习要求: 熟悉基本的linux命令 具备基本的网络知识 掌握一门编程语言 课程特点: 深刻理解:OpenStack的设计原理,体系构架和关键技术,构建一个OpenStack环境所需的核心组件以及核心组件间的联系; 全面掌握:如何通过不同的部署工具比如packstack,部署OpenStack环境;如何通过单独部署OpenStack核心组件逐渐搭建出OpenStack环境; 定制研发:在学习openstack源码级深度解析培训后,你能了解openstack源码的体系结构,并能根据需要进行定制开发,满足您在实际生产环境中OpenStack的各种疑问和不满足的功能。 ------------------------课程内容------------------------ 课1、课前学习环境准备 课2、课程介绍 课3、OpenStack概论 课4、实例:OpenStack自动安装(Fuel) 课5、作业:OpenStack Fuel 课6、OpenStack安装部署答问 课7、Keystone 详解8、实例:OpenStack 手动安装 - 环境准 课9、实例:Keystone 手动安装 课10、实例:Keystone CLI 使用 课11、实例:Keystone API使用 课12、Glance详解13、实例:Glance手动安装以及CLI、API 课14、实例:Glance镜像制作 课15、实例:Glance镜像修改 课16、作业:Keystone手动练习 课17、Keystone答问 课18、作业:Glance手动练习 课19、Nova架构及原理详解20、实例:Nova手动安装 课21、实例:Instance启动过程回顾 课22、网络基础知识盘点 课23、Neutron原理详解24、实例:Neutron手动安装 课25、实例:网络命名空间 课26、实例:物理机连接openvswitch的虚 课27、实例:租户私有网络创建 课28、Neutron SDN 实现详解29、实例:Neutron SDN 手动实现 课30、作业:Nova、Neuron手动安装练习 课31、作业:Neutron 相关实例练习 课32、Neutron 答问 课33、Cinder 原理详解34、Cinder iSCSI实现原理详解35、实例:Cinder 手动安装 课36、Swift 架构与原理详解37、实例:Swift 手动安装 课38、Dashboard 介绍与演示 课39、实例:Dashboard 手动安装 课40、实例:Dashboard 浮动IP访问实例 课41、实例:Dashboard 块存储的使用 课42、实例:Dashboard 对象存储的使用 课43、实例:OpenStack 命令行接口使用 课44、OpenStack HA与性能调优 课45、OpenStack Devstack 自动安 课46、配置 OpenStack Eclipse 开发环境 课47、配置 OpenStack Eclipse 开发环境 课48、OpenStack 自动化测试 - 单元测试 课49、OpenStack 自动化测试 - 集成测试 课50、Nova 源码结构 课51、Nova 调用流程源码解析 课52、Nova 分层架构与业务模型剖析 课53、Nova 自定义 API 扩展编码实现 课54、Django 介绍与快速开始 课55、Django view 和 urls 的用法 课56、Django Templates 模板的用法(一) 课57、Django Templates 模板的用法(二) 课58、Django Form 表单的用法 课59、Horizon 结构源码剖析(1) 课60、Horizon 自定义 Panel 编码实现 课61、Horizon 自定义 DataView 编码实 课62、企业部署案例:企业私有云规划与案 课63、OpenStack 和其他开源云平台比较

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_PowerShell

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

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

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

打赏作者

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

抵扣说明:

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

余额充值