在浏览器中输入 url 地址显示主页的过程

用户在浏览器中输入URL,例如http为协议,www.baidu.com为域名。

  1. DNS 解析:获取域名对应IP

  2. TCP 连接:

  3. 发送 HTTP 请求:向web服务器发送一个Http请求

  4. 服务器处理请求并返回 HTTP 报文:

  5. 浏览器解析渲染页面:

  6. 连接结束

DNS解析流程

  1. 输入网址回车时,浏览器首先查询浏览器的缓存,如果没有找到就去查询本地的DNS存储和hosts文件,如果有与域名对应的IP则直接通过这个IP访问网络服务器

  2. 如果本地的DNS缓存或hostsw文件未找到 浏览器会发出一个DNS请求到本地的DNS服务器,然后查找DNS缓存中是否有

  3. 若没有 本地DNS服务器 就会把请求发送给根域名服务器

  4. 因为DNS根服务器没有域名与IP地址的对应关系,根域名服务器告诉本地DNS服务器,可以继续去哪查找的域服务器的地址(.com-> baidu -> www )

  5. 向域服务器发送请求,域服务器收到请求后不会返回域名和IP地址。而是告诉本地DNS服务器 域名的解析服务器的地址

  6. 向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应的关系,本地DNS不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中

TCP 连接 :三次握手

三次握手的目的是建立可靠的通信通道。确定双方确认自己与对方的发送与接收是正常的。

需要确定 自己发送正常 接收正常且对方发送正常,接收正常

第一次是接收方能确认自己接受正常 第二次 发送方确认自己发送正常且接受正常,第三次接受方才能确认自己发送正常

发起HTTP请求

当用户在浏览器的地址栏中输入一个 URL 并按回车键之后浏览器会想HTTP服务器发送一个HTTP请求,请求分为“get”,“post”两种方法

客户端的HTTP请求分为三个部分:

 

 请求行:post方法时是请求方法+请求域名+协议版本号 当时get方式时请求参数会放在域名后
请求头:Host为主机+端口号
请求体:当请求方法是post的时候会有请求体用于显示提交参数
请求头中是本次请求的一些额外的参数信息例如告知服务器当前请求的来源,连接状态,客户端浏览器所支持的语言,还有保存在客户端的一些cookie信息
 

请求响应

响应行:请求方法+ Http 版本+状态码+消息

响应头:和响应行一样也是响应的额外参数,服务器的相关信息,是否缓存是否定使刷新之类的

响应体:发送HTML数据

HTTP请求方法

Get用户获取资源,post用于传输实体主体;当使用额外参数时,get的参数时直接出现在URL中,而Post则存储在实体主体中;虽然如此但是对于服务端来说get方法才是安全的;并且get方法本身是可缓存的,但是post在大多数情况下是不可缓存的;因为缓存通常是在查询请求的时候无需更新服务端数据的请求。

浏览器解析HTML

浏览器会一个一个的响应出用户请求的页面,这个页面里面有表格,有图片,有文字,也可能有视频等等 。
布局:通过计算得到每个渲染对象在可视区域中的具体位置信息(大小和位置),这是一个递归的过程。 绘制:将计算好的每个像素点信息绘制在屏幕。

关闭TCP连接:四次挥手

同样的机制 建立链接和断开链接需要握手的次数却不同。因为 在建立连接时,B的ACK和SYN会一起发送回A , 而在断开链接时因为B发送ACK之后还要做其他处理后才能返回FIN,,因此将两步拆开。

  • 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送(半关闭

  • 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加 1

  • 服务器-关闭与客户端的连接,发送一个 FIN 给客户端

  • 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加 1(服务端收到确认报文就全关闭

  • 客户端等到2MSL后全关闭  

Time-wait过多解决方法: HTTP 请求的头部, connection 设置为 keep-alive; 将短连接改为长连接减少挥手次数

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浏览器输入URL显示页面的过程大致可以分为以下几个步骤: 1. DNS解析:浏览器首先会解析URL的域名部分,将其转换为对应的IP地址。它会先检查浏览器缓存是否存在该域名的解析结果,如果没有,就会向本地操作系统或者网络的DNS服务器发送查询请求,获取对应的IP地址。 2. 建立TCP连接:一旦获取到目标服务器的IP地址浏览器会通过TCP/IP协议与服务器建立连接。这个过程浏览器会与服务器进行三次握手,确保双方能够正常通信。 3. 发送HTTP请求:建立TCP连接后,浏览器会发送HTTP请求给服务器。请求包含了请求行(包括请求方法、URL路径和HTTP协议版本)、请求头(包含一些附加信息,如User-Agent、Cookie等)以及请求体(一般用于POST请求,传递数据)。 4. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理。处理过程可能包括查询数据库、读取文件等一系列操作,最终生成需要返回给浏览器的数据。 5. 接收响应并渲染页面:服务器处理完请求后,会将生成的响应数据封装成HTTP响应,并发送给浏览器浏览器接收到响应后,会根据响应头的信息判断响应的内容类型,然后对内容进行解析和渲染。对于HTML页面,浏览器会解析HTML结构、加载CSS和JavaScript文件,并根据这些文件渲染出最终的页面。 6. 关闭TCP连接:页面渲染完毕后,浏览器会关闭与服务器的TCP连接。如果页面存在其他资源(如图片、样式表、脚本等),浏览器会继续发送相应的HTTP请求获取这些资源,并进行相应的渲染。 这就是浏览器输入URL显示页面的基本过程。其涉及到的具体细节和技术可以更加深入和复杂,但以上步骤概括了整个过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值