通过浏览器访问百度全过程

本文为笔者的学习整理总结,因此若有任何不严谨或错误之处,还望不吝指教!

本文内容:

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 地址

具体过程为:

  1. 浏览器首先查询浏览器的缓存,因为浏览器会按照一定的频率缓存 DNS 记录。
  2. 若浏览器无缓存,那么查询操作系统的 HOST 文件,查询是否有 DNS 记录。
  3. 若还没有命中域名,就请求本地域名服务器(LDNS),这台服务器一般在城市的某个角落,距离客户端不会很远。该服务器一般都会缓存域名查询结果,因此大部分域名解析都能在这里解析完成。
  4. 若LDNS还没有命中,就LDNS请求根服务器(Root Server)请求帮助,根服务器返回 LDNS 一个所查询域的主域名服务器(gTLD DNS,国际顶尖域名服务器,如.com,.cn,.org等),这里访问的是 www.baidu.com 百度,即返回 .com 的主域名服务器。
  5. LDNS 继续访问 gTLD Server,查找这个域名对应的 Name Server 地址,即网站注册的域名服务器 BAIDU-DNS。
  6. LDNS 继续访问 BAIDU-DNS Server,根据映射关系表找到目标 IP 地址,返回给 LDNS。
  7. LDNS 拿到 IP 地址后,对这个域名和 IP 地址进行缓存,并将 IP 地址返回给请求客户端,即我们的浏览器,至此,DNS 域名解析过程结束,拿到域名对应的 IP 地址。

用图片(图片来自 https://blog.csdn.net/m0_37812513/article/details/78775629)表示如下所示:

2. 向服务器请求数据

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

  1. 与服务器进行三次握手,建立 TCP 连接。
  2. 发出 HTTP/HTTPS 请求,由于我们访问的是 www.baidu.com ,因此请求的是百度首页。
  3. 服务器响应数据发送给客户端浏览器,即百度首页数据。
  4. 通过四次挥手,TCP 连接释放。
  5. 浏览器对首页数据进行解析渲染,将最终的页面效果展示给用户。

3. 涉及的协议

  • HTTP/HTTPS,应用层,客户端向服务器发起 HTTP 会话请求。
  • DNS,应用层,域名解析服务,解析服务器的 ip 地址。
  • TCP,传输层,HTTP/HTTPS 基于 TCP 协议进行传输。
  • UDP,传输层,DNS 域名解析的传输通过 UDP 协议传输。
  • IP,网络层,IP 数据包传输和路由选择。
  • ICMP,网络层,提供网络传输过程中的差错检测。
  • ARP,网络层,将本机默认网关 ip 地址映射成物理 MAC 地址。

通过浏览器访问百度全过程相关推荐

  1. Android 通过 “隐式意图” 打开 系统的浏览器 访问 百度页面

    在MainActivity中,通过"隐式意图"打开系统的浏览器访问百度页面: MainActivity页面: package cn.lwx.openbrowser;import a ...

  2. 浏览器访问百度www.baidu.com过程

    浏览器访问百度www.baidu.com过程 1.先要解析出baidu.com对应的ip地址     1.先知道默认网关的mac         1.使用arp获取默认网关的mac地址     2.组 ...

  3. 浏览器访问百度的整个过程

    浏览器访问百度的整个过程 1.主要先要解析出百度域名www.baidu.com所对应的ip地址(一个域名只对应一个IP地址,一个ip地址可对应多个域名) 1.先知道默认网关的mac地址(使用arp获取 ...

  4. 通过浏览器访问百度的详细过程?

    互联网时代最主要的标志是什么?没错就是通过网络去解决人们的问题,那么你是如果访问网页的呢?看似简单的一个输入网站,打开网页,他的背后走了多少流程呢?来,今天我们就一起看看,我们平时访问度娘的全过程. ...

  5. VBS 脚本语言-利用vbs调用ie浏览器访问百度查天气实例演示

    VBS 也挺强大的呢,这篇给大家演示的是调用 ie 浏览器,并用百度查出天气 注:编辑器不支持 vbs 编程,单引号后是注释哦! ' 调用ie,并打开百度Set ie = WScript.Create ...

  6. HTTP协议, 浏览器访问服务器, HTTP响应, HTTP请求, 访问百度

    浏览器访问服务器的过程 1/用户输入网址 2/浏览器请求DNS服务器,获取域名对应的IP地址(电脑连上网之后会被自动分配一个DNS服务器,域名跟ip是以键值对的形式存在DNS服务器,会按一定规则更新, ...

  7. 关于chrome浏览器不能正常访问百度的解决方法

    关于chrome浏览器不能正常访问百度的解决方法 最近一段时间,使用chrome的时候,经常会出现不能正常访问百度的问题,搞得我每次都想怒卸chrome,回归foxfire.以下是几种解决方案. 对于 ...

  8. 百度上传网站服务器地址,用浏览器访问 一个网站(www.baidu.com) 的过程

    用浏览器访问 一个网站(www.baidu.com) 的过程 1.先要解析出 baidu.com 对应的 ip 地址 要先使用 arp 获取默认网关的 mac 地址 组织数据发送给默认网关(ip 还是 ...

  9. 踩坑日记:浏览器只能访问百度,但是百度出来的页面访问不了问题

    问题: 浏览器只能访问百度,但是百度出来的页面访问不了问题 原因: 网络DNS设置有问题 解决方法: 在网络和Internet设置中找到状态,里面的网络重置,点击立即重置,重启电脑即可

最新文章

  1. SparkStreaming读取Socket数据
  2. 代码注入之远程线程篇
  3. 迟来的2017年计划
  4. 我脸都问绿了!二面竟然被问到 MySQL 时间类型 datetime、bigint 及 timestamp 的查询效率。。。
  5. Spring框架基础知识
  6. 牛客 - 走迷宫(模拟+离线)
  7. C语言实现封装、继承、多态
  8. 不要和诱惑较劲,而应离得越远越好。!!!
  9. 数据库左连接查询时候的技巧.
  10. 计算机网络期末复习资料
  11. atitit.软件设计模式大的总结attialx总结
  12. Seesharp EasyChartX 常用属性
  13. JDY-16 蓝牙4.2模块串口测试方法
  14. 完美解决桌面右键一直转圈,反应卡顿问题(重点是怎样删除workfolders)
  15. 如何制作一个vagrant的base box 及安装 additions
  16. java网络爬虫如何控制爬取的深度_Java 动手写爬虫: 二、 深度爬取
  17. 测试黑色背景黑色字体
  18. 卡巴斯基在桌面窗口管理器中发现零日漏洞
  19. ArrayList集合类实现的RandomAccess空接口有何用?
  20. vscode之git配置

热门文章

  1. Unity中使用AVproVideo播放全景视频(HTCVIVE)
  2. 计算机毕业设计Java仓库管理系统(源码+系统+mysql数据库+lw文档
  3. 日本語を勉強する日記 十八回目
  4. 模仿天猫实战【SSM】——总结
  5. 【转载】缓存策略-Cache aside旁路缓存
  6. python 批量降采样
  7. QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
  8. intValue、parseInt、valueOf 方法区别及其使
  9. 入门pandas—使用pandas实现excel的vlookup功能
  10. python 蓝桥杯 门牌制作