首页 > 编程知识 正文

【计算机网络】 HTTP协议及相关面试题整理 (建议收藏)

时间:2023-05-04 21:05:37 阅读:52432 作者:4546

这篇文章收录在计算机网络上,欢迎订阅。

目录1、什么是Http1.1、什么是Http1.2、什么是超文本1.3、网络2、HTTP消息格式2.1、HTTP请求消息格式2.2、HTTP响应消息格式3 Cookie概念3.2,具体步骤4,HTTP1.0和HTTP1.0 HTTP1.04.2,HTTP1.14.3,HTTP/1.1和HTTP/1.0的区别5,HTTPS概念5.1,HTTPS概念5.2,httpp

1、Http 1.1、了解什么是Http

通过输入浏览器地址中站点的域名,可以访问该站点的内容。 这就是万维网WWW应用,相关的APP应用层协议为http://www.Sina.com/(hypertexttransferprotocol )。

HTTP定义了浏览器(即www客户端进程)如何向www服务器请求www文档,以及www服务器如何将www文档发送到浏览器。 HTTP是一种使用TCP连接进行可靠传输的APP应用层协议。

1.2、超文本是指互联网初期,我们输入的信息只能存储在本地,不能与其他计算机交互。 我们存储的信息通常作为可以在计算机上解析的有意义的二进制数据包——文本,也就是简单的字符。 随着互联网的飞速发展,在两台计算机之间实现数据传输后,人们就不满足于只能在两台计算机之间传输字符,人们可以点击图像、语音、视频甚至文字和图像进行超链接的跳转

1.3、网络超文本传送协议HTTP

33558万维网(www.Sina.com/www )不是一个特殊的计算机网络。 通过指向大型在线http://www.Sina.com/web的链接,web可以方便地从internet上的一个网站访问另一个网站,从而根据需要获得积极丰富的信息。 这种访问方式称为“概述”。万维网

网络以信息储藏所方式运行。 3358www.Sina.com/是用户计算机上的web http://www.Sina.com /。 因为放置万维网文档的计算机运行链接,所以该计算机也称为万维网的工作方式。 客户端程序向服务器程序发出请求,服务器程序显示在客户端所需的客户 - 服务器客户端程序主窗口中的web文档为浏览器

2、HTTP消息格式2.1、HTTP请求消息格式HTTP为文本导向,该消息中的每个字段为若干ASCII码串,每个字段长度不确定。 HTTP请求消息由请求行、请求头行、空行、实体主体4个部分构成。

客户程序

HTTP请求消息的“请求行”由三个字段组成:“请求方法”、“URL”和“协议版本”,并用空格分隔。 这部分是必不可少的。 请求行末尾有换行符控件和换行符控件,用" CRLF "表示。 这将在下一行中显示以下请求标头信息:

服务器程序

HTTP请求标头包含一组“请求标头”及其相应的值,其中显示了允许客户端将请求传递给服务器的其他信息以及客户端自身的信息。 打开网页时,浏览器向web服务器发送HTTP请求标头,web服务器根据HTTP请求标头的内容生成下一个请求的内容,并将其发送到浏览器。 这就是HTTP请求消息的“请求标头”的作用。

万维网服务器

最后一个请求标头后有一个空行,发送换行符和换行符,通知服务器以下不再有请求标头

万维网文档

通常不使用请求消息的“实体主体”部分。 不能在GET方法中使用。 为服务提供仅在POST方法中使用且通常不使用的用户凭据。

2.2、HTTP应答消息格式HTTP应答消息由状态行、应答头、空行和实体本体四部分组成。

页面

状态行由三部分组成: HTTP协议版本字段、状态代码和状态代码说明文本,并用空格分隔。

1、请求行

响应标头为客户端提供其他信息,包括发送响应的用户、响应者的功能以及与响应相关的特殊说明。 这些头有助于客户端处理响应并在将来提出更好的请求。 响应标头区域包括Age、Location、代理认证、公共、Retry- After和s

erver、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。

3、空行

最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。

4、实体主体

服务器返回给客户端的文本信息。

3、使用Cookie在服务器上记录用户信息 3.1、Cookie概念

早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态的文档。因此HTTP被设计为—种无状态的协议。这样可以简化服务器的设计。

现在,用户可以通过万维网实现各种复杂的应用,如网上购物、电子商务等。这些应用往往需要万维网服务器能够识别用户。

Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。

3.2、具体过程 1、用户主机中的浏览器向万维网服务器发送HTTP请求。2、万维网服务器为该客户生成一个唯一的Cookie识别码,并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息。3、万维网服务器向用户主机中的浏览器发送HTTP响应,响应体中携带设置的Cookie识别码。4、用户主机中的浏览器从文件中读取Cookie。5、用户主机中的浏览器向万维网服务器发送HTTP请求,并携带读取的Cookie识别码。6、万维网服务器根据Cookie识别码就可以识别出该用户,并返回该用户的个性化网页。7、万维网服务器向用户主机中的浏览器发送HTTP响应。
4、HTTP1.0和HTTP1.1 4.1、HTTP1.0

HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。

每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万
维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。 4.2、HTTP1.1

HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接
使同一个
客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。

为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。

请求一个万维网文档所需要的时间:

4.3、HTTP/1.1 和 HTTP/1.0 的区别

主要区别如下:

