前端基础整理【HTTP HTTPS】【即时通讯】【CDN】

前端 专栏收录该内容
16 篇文章 0 订阅

输入URL之后…

输入一个 url 发生了什么?

  1. 输入地址,浏览器解析网址。
  2. DNS解析,查询到IP,返回对应的IP。
  3. TCP连接(TCP 三次握手 80 端口)。[https 在 TCP 连接之前 SSL/TLS 做了加密,防劫持,需要证书,端口不同 443]
  4. 发送http请求。
  5. 返回http响应。
  6. 浏览器解析渲染页面。
  7. 断开连接(四次挥手)。

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

HTTP与HTTPS

HTTP

超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。

HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。

HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用;也就是说,一个不会静默丢失消息的协议,如UDP。

HTTPS

HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式。

Strict Transport Security解决了这个问题;只要你通过HTTPS请求访问银行网站,并且银行网站配置好Strict Transport Security,你的浏览器知道自动使用HTTPS请求,这可以阻止黑客的中间人攻击的把戏。

启用 Strict Transport Security:开启HSTS只需要当通过HTTPS方式访问你的网站时,返回 Strict-Transport-SecurityHTTP 头信息:
Strict-Transport-Security: max-age=expireTime [; includeSubdomains]

HTTP VS HTTPS

  • HTTPS协议需要到CA申请证书,价格不等。
  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
    HTTP HTTPS

即时通讯的主要实现方式

即时通讯,一种基于互联网的即时交流消息的业务。。

实现即时通讯主要有四种方式:短轮询、长轮询(comet)、长连接(SSE)、WebSocket。

上述四种可分为两类:

  • 基于 HTTP:短轮询、长轮询、长连接
  • 非 HTTP:Websocket

短轮询(Polling)

基本实现思路:浏览器每隔一段时间定时向服务器发送 HTTP 请求,服务器收到请求后立即进行响应(不管内容是否发生变化)。响应完成后 TCP 连接关闭。

长轮询(Comet)

基本实现思路:当服务器收到客户端发来的请求后,不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制(服务器端设置)后关闭连接。

长轮询和短轮询比起来,减少了很多不必要的http请求次数。但是长轮询的连接一直挂起也会导致资源的浪费。

长连接(SSE)

HTML5新增的功能,由客户端发起与服务器之间创建TCP连接,并维持这个连接,直到客户端或服务器中的任何一方断开。连接创建后,浏览器会周期性地发送消息至服务器询问
。HTTP响应内容有一种特殊的content-type —— text/event-stream,该响应头标识了响应内容为事件流,客户端不会关闭连接,而是等待服务端不断得发送响应结果。

Websocket

WebSocket是Html5定义的一个新协议,与传统的 HTTP 协议不同,可实现服务端和客户端双向同时通信(全双工通信)。

首先通过 HTTP 来让客户端和服务端建立连接,连接建立后就不再使用 HTTP 协议,即可进行数据传递(TCP)。

CDN

全称 content delivery network,内容分发网络。是一组分布在多个不同的地理位置的服务器。根据用户的实际位置,从离用户最近的 CDN 服务器为用户提供内容,提高访问速度,提升用户体验。

主要用来解决网络拥堵,提高访问速度,解决由于网络带宽小,用户访问量大,网点分布不均等原因导致的访问速度慢的问题。

CDN还可以进行数据备份、扩展存储能力,进行缓存,同时有助于缓和Web流量峰值压力。

CDN的大致原理:

  1. 用户在浏览器输入要访问的域名;

  2. 对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际的IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析。如根据地理位置信息解析对应的IP地址,使得用户能就近访问;

  3. 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的ip地址之后,向缓存服务器发出访问请求;

  4. 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;

  5. 缓存服务器从实际IP地址得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据放回给客户端,完成数据服务过程;

  6. 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

CDN的缺点

1、响应时间可能会受到其他网站流量的影响。CDN服务提供商在其所有客户之间共享Web服务器组。

2、如果CDN服务质量下降了,那么工作质量也将下降

3、无法直接控制组件服务器

参考

掘金——重庆崽儿brand

简书——浪里行舟

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

LEMOSSR

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值