流程如下:
域名解析
发起TCP的3次握手
建立TCP连接后发起http请求
服务器响应htp请求
浏览器解析htm代码,并请求html代码中的资源(如js、css、图片等)
浏览器对页面进行渲染呈现给用户

1.域名解析–DNS解析
DNS解析就是一个递归查询过程:
比如域名:www.baidu.com.,
1.浏览器搜索自己的DNS缓存(维护一张域名与IP地址的对应表)

2.若没有,则搜索操作系统中的DNS缓存(维护一张域名与IP地址的对应表)

3.若没有,则搜索操作系统的hosts文件(Windows环境下,维护一张域名与IP地址的对应表,位置一般在 C:\Windows\System32\drivers\etc\hosts)

4.若没有,则操作系统将域名发送至 本地域名服务器- -(递归查询方式),本地域名服务器 查询自己的DNS缓存,查找成功则返回结果,否则,(以下是迭代查询方式)
本地域名服务器 向根域名服务器(其虽然没有每个域名的具体信息,但存储了负责每个域,如com、net、org等的解析的顶级域名服务器的地址)发起请求,此处,根域名服务器返回com域的顶级域名服务器的地址
本地域名服务器 向com域的顶级域名服务器发起请求,返回baidu.com权限域名服务器(权限域名服务器,用来保存该区中的所有主机域名到IP地址的映射)地址

5.本地域名服务器 向baidu.com权限域名服务器发起请求,得到www.baidu.com的IP地址

6.本地域名服务器 将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来

7.操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来

至此,浏览器已经得到了域名对应的IP地址

2.三次握手建立连接

第一次握手
客户端发送syn包的数据包到服务器,其中SYN标志位为1, ACK=0,发送顺序号seq=i(随机int)并进入SYN_SEND状态,等待服务器确认;
问题:此时如果报文丢失发送不到对端会如何?
答:C端发送报文之后会启动一个定时器,在超时之后未收到S端的确认,会再次发送SYN请求,每次尝试的时间会是第一次的二倍,如果总的总尝试时间为75秒,此次建立链接失败。
第二次握手
服务器收到syn包,发现SYN=1,表示客户端请求连接,必须确认客户的SYN(将SYN和ACK置为1应答,表示同意连接),发送确认包ACK包(ack=i+1表示i之前的已经收到,期望接收下一个字节数据),同时自己也发送一个SYN包(seq=j 随机产生),即SYN+ACK包,此时服务器进入SYN_RECV状态。
问题:如果第二次报文丢失怎么办?
在发送完ACK+SYN报文后会启动一个定时器,超时没有收到ACK确认,会再次发送,会进行多次重试。超时时间依旧每次翻倍,重试次数可设置。
第三次握手
客户端收到服务器的SYN+ACK包,首先进行检查(ack是否为i+1, ACK是否为1),如果正确向服务器发送确认包ACK(ack=j+1),此包发送完毕;服务器进行检查(ack是否为j+1, ACK是否为1),如果正确,客户端和服务器进入ESTABLISHED状态,完成三次握手
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。

3.建立TCP连接后发起http请求
1、http协议
HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求,也就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据

4.服务器收到请求并响应HTTP请求
HTTP相应报文三部分:状态码、响应报头、响应报文
状态码

响应报头
常见的响应报头字段有: Server, Connection…

响应报文
服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分

5.浏览器对页面进行渲染呈现给用户
浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