缓存处理: 在 HTTP/1.0 中主要使用 header 里的 if-modified-Since, Expries 来做缓存判断的标准。而 HTTP/1.1 请求头中添加了更多与缓存相关的字段,从而支持更为灵活的缓存策略,例如 Entity-tag, If-Unmodified-Since, If-Match, If-None-Match 等可供选择的缓存头来控制缓存策略。

节约带宽: 当客户端请求某个资源时,HTTP/1.0 默认将该资源相关的整个对象传送给请求方,但很多时候可能客户端并不需要对象的所有信息。而在 HTTP/1.1 的请求头中引入了 range 头域,它允许只请求部分资源,其使得开发者可以多线程请求某一资源,从而充分的利用带宽资源,实现高效并发。

错误通知的管理: HTTP/1.1 在 1.0 的基础上新增了 24 个错误状态响应码,例如 414 表示客户端请求中所包含的 URL 地址太长,以至于服务器无法处理;410 表示所请求的资源已经被永久删除。

Host 请求头: 早期 HTTP/1.0 中认为每台服务器都绑定一个唯一的 IP 地址并提供单一的服务,请求消息中的 URL 并没有传递主机名。而随着虚拟主机的出现,一台物理服务器上可以存在多个虚拟主机,并且它们共享同一个 IP 地址。为了支持虚拟主机,HTTP/1.1 中添加了 host 请求头,请求消息和响应消息中应声明这个字段,若请求消息中缺少该字段时服务端会响应一个 404 错误状态码。

长连接: HTTP/1.0 默认浏览器和服务器之间保持短暂连接,浏览器的每次请求都需要与服务器建立一个 TCP 连接,服务器完成后立即断开 TCP 连接。HTTP/1.1 默认使用的是持久连接,其支持在同一个 TCP 请求中传送多个 HTTP 请求和响应。此之前的 HTTP 版本的默认连接都是使用非持久连接,如果想要在旧版本的 HTTP 协议上维持持久连接,则需要指定 Connection 的首部字段的值为 Keep-Alive。

5、HTTPS 5.1、HTTPS概念

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

1、TCP 三次同步握手2、客户端验证服务器数字证书3、DH 算法协商对称加密算法的密钥、hash 算法的密钥4、SSL 安全加密隧道协商完成5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。 5.2、HTTPS 的加密方式

HTTPS 采用对称加密和非对称加密相结合的方式,首先使用 SSL/TLS 协议进行加密传输,为了弥补非对称加密的缺点,HTTPS 采用证书来进一步加强非对称加密的安全性,通过非对称加密,客户端和服务端协商好之后进行通信传输的对称密钥,后续的所有信息都通过该对称秘钥进行加密解密,完成整个 HTTPS 的流程。

5.3、HTTP 与 HTTPS 有哪些区别 1、HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全

的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

2、HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP

三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

3、HTTP 的端口号是 80,HTTPS 的端口号是 443。

4、HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

5.4、HTTP 与 HTTPs 的工作方式【建立连接的过程】

HTTP

HTTP(Hyper Text Transfer Protocol: 超文本传输协议) 是一种简单的请求 - 响应协议,被用于在 Web 浏览器和网站服务器之间传递消息。HTTP 使用 TCP(而不是 UDP)作为它的支撑运输层协议。其默认工作在 TCP 协议 80 端口,HTTP 客户机发起一个与服务器的 TCP 连接,一旦连接建立,浏览器和服务器进程就可以通过套接字接口访问 TCP。客户机从套接字接口发送 HTTP 请求报文和接收 HTTP 响应报文。类似地,服务器也是从套接字接口接收 HTTP 请求报文和发送 HTTP 响应报文。其通信内容以明文的方式发送,不通过任何方式的数据加密。当通信结束时,客户端与服务器关闭连接。

HTTPS

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的 HTTP 协议,在 HTTP 的基础上通过传输加密和身份认证的方式保证了传输过程的安全性。其工作流程如下:

① 客户端发起一个 HTTPS 请求,并连接到服务器的 443 端口,发送的信息主要包括自身所支持的算法列表和密钥长度等;

② 服务端将自身所支持的所有加密算法与客户端的算法列表进行对比并选择一种支持的加密算法,然后将它和其它密钥组件一同发送给客户端。

③ 服务器向客户端发送一个包含数字证书的报文,该数字证书中包含证书的颁发机构、过期时间、服务端的公钥等信息。

④ 最后服务端发送一个完成报文通知客户端 SSL 的第一阶段已经协商完成。

⑤ SSL 第一次协商完成后,客户端发送一个回应报文,报文中包含一个客户端生成的随机密码串,称为 pre_master_secre,并且该报文是经过证书中的公钥加密过的。

⑥ 紧接着客户端会发送一个报文提示服务端在此之后的报文是采用pre_master_secre 加密的。

⑦ 客户端向服务端发送一个 finish 报文,这次握手中包含第一次握手至今所有报文的整体校验值,最终协商是否完成取决于服务端能否成功解密。

⑧ 服务端同样发送与第 ⑥ 步中相同作用的报文,已让客户端进行确认,最后发送 finish 报文告诉客户端自己能够正确解密报文。

当服务端和客户端的 finish 报文交换完成之后,SSL 连接就算建立完成了,之后就进行和 HTTP 相同的通信过程,唯一不同的是在 HTTP 通信过程中并不是采用明文传输,而是采用对称加密的方式,其中对称密钥已经在 SSL 的建立过程中协商好了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。