数码网站建设,电脑编程教学入门教程,网站开发ceac证,枣庄公司做网站当用户输入url#xff0c;操作系统会将输入事件传递到浏览器中#xff0c;在这过程中#xff0c;浏览器可能会做一些预处理#xff0c;比如 Chrome 会根据历史统计来预估所输入字符对应的网站#xff0c;例如输入goog#xff0c;根据之前的历史发现 90% 的概率会访问「ww…
当用户输入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过程解析器会向域名服务器进行查询处理。
主要过程如下 从浏览器缓存中查找域名www.google.com的IP地址 在浏览器缓存中没找到就在操作系统缓存中查找这一步中也会查找本机的hosts看看有没有对应的域名映射(当然已经缓存在系统DNS缓存中了) 在系统中也没有的话就到你的路由器来查找因为路由器一般也会有自己的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请求了。
注意
浏览器对同一个域名有连接数限制大部分是 6http1.0中往往一个资源下载就需要对应一个tcp/ip请求而像 HTTP 2.0 协议尽管只使用一个 TCP 连接来传输数据但性能反而更好而且还能实现请求优先级。