视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
浏览器的进程与线程的介绍 浏览器缓存机制的深入解析(图文) 浏览器事件循环的深入了解(代码示例) 浏览器与NodeJS的EventLoop异同以及部分机制 浏览器互相跳转并传递参数(附代码) 新手必看的js实现异步方法 新手入门如何学习vue 新手必看的Ajax技术组成与核心原理分析 新手必学的Ajax总结 新手如何通过Vue.js+Node.js打造个人博客 浏览器的多线程机制详解 浏览器访问路径不提示下载而显示新页面应该如何解决 浏览器html代码快速预览小工具 浏览器文件分段断点上传 新手学习vue详解 浏览器不兼容我写的代码怎么办 浏览器变动时进行自适应代码分享 浏览器调试动态js脚本的方法图解教程 浏览器记住密码后input黄色背景处理方法 华硕笔记本怎么开启uefi引导 浏览器与Node的事件循环(EventLoop)之间的区别总结 浏览器解析渲染HTML文档的过程详解(图文) 浏览器缓存策略的详细介绍(图文) 脚本是什么 alert是什么意思 新手学习PHP的一些基础知识分享 新手配置 PHP 调试环境(IIS+PHP+MYSQL) 浏览器兼容解决FF/IE6/IE7背景专用CSSHACK_经验交流 史上最强大的40多个纯CSS绘制的图形 浏览器Firefox与IE在CSS样式表中的差异 浏览器默认样式及css初始化 新手必看的css命名规则 浏览器CSSHack收集 浏览器实现移动端高性能css3动画 沙盘Sandboxie 史上最全前端面试题(含答案)-1565783227 浏览器兼容性常见-地球小子 浏览器内部工作原理-jerrylsxu 虎扯:纯css3各方向小三角的制作原理分析-小老虎的牙 浏览器hack总结详细的浏览器兼容性解决方法
浏览器输入url到发起http请求的具体过程介绍
2020-11-27 19:28:58 责编:小采
文档

本篇文章给大家带来的内容是关于浏览器输入url到发起http请求的具体过程介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

用户输入url

当用户输入url,操作系统会将输入事件传递到浏览器中,在这过程中,浏览器可能会做一些预处理,比如 Chrome 会根据历史统计来预估所输入字符对应的网站,例如输入goog,根据之前的历史发现 90% 的概率会访问「www.google.com 」,因此就会在输入回车前就马上开始建立 TCP 链接甚至渲染了。

接着是输入url之后,点击回车,这时浏览器会对 URL 进行检查,首先判断协议,如果是 http 就按照 Web 来处理,另外还会对这个 URL 进行安全检查

安全检查完成之后,在浏览器内核中会先查看缓存,然后设置 UA 等 HTTP 信息,接着调用不同平台下网络请求的方法。

注意:
浏览器和浏览器内核是不同的概念,浏览器指的是 Chrome、Firefox,而浏览器内核则是 Blink、Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则是浏览器实现的

http网络请求

通过 DNS 查询 IP;
通过 Socket 发送数据

dns查询ip

DNS,英文是Domain Name System,中文叫域名系统,是Internet的一项服务,他将域名和IP地址相互映射的一个分布式数据库

假设用户在浏览器中输入的是www.google.com,大概过程:

如果输入的是域名,则需要进行dns查询,将域名解析成ip;

进行DNS查询的主机或软件叫做DNS解析器,用户使用的工作站或电脑都属于解析器。域名解析就是利用DNS解析器得到对应IP过程,解析器会向域名服务器进行查询处理。

主要过程如下:

  1. 从浏览器缓存中查找域名www.google.com的IP地址

  2. 在浏览器缓存中没找到,就在操作系统缓存中查找,这一步中也会查找本机的hosts看看有没有对应的域名映射(当然已经缓存在系统DNS缓存中了)

  3. 在系统中也没有的话,就到你的路由器来查找,因为路由器一般也会有自己的DNS缓存

