输入一个网址的时候,后台到底发生了一件件什么样的事

当用户在浏览器中输入一个网址时,后台会经历如下过程:

  1. DNS解析

首先,浏览器需要将用户输入的网址转化为一个IP地址,这个过程称为DNS解析。浏览器将会向本地DNS服务器发出请求,本地DNS服务器可能会向上级DNS服务器继续发出请求,直到最终找到负责该域名的DNS服务器,并从中获取对应IP地址。如果本地DNS服务器中不存在对应域名的IP地址,将会继续向上级DNS服务器发送请求。

示例:当用户输入www.baidu.com时,浏览器将会向本地DNS服务器发送请求,如果本地DNS服务器中不存在www.baidu.com对应的IP地址,就会向上级DNS服务器发送请求。最终经过多次请求后,将会得到一个IP地址,如220.181.57.217。

  1. TCP连接

在得到IP地址后,浏览器需要与Web服务器建立TCP连接。这个过程称为“三次握手”,即:

  • 浏览器向Web服务器发送一条带SYN标志的请求报文,表示请求连接;
  • Web服务器回应带SYN/ACK标志的应答报文,表示连接请求被接受;
  • 浏览器回应一条带ACK标志的请求报文,表示连接建立成功。

示例:浏览器向IP地址为220.181.57.217的Web服务器发送请求,经过三次握手后,连接建立成功。

  1. 发送HTTP请求

一旦TCP连接建立成功,浏览器将会向Web服务器发送HTTP请求。HTTP请求由请求头和请求体两部分组成,请求头中包含了请求类型、URL、协议版本等信息,请求体中包含了表单数据、查询参数等具体信息。

示例:浏览器向Web服务器发送一条HTTP GET请求,请求URL为http://www.baidu.com/。

  1. 服务器处理请求并响应

Web服务器在接收到请求后,会根据请求头中的信息进行处理。服务器可以直接从文件系统中取出文件响应,或者将请求交给一个处理程序进行处理后再响应。服务器响应一般由响应头和响应体两部分组成,响应头中包含了状态码、文档类型等信息,响应体中包含了具体的响应文本。

示例:Web服务器接收到浏览器的GET请求,查找网站目录中的对应文件,将文件内容作为HTTP response返回给浏览器。

  1. 渲染页面

浏览器在接收到Web服务器的响应后,会将响应文本解析为DOM树,并从中构建渲染树,之后将渲染树中的节点进行布局,并将它们渲染到浏览器窗口中。

示例:浏览器将Web服务器响应的HTML文档解析为DOM树,并对DOM树进行渲染,最终呈现出完整的网页。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:输入一个网址的时候,后台到底发生了一件件什么样的事 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • springboot项目如何防止XSS攻击

    在SpringBoot项目中防止XSS攻击可以采取以下措施: 使用HTML转义库 在应用中使用HTML转义库比如jsoup、owasp-esapi、htmlentities等,可以过滤掉HTML标签并且转义掉敏感字符,这样可以有效避免XSS攻击。 例如,在Spring Boot项目中,我们可以使用前面提到的jsoup库来进行HTML转义: String sa…

    JavaScript 2023年6月11日
    00
  • JavaScript 过滤关键字

    下面是关于“JavaScript 过滤关键字”的完整攻略。 什么是JavaScript过滤关键字? JavaScript过滤关键字是指通过编程技术对指定的文本进行匹配,过滤掉所包含的不允许出现的关键字,通常用于过滤用户提交的数据,防止网站受到攻击或者输入非法数据。 如何实现JavaScript过滤关键字? 1.使用JavaScript的字符串方法 JavaS…

    JavaScript 2023年5月28日
    00
  • AngularJS实现ajax请求的方法

    下面就是AngularJS实现ajax请求的方法的完整攻略: 1. 准备工作 在使用AngularJS实现ajax请求之前,我们需要引入AngularJS库文件,并在html文件中定义一个<div>元素作为AngularJS的应用入口,并在该元素上定义ng-app指令。 <!DOCTYPE html> <html ng-app=…

    JavaScript 2023年6月11日
    00
  • jQuery Ajax 全局调用封装实例代码详解

    jQuery Ajax全局调用封装实例代码详解 在前端开发中,Ajax作为异步通信技术已经得到了广泛的应用。而通过jQuery库封装的Ajax则在开发中变得更加方便,让我们更加容易地处理数据请求和响应。本文将会详细介绍如何将jQuery的Ajax进行全局封装调用,以及如何实现Ajax的参数传递和数据处理。 前置知识 在进行本文讲解前,需要了解一些JavaSc…

    JavaScript 2023年6月11日
    00
  • JavaScript 实现模态对话框 源代码大全

    让我给你详细讲解一下“JavaScript 实现模态对话框 源代码大全”的完整攻略。 什么是模态对话框? 模态对话框是一种常用的弹窗提示框,它可以在网页中弹出提示框,并阻止用户对页面的其他操作,直到确定或取消该对话框。 实现模态对话框的方法 实现模态对话框需要使用JavaScript编写脚本。一般来说,实现模态对话框的方法有两种: 方法一:使用CSS实现 我…

    JavaScript 2023年6月11日
    00
  • JavaScript内存管理介绍

    接下来我将分享关于JavaScript内存管理的完整攻略,包括内存分配、垃圾回收和常见的内存泄漏问题。 什么是JavaScript内存管理 JavaScript内存管理是指控制内存分配和垃圾回收的过程。JavaScript运行时环境会自动为每个脚本分配一定的内存,然后在代码执行期间将变量、函数和对象等存储在分配的内存空间中。当不再需要这些变量、函数和对象时,…

    JavaScript 2023年6月10日
    00
  • ES6如何将 Set 转化为数组示例详解

    当需要将ES6 Set类型转化成数组进行处理时,我们可以使用一些内置的方法来完成这个过程。 使用Array.from()方法 const mySet = new Set(["hello", "world"]); const myArr = Array.from(mySet); console.log(myArr); 在…

    JavaScript 2023年5月27日
    00
  • js导出txt示例代码

    JS导出文本文件是一种非常常见的操作,本文将详细讲解JS导出Txt示例的完整攻略。 具体步骤 第一步:准备要导出的文本内容 在JS中,我们需要定义一些变量来存储要导出的文本内容。这些变量可以是任何数据类型,比如字符串、数组等。 let textToExport = "这是一段要导出的文本内容"; 第二步:创建要导出的链接 在JS中,我们使…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部