输入url,一次请求流程相关推荐

  1. ajax,HTTP原理 : 网络传输协议,网页从输入url到渲染的流程,函数防抖和节流

    一. 前后端交互流程 1.服务器 : 提供某种服务器的机器(计算机) qq音乐:音频服务器 , 迅雷:文件服务器 , qq邮箱:邮件服务器,爱奇艺:视频服务器,谷歌:web服务器 2. 前端 访问 服 ...

  2. Ajax 详解 网页从输入url到渲染的流程 同步 异步 你想要的全都有

    1  前后端交互流程 1.1   了解服务器      提供某种服务器的机器(计算机) 1.2    了解前端         访问 服务器的几种方式 直接在地址栏输入网址            网页 ...

  3. 页面渲染原理,从输入url到页面展示流程

    浏览器从url到页面展示到用户面前,到底发生了什么?这是一个很常见的前端面试问题,我结合自己的知识储备来谈一谈.首先,我认为该流程应该分为三部分,导航阶段.准备渲染阶段和渲染阶段. 导航阶段 首先浏览 ...

  4. 浏览器输入url后怎样请求服务的

    卑微小吴励志写博客第12天. 当在浏览器中输入一个网址后的处理过程 1.浏览器根据域名查找域名对应的服务器IP地址. 根据域名查询IP地址的顺序如下: 浏览器DNS >>> 操作系统 ...

  5. 网页从输入url到呈现页面流程

    1.DNS域名解析:把域名解析成 ip地址 2.TCP三次握手:可靠的传输协议 (1) 浏览器发给服务器:在吗?能听到我说话吗?(浏览器发送ok) (2)服务器发给浏览器,我在,听到了. 你能听到我说 ...

  6. 从浏览器输入url到页面加载(六)前端必须了解的路由器和光纤小知识

    前言 上一章我们说到了数据包在网线中的故事,说到了双绞线,还说到了麻花.这一章继续沿着这条线路往下走,说一些和cdn以及路由器相关,运营商以及光纤相关的小知识,前端同学应该了解一下的 目录 前言 1. ...

  7. html将页面分成三块_导航渲染流程你真的知道从输入URL到页面展示发生了什么吗?(内附思维导图)...

    导航渲染流程 通过这篇文章当你被问到从URL输入到页面展示都发生了什么的时候,基本都能对答如流,甚至可以一直深入的说,说到面试官闭麦哈哈哈~ 以下是本文的思维导图,直接拿图「点个赞」再走吧 ~ 求求了 ...

  8. 浏览器 重定向次数限制_在浏览器输入URL到页面渲染的整个流程是如何的?都有哪些步骤?...

    问题:输入 URL 到页面渲染的整个流程 DNS解析 TCP握手 TLS握手 浏览器开始解析文件 构建 DOM 树.构建 CSSOM 树.解析JS 生成 Render 树 调用 GPU 绘制,合成图层 ...

  9. 从浏览器地址栏输入url到请求返回发生了什么?

    1.进行域名解析.根据DNS进行IP查找 URL 常见的RUL是这样的:http://www.baidu.com,这个域名由三部分组成:协议名.域名.端口号. 除此之外URL还会包含一些路径.查询和其 ...

  10. 从浏览器地址栏输入url到请求返回发生了什么(深问)

    问题: 从浏览器地址栏输入url到请求返回发生了什么 你一看这种烂掉牙的问题,小case,但996面试大佬由此延展的问题已经远远超越了这个问题本身了,不信你就接着看. 我回答了首先会进行 url 解析 ...

最新文章

  1. python【数据结构与算法】KMP算法模板(我吐了!)
  2. 【Oracle 学习笔记】Day 1 常用函数整理(转换、DeCode),表的外键
  3. 微软职位内部推荐-Senior SW Engineer for Application Ecosystem
  4. 如何用Veripacks替换构建模块
  5. 三维数据平滑处理_VTK图像处理(二)--vtkPolyData数据处理
  6. ADO.NET_05_OracleDataReader
  7. LeetCode(283)——移动零(JavaScript)
  8. 怎么用python做我的世界皮肤_我的世界换肤教程 皮肤的制作使用
  9. 数据挖掘原理与算法_【干货】UIUC韩家炜老师2020年新课:CS512 数据挖掘:原理与算法,附PPT...
  10. 数据分析引擎之Kylin学习笔记
  11. linux CFI接口,Linux系统下的MTD/CFI驱动介绍
  12. matlab在常微分方程的应用,MATLAB在求解常微分方程中的应用
  13. 360 2019校招笔试题第一题 表面积
  14. 软件版本的GA 代表什么意思?
  15. 零基础怎么学习平面设计*
  16. portal服务器信息超时,某局点iMC-EIA Portal认证提示“向Portal Server发送请求超时”经典案例...
  17. 曲面的渐近方向和共轭方向、主方向、曲率线网
  18. java mye_JAVA环境搭建之MyEclipse10+jdk1.8+tomcat8环境搭建详解
  19. 语言模型(马尔可夫模型,n元语法)
  20. WPF DataGrid 获取选中 一行 或者 多行

热门文章

  1. HTML5绘制上海地铁线路图
  2. WaitForSingleObject SetEvent
  3. Google推出免费DNS服务
  4. mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
  5. mysql聚合函数总结
  6. 公钥密码学中的素数以及对称加密
  7. paho架构_paho.mqtt.android代码逐步分析(三)
  8. Zebra斑马LI3678一维超耐用型无线扫描器
  9. 电脑屏幕花屏问题诊断及解决方案 --总结
  10. 银行卡又入账1579元,我错怪老东家了