谷歌浏览器未发送任何数据_浏览器是怎样向网卡发送数据的

每日前端夜话第352篇

作者:疯狂的技术宅

229d51c34934a6b884dd991404d49b7c.gif

正文共:3400 字

预计阅读时间:10 分钟

bdc16e11dc7ae65b6d7cf98f28087e14.png

从浏览器到浏览器内核

当我们在浏览器的地址栏中输入地址并回车后,浏览器可能会做一些预处理,比如 Chrome 会根据历史统计来预估所输入字符对应的网站,比如输入了“bai”,根据之前的历史发现会有很大的概率会访问 www.baidu.com ,因此就会在输入回车前就马上开始建立 TCP 链接甚至渲染了,这里面还有很多其它策略,感兴趣的同学推荐阅读 High Performance Networking in Chrome(http://aosabook.org/en/posa/high-performance-networking-in-chrome.html)。

接着是输入 URL 后的“回车”,这时浏览器会对 URL 进行检查,首先判断协议,如果是 http 就按照 Web 来处理,另外还会对这个 URL 进行安全检查,然后直接调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法。

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

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

发送HTTP 请求

因为网络的底层实现与内核相关,所以在这里需要针对不同平台进行处理,从应用层角度来看主要是做两件事情:

  1. 通过 DNS 查询 IP

  2. 通过 Socket 发送数据

接下来就分别介绍这两方面的内容。

DNS 查询

DNS 查询其实是基于 UDP 来实现的,这里我们通过一个具体例子来了解它的查找过程,以下是使用 dig fex.baidu.com +trace 命令得到的结果:

 1> dig fex.baidu.com +trace
2
3; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> fex.baidu.com +trace
4;; global options: +cmd
5.            11950   IN  NS  f.root-servers.net.
6.            11950   IN  NS  k.root-servers.net.
7.            11950   IN  NS  l.root-servers.net.
8.            11950   IN  NS  m.root-servers.net.
9.            11950   IN  NS  b.root-servers.net.
10.            11950   IN  NS  c.root-servers.net.
11.            11950   IN  NS  e.root-servers.net.
12.            11950   IN  NS  a.root-servers.net.
13.            11950   IN  NS  g.root-servers.net.
14.            11950   IN  NS  d.root-servers.net.
15.            11950   IN  NS  i.root-servers.net.
16.            11950   IN  NS  h.root-servers.net.
17.            11950   IN  NS  j.root-servers.net.
18;; Received 251 bytes from 192.168.0.1#53(192.168.0.1) in 12 ms
19
20com.            172800  IN  NS  a.gtld-servers.net.
21c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值