通过浏览器访问百度全过程
通过浏览器访问百度全过程
本文为笔者的学习整理总结,因此若有任何不严谨或错误之处,还望不吝指教!
本文内容:
1. DNS 域名解析
2. 向服务器请求数据
3. 涉及的协议
1. DNS 域名解析
首先,需要将 www.baidu.com
通过 DNS 解析获得百度的 IP 地址。
那什么是 DNS (Domain Name System,域名系统):
- 因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取 IP 数串。
- 通过主机名,最终得到该主机名对应的 IP 地址的过程叫做域名解析(或主机名解析)。
- DNS 协议运行在 UDP 协议之上,使用端口为 53。
- 在整个互联网体系中,约定俗称的用于标识网络上设备的地址是 IP,然而我们输入的是 DNS,因为域名更方便人们记忆。
DNS 域名解析可以简单概括为 :
浏览器缓存 -> 系统 host 缓存 -> 本地域名服务器 LDNS -> Root Server -> 主域名服务器 gTLD DNS -> Name Server (BAIDU-DNS) -> LDNS 缓存并返回 ip 地址
具体过程为:
- 浏览器首先查询浏览器的缓存,因为浏览器会按照一定的频率缓存 DNS 记录。
- 若浏览器无缓存,那么查询操作系统的 HOST 文件,查询是否有 DNS 记录。
- 若还没有命中域名,就请求本地域名服务器(LDNS),这台服务器一般在城市的某个角落,距离客户端不会很远。该服务器一般都会缓存域名查询结果,因此大部分域名解析都能在这里解析完成。
- 若LDNS还没有命中,就LDNS请求根服务器(Root Server)请求帮助,根服务器返回 LDNS 一个所查询域的主域名服务器(gTLD DNS,国际顶尖域名服务器,如.com,.cn,.org等),这里访问的是
www.baidu.com
百度,即返回 .com 的主域名服务器。 - LDNS 继续访问 gTLD Server,查找这个域名对应的 Name Server 地址,即网站注册的域名服务器 BAIDU-DNS。
- LDNS 继续访问 BAIDU-DNS Server,根据映射关系表找到目标 IP 地址,返回给 LDNS。
- LDNS 拿到 IP 地址后,对这个域名和 IP 地址进行缓存,并将 IP 地址返回给请求客户端,即我们的浏览器,至此,DNS 域名解析过程结束,拿到域名对应的 IP 地址。
用图片(图片来自 https://blog.csdn.net/m0_37812513/article/details/78775629)表示如下所示:
2. 向服务器请求数据
拿到百度的服务器地址后,浏览器开始向该 IP 地址发起 HTTP/HTTPS 会话请求,而 HTTP/HTTPS 协议皆基于 TCP 协议,因此,在进行 HTTP 请求之前,浏览器还需要与百度服务器进行三次握手,建立 TCP 连接。因此,步骤如下:
- 与服务器进行三次握手,建立 TCP 连接。
- 发出 HTTP/HTTPS 请求,由于我们访问的是
www.baidu.com
,因此请求的是百度首页。 - 服务器响应数据发送给客户端浏览器,即百度首页数据。
- 通过四次挥手,TCP 连接释放。
- 浏览器对首页数据进行解析渲染,将最终的页面效果展示给用户。
3. 涉及的协议
- HTTP/HTTPS,应用层,客户端向服务器发起 HTTP 会话请求。
- DNS,应用层,域名解析服务,解析服务器的 ip 地址。
- TCP,传输层,HTTP/HTTPS 基于 TCP 协议进行传输。
- UDP,传输层,DNS 域名解析的传输通过 UDP 协议传输。
- IP,网络层,IP 数据包传输和路由选择。
- ICMP,网络层,提供网络传输过程中的差错检测。
- ARP,网络层,将本机默认网关 ip 地址映射成物理 MAC 地址。
通过浏览器访问百度全过程相关推荐
- Android 通过 “隐式意图” 打开 系统的浏览器 访问 百度页面
在MainActivity中,通过"隐式意图"打开系统的浏览器访问百度页面: MainActivity页面: package cn.lwx.openbrowser;import a ...
- 浏览器访问百度www.baidu.com过程
浏览器访问百度www.baidu.com过程 1.先要解析出baidu.com对应的ip地址 1.先知道默认网关的mac 1.使用arp获取默认网关的mac地址 2.组 ...
- 浏览器访问百度的整个过程
浏览器访问百度的整个过程 1.主要先要解析出百度域名www.baidu.com所对应的ip地址(一个域名只对应一个IP地址,一个ip地址可对应多个域名) 1.先知道默认网关的mac地址(使用arp获取 ...
- 通过浏览器访问百度的详细过程?
互联网时代最主要的标志是什么?没错就是通过网络去解决人们的问题,那么你是如果访问网页的呢?看似简单的一个输入网站,打开网页,他的背后走了多少流程呢?来,今天我们就一起看看,我们平时访问度娘的全过程. ...
- VBS 脚本语言-利用vbs调用ie浏览器访问百度查天气实例演示
VBS 也挺强大的呢,这篇给大家演示的是调用 ie 浏览器,并用百度查出天气 注:编辑器不支持 vbs 编程,单引号后是注释哦! ' 调用ie,并打开百度Set ie = WScript.Create ...
- HTTP协议, 浏览器访问服务器, HTTP响应, HTTP请求, 访问百度
浏览器访问服务器的过程 1/用户输入网址 2/浏览器请求DNS服务器,获取域名对应的IP地址(电脑连上网之后会被自动分配一个DNS服务器,域名跟ip是以键值对的形式存在DNS服务器,会按一定规则更新, ...
- 关于chrome浏览器不能正常访问百度的解决方法
关于chrome浏览器不能正常访问百度的解决方法 最近一段时间,使用chrome的时候,经常会出现不能正常访问百度的问题,搞得我每次都想怒卸chrome,回归foxfire.以下是几种解决方案. 对于 ...
- 百度上传网站服务器地址,用浏览器访问 一个网站(www.baidu.com) 的过程
用浏览器访问 一个网站(www.baidu.com) 的过程 1.先要解析出 baidu.com 对应的 ip 地址 要先使用 arp 获取默认网关的 mac 地址 组织数据发送给默认网关(ip 还是 ...
- 踩坑日记:浏览器只能访问百度,但是百度出来的页面访问不了问题
问题: 浏览器只能访问百度,但是百度出来的页面访问不了问题 原因: 网络DNS设置有问题 解决方法: 在网络和Internet设置中找到状态,里面的网络重置,点击立即重置,重启电脑即可
最新文章
- SparkStreaming读取Socket数据
- 代码注入之远程线程篇
- 迟来的2017年计划
- 我脸都问绿了!二面竟然被问到 MySQL 时间类型 datetime、bigint 及 timestamp 的查询效率。。。
- Spring框架基础知识
- 牛客 - 走迷宫(模拟+离线)
- C语言实现封装、继承、多态
- 不要和诱惑较劲,而应离得越远越好。!!!
- 数据库左连接查询时候的技巧.
- 计算机网络期末复习资料
- atitit.软件设计模式大的总结attialx总结
- Seesharp EasyChartX 常用属性
- JDY-16 蓝牙4.2模块串口测试方法
- 完美解决桌面右键一直转圈,反应卡顿问题(重点是怎样删除workfolders)
- 如何制作一个vagrant的base box 及安装 additions
- java网络爬虫如何控制爬取的深度_Java 动手写爬虫: 二、 深度爬取
- 测试黑色背景黑色字体
- 卡巴斯基在桌面窗口管理器中发现零日漏洞
- ArrayList集合类实现的RandomAccess空接口有何用?
- vscode之git配置
热门文章
- Unity中使用AVproVideo播放全景视频(HTCVIVE)
- 计算机毕业设计Java仓库管理系统(源码+系统+mysql数据库+lw文档
- 日本語を勉強する日記 十八回目
- 模仿天猫实战【SSM】——总结
- 【转载】缓存策略-Cache aside旁路缓存
- python 批量降采样
- QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
- intValue、parseInt、valueOf 方法区别及其使
- 入门pandas—使用pandas实现excel的vlookup功能
- python 蓝桥杯 门牌制作