http和https的区别

HTTPS和HTTP的区别主要如下: https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  • http https
  • 端口 80 443
  • 内容 明文传输 加密传输
  • 安全 无状态 需要安全证书

HTTPS 约等于 HTTP+SSL

优点 相对安全/SEO排名更高 缺点 证书需要申请,服务器资源占用更高,连接建立需要传送证书,速度更慢.

三次握手四次挥手

简略快速回忆版:

三次握手

客户端:我要和你通信(syn-sent) 服务端:你的请求已收到,发送确认(syn-rcvd) 客户端:你的确认已收到,连接建立(est)

客户端–发送带有 SYN 标志的数据包–一次握手–服务端 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端

为什么要三次握手

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送接收正常

所以三次握手就能确认双发收发功能都正常,缺一不可。

四次挥手

客户端:我没有东西了,准备关闭(fin-wait) 服务端:你的关闭我收到了,但我还有点东西没传完(close-wait) ……一段时间后…… 服务端:我的东西传完了,可以关闭了(last-ack) 客户端:收到关闭通知,你也可以关闭了(time-wait)

断开一个 TCP 连接则需要“四次挥手”:

客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号 服务器-关闭与客户端的连接,发送一个FIN给客户端 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1

一个页面从浏览器到服务器的过程(输入网址后,浏览器从访问服务器到呈现网页的过程)

从输入URL到页面加载发生了什么 DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束

详细见:1. 前端经典面试题:从输入URL到页面加载发生了什么 20200609

拆解信息: 1.输入网址,进行DNS域名解析 浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索

浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

2.浏览器给web服务器发送一个HTTP请求 3.服务器的永久重定向响应 4.浏览器跟踪重定向地址 5.服务器“处理”请求 6.服务器发回一个html响应 7.浏览器显示html 8.浏览器发送获取嵌入到html中的对象 9.浏览器发送异步(AJAX)请求

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

这个过程分成两部分:一部分是浏览器发送请求到服务器返回数据;一部分是浏览器收到数据开始渲染返回的结果。 1.DNS解析 DNS 解析首先会从你的浏览器的缓存中去寻找是否有这个网址对应的 IP 地址,如果没有就向OS系统的 DNS 缓存中寻找,如果没有就是路由器的 DNS 缓存, 如果没有就是 ISP 的DNS 缓存中寻找。 所以,缓存的寻找过程就是: 浏览器 -> 系统 -> 路由器 -> ISP。 2.TCP连接 3.发送请求 4.服务端回应

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 一个网页从输入URL到页面加载完的过程

过程概述 1、浏览器查找域名对应的IP地址 2、浏览器根据IP地址与服务器建立socket连接 3、浏览器与服务器通信:浏览器请求,服务器处理请求和响应 4、浏览器与服务器断开连接 具体过程 1、搜索自身的DNS缓存 2、搜索操作系统自身的DNS缓冲 3、读取本地的HOST文件 4、浏览器发起一个DNS的系统调用 DNS叫做域名系统:由解析器和域名服务器组成,域名服务器保存着该网络中所有主机的域名和对应的IP地址,域名有唯一对应的IP地址,但是IP地址不一定对应一个域名,我们就是根据DNS来上网的。 5、浏览器获得域名对应的IP地址之后,就会向服务器发起TCP请求,请求建立TCP连接,就是"三次握手"。 6、TCP/IP连接建立起来之后,浏览器就可以向服务器发起HTTP请求了,使用了比如说,HTTP的GET方式。 7、服务端接收到这个请求之后,根据参数,将经过处理的数据返回给客户端。 8、浏览器拿到了服务端返回的HTML页面代码,在解析和渲染这个页面的时候,里面的JS、CSS、图片等静态资源,也是一个个HTTP请求,都需要经过上面的主要七个步骤。 9、浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户。