计算机网络—URL到显示的过程HttpHttps长连接短连接
Posted 丢丢diu丢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络—URL到显示的过程HttpHttps长连接短连接相关的知识,希望对你有一定的参考价值。
1.在浏览器中输⼊ URL 地址到显示主页的过程?
1.浏览器解析URL
URL = 协议 + 存放资源的主机域名 + 文件路径名
如果没有文件路径名,则访问index.html、default.html这些默认文件。
2.生成Http请求消息
请求报文 = 请求行 + 消息头 + 消息体
响应报文 = 状态行 + 消息头 + 消息体
3.查询服务器域名对应的IP地址——DNS解析——迭代查询
1.客户端首先会发出一个DNS请求,问www.server.com的IP是啥,并发给本地DNS服务器(即,客户端的 TCP/IP 设置中填写的 DNS 服务器地址);
2.本地DNS服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。
- 如果没有本地DNS服务器会去请求根DNS服务器;
3.根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,会把 .com 顶级DNS服务器地址给本地 DNS;
4.本地 DNS 收到**.com 顶级DNS服务器的地址后,对其发起请求;
5..com 顶级DNS服务器收到本地DNS请求后,响应给他一个www.server.com 区域的权威 DNS 服务器的地址;
6.本地DNS收到之后,会向www.server.com区域的权威 DNS 服务器发起请求,就会收到对应的 IP 地址**;
7.本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
4.TCP连接
浏览器获得域名对应的IP地址后,向服务器请求连接,发起TCP三次握手;
5.发送Http请求
TCP连接建立起来后,浏览器向服务器发起Http请求;
6.服务器处理请求并返回Http报文
服务器收到客户端的请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及对应视图返回给浏览器;
7.浏览器解析渲染页面
浏览器解析并渲染视图,若遇到js文件、css文件及图片等静态资源的引用,则重复上述步骤向服务器请求资源,向用户呈现完整页面;
8.连接结束
2.Http常见面试题
2.1.Http基本概念
1.Http是什么?
- 超文本传输协议,是一个在计算机世界里专门在**「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」**。
2.Http常见状态码?
2xx:成功,报文已收到并被正确处理;
- 200,OK
- 204,OK,但是响应头没有body数据;
3xx:重定向,资源位置发生变动,需要客户端重新发送请求;
- 301,永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
- 302,临时重定向,请求的资源还在,但暂时需要用另一个 URL 来访问。
4xx:客户端错误
- 403,表示服务器禁止访问资源,并非客户端请求出错;
- 404,表示请求的资源在服务器上找不到;
5xx:服务端错误
- 501,客户端请求的功能还不支持
- 503,表示服务器很忙,暂时无法响应
3.Http 常见字段有哪些?
Host:指定服务器的域名;
Host: www.baidu.com
Content-Length 字段:表明本次返回数据的长度;
Connection字段:客户端要求服务器使用 TCP 长连接;
Connection: keep-alive
Content-Type 字段:表示本次数据的编码方式;
Content-Type: text/html; charset=utf-8
Content-Encoding 字段:表示数据的压缩方法;
Content-Encoding: gzip
2.2.Get、Post
1.Get、Post两者区别
1.Get 方法:含义是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。
2.Post 方法:它向 URI 指定的资源提交数据,数据就放在报文的 body 里。
2.GET 和 POST 方法都是安全和幂等的吗?
Get:安全且幂等。
POST:不安全、不幂等。 因为是「新增或提交数据」的操作,会修改服务器上的资源,且多次提交数据就会创建多个资源。
2.3.HTTP特性
1.http优点
- 简单、灵活和易于扩展、应用广泛和跨平台
2.http缺点
- 明文传输(不加密),内容可能会被窃听。比如,账号信息容易泄漏,那你号没了。
- 不验证通信方的身份,因此有可能遭遇伪装。比如,访问假的淘宝、拼多多,那你钱没了。
- 无法证明报文的完整性,所以有可能已遭篡改。比如,网页上植入垃圾广告,视觉污染,眼没了。
2.4.Https与Http
1.HTTP 与 HTTPS 有哪些区别?
1.Https在TCP和Http网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输;(防明文传输)
2.Https在Tcp三次握手之后,还要进行SSL/TLS的握手过程,才可以进行加密报文传输;(防篡改)
3.Https协议要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
4.Https的端口号是443,Http端口号是80。
2.Https解决了Http的哪些问题?
1.信息加密:交互信息无法被窃取;
2.校验机制:防篡改内容,篡改了就不能正常显示;
3.身份证书:可以证明网站真实性。
3.HTTPS 是如何解决上面的三个风险的?
1.混合加密的方式实现信息的机密性,解决了窃听的风险。
- 1.通信建立前,先用非对称加密的方式交换会话密钥,后续不再使用非对称加密;
- 2.通信过程中,全部使用对称加密的会话密钥的方式加密解密。
2.摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。
- 客户端在发送明文之前会通过摘要算法算出明文的「指纹」,发送的时候把**「指纹 + 明文」一同加密成密文后,发送给服务器,服务器解密后**,用相同的摘要算法算出发送过来的明文,通过比较客户端携带的「指纹」和当前算出的**「指纹」做比较**,若「指纹」相同,说明数据是完整的。
3.将服务器公钥放入到数字证书中,解决了冒充的风险。
- 如何保证公钥不被篡改和信任度?
借助第三方权威机构 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。
4.HTTPS 是如何建立连接的?其间交互了什么?
SSL/TLS 协议基本流程:(前两步也就是 SSL/TLS 的建立过程,也就是握手阶段。)
- 1.客户端向服务器索要并验证服务器的公钥。
- 2.双方协商生产「会话秘钥」。
- 3.双方采用「会话秘钥」进行加密通信。
SSL/TLS 的「握手阶段」涉及四次通信,可见下图:
1. ClientHello
由客户端向服务器发起加密通信请求,也就是 ClientHello 请求。客户端主要向服务器发送以下信息:
- (1)客户端支持的 SSL/TLS 协议版本,如 TLS 1.2 版本。
- (2)客户端生产的随机数(Client Random),后面用于生产「会话秘钥」。
- (3)客户端支持的密码套件列表,如 RSA 加密算法。
2. SeverHello
服务器收到客户端请求后,向客户端发出响应,也就是 SeverHello。服务器回应的内容有如下内容:
- (1)确认 SSL/ TLS 协议版本,如果浏览器不支持,则关闭加密通信。
- (2)服务器生产的随机数(Server Random),后面用于生产「会话秘钥」。
- (3)确认的密码套件列表,如 RSA 加密算法。
- (4)服务器的CA数字证书。
3. 客户端回应
客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。
如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:
- (1)一个随机数(pre-master key)。该随机数会被服务器公钥加密。
- (2)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。
- (3)客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。
上面第一项的随机数是整个握手阶段的第三个随机数,这样服务器和客户端就同时有三个随机数,接着就用双方协商的加密算法,各自生成本次通信的「会话秘钥」。
4. 服务器的最后回应
服务器收到客户端的第三个随机数(pre-master key)之后,通过协商的加密算法,计算出本次通信的「会话秘钥」。然后,向客户端发生最后的信息:
- (1)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。
- (2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。
至此,整个 SSL/TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。
5.Http/1.1、Http/1.2、Http/1.3演变
3.Http长连接、短连接的区别与应用场景
1.HTTP短连接
HTTP/1.0 中默认使用短连接。
2.HTTP长连接
HTTP/1.1 起,默认使用长连接,用以保持连接特性。使用长连接的 HTTP 协议,会在响应头加入这行代码:
Connection:keep-alive
HTTP ⼀般会有 httpd 守护进程,⾥⾯可以设置 keep-alive timeout,当 tcp 链接闲置超过这个时间就会关闭,也可以在 HTTP 的 header ⾥⾯设置超时时间
3.长连接和短连接的应用场景
1.长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
2.短连接多用于并发量大,但每个用户无需频繁操作的场景。 WEB 网站的 http 服务一般都用短连接, WEB 网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源, 如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。
4.全网最透彻HTTPS
TCP | UDP |
---|---|
⾯向连接的 | ⽆连接的 |
每⼀条 TCP 连接只能有两个端点,每⼀条 TCP 连接只能是点对点的(⼀对⼀) | UDP ⽀持⼀对⼀、⼀对多、多对⼀和多对多的交互通信; |
TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,⽆差错、不丢失、不重复、并且按序到达; | UDP 使⽤尽最⼤努⼒交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这⾥⾯有许多参数) |
⾯向字节流 | ⾯向报⽂的 |
TCP 提供全双⼯通信 | |
5.TCP
6. UDP
以上是关于计算机网络—URL到显示的过程HttpHttps长连接短连接的主要内容,如果未能解决你的问题,请参考以下文章