IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> URL请求过程 -> 正文阅读

[系统运维]URL请求过程

结论:
1、首先请求DNS解析域名、解析为ip地址;
2、根据这个地址找到互联网上对应的服务器,向这个服务器发起一个请求,3、由服务器决定返回默认的数据资源给访问的用户;
4、浏览器根据数据渲染页面;

DNS域名解析过程

1、当用户在浏览器中输入域名并按回车键时,浏览器会检查缓存中该域名是否为对应解析的IP地址,如果缓存中有,解析过程将结束。
浏览器缓存大小有限制,而且也有时间限制,通常是几分钟到几个小时,这个时间限制是由域名的TTL属性来设置的。
2、如果用户的浏览器缓存没有,浏览器将缓存查找操作系统缓存是否有DNS域结果。其实操作系统也可以有一个域名解析的过程,在Windows中可以用C: Windows/System32/drivers/etc/hosts文件来设置,在Linux中是etc/hosts文件,可以取任意DNS到任意IP地址进行访问。如果这里的IP地址对应指定了域名,浏览器会先使用该IP地址。
例如,当我们在测试时可以将DNS发送到一个测试服务器,这样不需要更改任何代码就可以测试将业务逻辑代码发送到一个单独的服务器是否正确。因为本地的DNS纪律,所以黑客可以通过修改你的DNS来指定特定的DNS的IP地址吧,导致域名被劫持。因而通常情况下这个文件是只读的。
3、当浏览器缓存和操作系统上都没有时,进行域名服务器上的域名请求,DNS会在各个域名服务器上逐层向上查找,直到找到域名。域名服务器又分为:
1)、主域名服务器
负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。
2)、辅助域名服务器
当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从另外的一台主域名服务器中复制过来的,是不可以修改的。
3)、缓存域名服务器
从某个远程服务器取得每次域名服务器的查询回答,一旦取得一个答案就将它放在高速缓存中,以后查询相同的信息就用高速缓存中的数据回答,缓存域名服务器不是权威的域名服务器,因为它提供的信息都是间接信息。
4)、转发域名服务器
负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

4、域名解析完成后,会在用户的本地机器和本地域名服务器上产生缓存,在Java应用中,JVM也会缓存DNS解析结果。以InteAddress类形式存在。在机器上使用ipconfig/flushdns可以刷新windows机器上的缓存,linux是etc/init.d/nscd restart;JVM则需要在JAVA_HOME\lib\security\java.security文件中配置。

如何发起一个HTTP请求

当下来说,发起Http请求有很多工具包,比如HttpClient。而在浏览器上,打个url就行,在linux上使用curl命令+url也可快速发起一个Http请求。
请求发起的具体过程:
如果是HTTP2.0,发起一个请求需要首先由TCP发起一个连接请求,通过三次握手来实现,然后进行数据包的发送。
即在第三次握手时可以携带数据发送。
HTTP3.0使用QUIC来建立连接,Qick Udp Internet Connection简单来说就是
UDP的包装版,利用了UDP的连接快的特性,再加上应用层的包装,使整个协议拥有TCP+TLS的优点。基本连接采用DH密钥交换算法连接,具体连接过程简介如下:
1、首次连接时,客户端发送 Hello 给服务端,用于请求连接;
2、服务端生成 两个固定参数和一个随机参数,根据三个参数算出服务器密钥A,然后将固定参数和服务器密钥A放到 Server Config 中再发送 Rejection 消息给客户端;
3、客户端接收到数据后,自己再生成随机参数b,根据两个固定参数和随机参数b算出客户端密钥B,根据固定参数和服务器密钥A算出交易密钥K。B和K算好后,客户端会用交易密钥K加密 HTTP 数据,连同客户端密钥B一起发送给服务端;
4、服务端接收到客户端密钥B后,根据参数生成与客户端同样的密钥B,再用这密钥解密收到的 HTTP 数据。为了进一步的安全(前向安全性),服务端会更新自己的随机参数数 a 和公钥,再生成新的密钥 S,然后把公钥通过 Server Hello 发送给客户端。连同 Server Hello 消息,还有 HTTP 返回数据;
5、客户端收到 Server Hello 后,生成与服务端一致的新密钥 S,后面的传输都使用 S 加密。
这样,QUIC 从请求连接到正式接发 HTTP 数据一共花了 1 RTT,这 1 个 RTT 主要是为了获取 Server Config,后面的连接如果客户端缓存了 Server Config,那么就可以直接发送 HTTP 数据,实现 0 RTT 建立连接。从而节省时间。

HTTP的数据格式:一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
请求行分为三个部分:请求方法、请求地址和协议版本。
请求头部由关键字/值对组成,请求头部用于通知服务器有关于客户端请求的信息;

服务器响应数据

当服务器收到请求后,取决于web应用架构,可能有多个服务器,常见的通过反向代理、负载均衡在加上网关处理就可以最终指定由那个服务器来响应请求。服务器响应过程;
1、首先收到的请求先要进行一个解析,通过对于Http请求的划分,可以得到请求的具体数据;
2、对于请求的数据也可能存在不同的地方,常见的静态资源和动态资源的划分,使得需要到不同地方去实现请求的响应,最终确定好由什么来处理请求,最后可能被划分为多个请求来进行多次处理。
3、请求处理完成后,服务器会构建Http响应包,格式同请求包类似;
4、发送完响应包,可能在服务器上需要做一些其他的处理,比如日志记录。

浏览器渲染数据

当浏览器接受到数据包时,如何从这里面拿到需要的数据;

1、对于不同的浏览器,首先确定他们不同的渲染引擎,负责对网页语法(如HTML、CSS、JavaScript等)的解释并显示网页。Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome使用webkit内核。
2、引擎选择结束后,进行一个Dom树和Render树的构建和布局,简单来说就是Html的渲染;当遇到CSS文件,发出CSS文件的请求,服务器返回这个CSS文件; 当遇到Javascript代码,进行代码执行; 偶尔遇到某些操作需要进行重新渲染。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:59:45  更:2021-11-12 20:01:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:31:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码