如果以上都没有找到,则继续往下向dns域名服务器查询

  • 用户电脑的解析器向LDNS(也就是Local DNS,互联网服务提供商ISP),发起域名解析请求,查询www.google.com的IP地址,这是一个递归查找过程

  • 在缓存没有命中的情况下,LDNS向根域名服务器.查询www.google.com的IP地址,LDNS的查询过程是一个迭代查询的过程

  • 根告诉LDNS,我不知道www.google.com对应的IP,但是我知道你可以问com域的授权服务器,这个域归他管

  • LDNS向com的授权服务器问www.google.com对应的IP地址

  • com告诉LDNS,我不知道www.google.com对应的IP,但是我知道你可以问google.com域的授权服务器,这个域归他管

  • LDNS向google.com的授权服务器问www.google.com对应的IP地址

  • google.com查询自己的ZONE文件(也称区域文件记录),找到了www.google.com对应的IP地址,返回给LDNS

  • LDNS本地缓存一份记录,把结果返回给用户电脑的解析器

  • 在这之后,用户电脑的解析器拿到结果后,缓存在自己操作系统DNS缓存中,同时返回给浏览器,浏览器依旧会缓存一段时间。

  • 注意,
    域名查询时有可能是经过了CDN调度器的(如果有cdn存储功能的话)

    而且,需要知道dns解析是很耗时的,因此如果解析域名过多,会让首屏加载变得过慢,可以考虑dns-prefetch优化

    tcp/ip请求

    有了 IP 地址,就可以通过 Socket API 来发送数据了,这时可以选择 TCP 或 UDP 协议。

    http本质是tcp协议。

    TCP是一种面向有连接的传输层协议。他可以保证两端(发送端和接收端)通信主机之间的通信可达。他能够处理在传输过程中丢包、传输顺序乱掉等异常情况;此外他还能有效利用宽带,缓解网络拥堵。

    建立TCP连接一开始都要经过三次握手:

    第一次握手,请求建立连接,发送端发送连接请求报文
    第二次握手,接收端收到发送端发过来的报文,可知发送端现在要建立联机。然后接收端会向发送端发送一个报文

    第三次握手,发送端收到了发送过来的报文,需要检查一下返回的内容是否是正确的;若正确的话,发送端再次发送确认包

    在TCP连接建立完成之后就可以发送HTTP请求了。

    注意
    浏览器对同一个域名有连接数限制,大部分是 6,http1.0中往往一个资源下载就需要对应一个tcp/ip请求,而像 HTTP 2.0 协议尽管只使用一个 TCP 连接来传输数据,但性能反而更好,而且还能实现请求优先级。

    下载本文
    显示全文
    专题苹果笔记本截屏的快捷键是什么苹果笔记本截屏的快捷键是什么专题iphone照片永久删除怎么恢复iphone照片永久删除怎么恢复专题废手机怎样提炼黄金废手机怎样提炼黄金专题手机卡没信号怎么回事手机卡没信号怎么回事专题电脑启动不了反复启动电脑启动不了反复启动专题iphone视频怎么转音频iphone视频怎么转音频专题qq个人文件夹中的文件被占用暂时无法登录qq个人文件夹中的文件被占用暂时无法登录专题word表格每页固定表头word表格每页固定表头专题注册微信怎么跳过辅助注册微信怎么跳过辅助专题微信收藏占用手机存储空间吗微信收藏占用手机存储空间吗专题无手机号怎么注册qq无手机号怎么注册qq专题橡胶刺鼻气味如何去除橡胶刺鼻气味如何去除专题家里的蟑螂是怎么来的家里的蟑螂是怎么来的专题怎么赶走黄鼠狼妙招怎么赶走黄鼠狼妙招专题蟑螂怎么来的蟑螂怎么来的专题相互宝怎么取消相互宝怎么取消专题相互保怎么退出相互保怎么退出专题雪是怎么形成的雪是怎么形成的专题蟑螂是怎么进入家里的蟑螂是怎么进入家里的专题洁厕灵蓝泡泡怎么用洁厕灵蓝泡泡怎么用专题如何判断面粉变质如何判断面粉变质专题房间里有老鼠用什么方法可以解决房间里有老鼠用什么方法可以解决专题家庭野生菌冷冻保存技巧家庭野生菌冷冻保存技巧专题竹荪煮多长时间熟竹荪煮多长时间熟专题老鼠胶怎么洗掉老鼠胶怎么洗掉专题怎么杀蟑螂怎么杀蟑螂专题航班号怎么看航班号怎么看专题花雕酒怎么喝花雕酒怎么喝专题板栗壳怎么好剥板栗壳怎么好剥专题烤红薯没有锡纸怎么办烤红薯没有锡纸怎么办专题