首页 > 编程知识 正文

http通信过程是什么,https

时间:2023-05-04 00:54:21 阅读:169008 作者:1784

1、万维网(www ) 1.1定义:万维网是一个大而在线的数据空间/信息仓库,是无数网站和网页的集合

2 HTTP/HTTPS的通信流程2.1明确浏览器(客户端)通过域名向web服务器请求web文档的方法和服务器向浏览器传递文档的方法() )。

HTTP和HTTPS都需要在建立连接的基础上进行数据传输,

在HTTP中

客户端在浏览器中输入URL,按回车后,浏览器通过本地的DNS缓存寻找对应的ip地址,如果找不到的话,向DNS服务器发出查询请求,在DNS调查了对应的ip地址之后,进行对应客户端收到ip地址时,向目标服务器发送建立TCP连接的请求,在两次TCP握手后,通过第三次握手,客户端向服务端发送获取资源的请求

当客户在浏览器中输入网址按回车时,浏览器通过本地DNS缓存查找对应的ip地址,如果找不到,则向DNS服务器发出查询请求,在DNS查询对应的ip地址后客户端收到ip地址时,向目标服务器发送建立TCP连接的请求,经过两次TCP握手,通过第三次握手请求连接到HTTPS。参考3.1中的内容2.2 HTTP协议补充2.3 HTTP的“无状态”解释为,意味着多个用户访问同一个服务器时,无论尝试多少次,每次返回的页面都和最初一样。

2.4 HTTP非永久连接

如上图所示,请求一个资源a所需的总时间为2 * RTT资源a的传输时间,因为HTTP非持久性连接在每次传输HTTP文件时都必须重新建立tcp连接。 (请注意文件传输时间和文件传输时间之差。 2 * RTT表示传播延迟。 ) ),

当浏览器试图向服务器请求n个相同资源时,其总时间为t=n*(2*RTT资源a的传输时间) )

2.5持续连接2.5.1非流水线型

从上面的图中可以看到,HTTP的非流水线持续连接,

)1)只建立一次tcp连接,此后客户端请求服务器资源时不需要重新建立tcp连接。 换言之,服务器在响应于第一资源请求后继续保持该tcp连接,然后资源请求继续保持在该连接上

)2)但是,对于非流水线连接,客户端一次只能发送一个HTTP请求,直到从浏览器收到上次请求的资源。

)3) HTTP/1.1的缺省模式使用带管线的持续连接。 在这种情况下,每次发生引用时,HTTP客户端都会立即发出请求,因此HTTP客户端可以一个接一个地发出每个引用的请求。 与服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的,那么所有请求的对象一共只经历1个RTT的延迟就可以到达服务端无管线的版本不同,被引用的每个对象都有一个RTT延迟。 另外,在带有流水线的持久性连接中,服务器空闲等请求时间很少。 不管是否存在管线,与非持续连接相比,持续连接可以减少RTT个响应延迟,同时延迟相对较小。 这是因为每个对象都使用相同的TCP连接,这样在服务器发出第一个对象后,就不需要以第一个低速发送后续对象。 相反,服务器可以按照第一个对象发送完成时的速率开始发送下一个对象。

2.5.2管线连接

从上面的图中可以看到,HTTP的流水线式持久连接,

就像不是管线一样,只需建立一次tcp连接,以后客户端请求服务器资源时就不需要重新建立tcp连接。 这意味着服务器在响应第一个资源请求后将继续保持此tcp连接,而后续的资源请求将继续保持在此连接上。 然而,在流水线连接中,在建立了tcp连接之后,客户端能够一次传输多个连接请求

or

是客户端可以先一次性发送多个请求,而在发送过程中不需先等待服务器的回应,可以减少整体的响应时间。此外,在服务器响应来自客户端的第一个请求之前,客户端不能发出以下请求: 这意味着如果服务器响应的进程被阻止,客户端将无法发出以下请求。 在这种情况下,会出现“阻止队列头”问题

2.6keep-alive(1) TCP的Keepalive,也称为TCP keepalive机制,该功能由“内核”实现,当客户端和服务端在一定时间内没有进行数据交换时,内核会直接与其连接HTTP的Keep-Alive也称为HTTP长连接,该功能通过“APP”来实现,从而能够通过同一TCP连接来发送接收多个HTTP请求/响应,并通过HTTP短连接来建立多个TCP连接

)2)在TCP保持活动机制中,HTTP长连接的超时时间设置为60秒,web服务软件将启动计时器。 如果客户端在完成HTTP请求后60秒内没有启动新请求,则计时器时间一到,它将启动回调函数以释放连接。

> 3,HTTPS 3.1 通信流程

HTTPS的连接也是建立在TCP之上的,下面所显示的图片,省略了一开始的TCP的三次握手过程

3.2 对称加密和非对称加密 对称加密

即加密的密钥和解密的密钥相同,

非对称加密

非对称加密将密钥分为公钥和私钥,公钥可以公开,私钥需要保密,客户端公钥加密的数据,服务端可以通过私钥来解密

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