跳至主要內容
RESTfull 下请求方法的幂等性

RESTfull 下请求方法的幂等性

概念阐述

一个 HTTP 方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。所有的 safe 方法也都是幂等的。

幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。

Safe(安全)

如果说一个 HTTP 方法是安全的,是指这是个不会修改服务器的数据的方法。也就是说,这是一个对服务器只读操作的方法。这些方法是安全的:GETHEADOPTIONS。所有安全的方法都是idempotent的,但并非所有幂等方法都是安全的,例如,PUTDELETE 都是幂等的,但不是安全的。


Yihui大约 2 分钟Network
WAF 网络应用防火墙

WAF 网络应用防火墙

你可能对传统的“防火墙”比较熟悉。传统“防火墙”工作在三层或者四层,隔离了外网和内网,使用预设的规则,只允许某些特定 IP 地址和端口号的数据包通过,拒绝不符合条件的数据流入或流出内网,实质上是一种网络数据过滤设备。

WAF 也是一种“防火墙”,但它工作在七层,看到的不仅是 IP 地址和端口号,还能看到整个 HTTP 报文,所以就能够对报文内容做更深入细致的审核,使用更复杂的条件、规则来过滤数据。

说白了,WAF 就是一种**“HTTP 入侵检测和防御系统”。**


Yihui大约 2 分钟Network
WebSocket

WebSocket

“WebSocket”就是运行在“Web”,也就是 HTTP 上的 Socket 通信规范,提供与“TCP Socket”类似的功能,使用它就可以像“TCP Socket”一样调用下层协议栈,任意地收发数据。

更准确地说,“WebSocket”是一种基于 TCP 的轻量级网络通信协议,在地位上是与 HTTP“平级”的。

为什么要有 WebSocket

不过,已经有了被广泛应用的 HTTP 协议,为什么要再出一个 WebSocket 呢?它有哪些好处呢?其实 WebSocket 与 HTTP/2 一样,都是为了解决 HTTP 某方面的缺陷而诞生的。HTTP/2 针对的是“队头阻塞”,而 WebSocket 针对的是“请求 - 应答”通信模式。


Yihui大约 7 分钟Network
前端存储方案一览

前端存储方案一览

Cookies

在HTML5标准前本地储存的主要的也是最早提出的⽅式,优点是兼容性好,请求头⾃带cookie⽅便(使用fetch的话需要额外配置),缺点是⼤⼩只有4k,⾃动请求头加⼊cookie浪费流量,而且每个domain限制20个cookie,使⽤起来麻烦,需要自行封装相关方法。

  • Cookie一旦创建成功,名称就无法修改
  • Cookie是无法跨域名的,但是子域名之间共享
  • 有安全问题,如果Cookie被拦截了,那就可获得session的所有信息,预防方式包括设置httpOnly
  • Cookie在请求一个新的页面的时候都会被发送过去

Yihui大约 2 分钟Network
浏览器缓存机制-缓存位置

浏览器缓存机制-缓存位置

从缓存位置上来说分为四种,并且各自有优先级,当依次查找缓存且都没有命中的时候,才会去请求网络。

  • Service Worker
  • Memory Cache
  • Disk Cache
  • Push Cache

Service Worker

Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。Service Worker 的缓存与浏览器其他内建的缓存机制不同,它可以让我们自由控制缓存哪些文件、如何匹配缓存、如何读取缓存,并且缓存是持续性的


Yihui大约 2 分钟Network
TCP应知应会(下)

TCP应知应会(下)

拥塞控制

TCP 通过维护一个拥塞窗口来进行拥塞控制,拥塞控制的原则是,只要网络中没有出现拥塞,拥塞窗口的值就可以再增大一些,以便把更多的数据包发送出去,但只要网络出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。 拥塞控制算法的核心是选择一个有效的策略来控制拥塞窗口的变化。

**目的:**防止过多的数据注入网络,保证网络中的路由器或链路不至过载(相较于流量控制,这更多是一个全局概念)

拥塞控制和流量控制的对比

**相同点:**都通过控制发送方发送数据的速率来达到控制效果


Yihui大约 2 分钟Network
TCP应知应会(上)

TCP应知应会(上)

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决的是传输的可靠、有序、无丢失和不重复的问题。

协议特点

  • TCP是面向连接的传输层协议

  • 每条TCP连接只能由两个端点,每条TCP连接只能是点对点的(一对一)

  • TCP提供可靠的交付业务,保证传送数据的无差错,不丢失、不重复而且有序

  • 全双工通信,TCP连接的两端都设有发送缓存和接收缓存,用于临时存放双向通信的数据

  • TCP面向字节流(对比UDP面向报文)


Yihui大约 3 分钟Network
TCP应知应会(中)

TCP应知应会(中)

SYN 洪泛攻击

攻击者发送TCP的SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。

影响:

  • 浪费消耗服务器的资源;

  • 在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机。

TCP可靠传输的实现机制


Yihui大约 2 分钟Network
UDP应知应会

UDP应知应会

文章仅作为给位考试、面试复习内容使用,不适合零基础学习UDP知识。

UDP数据报 🤔

UDP实现了传输协议能够做的最少的工作,在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错控制。

UPD优点

  • UDP无需建立连接,不会有建立连接的时延
  • 无连接状态,UDP不维护连接状态,应用服务器使用UDP时,能够支持更多的活动客户机
  • 首部开销小

应用场景特点

UDP常用于一次性传输较少数据的网络应用,例如DNS,SNMP等等。UDP提供最大努力的交付,即不可靠交付,所有的维护传输可靠性的工作都需要应用层来完成。UPD是面向报文的,保温是UDP的最小处理单位。


Yihui大约 2 分钟Network
Nginx:高性能的Web服务器

Nginx:高性能的Web服务器

Web 服务器就那么几款,目前市面上主流的只有两个:Apache 和 Nginx,两者合计占据了近 90% 的市场份额。

今天我要说的就是其中的 Nginx,它是 Web 服务器的“后起之秀”,虽然比 Apache 小了 10 岁,但增长速度十分迅猛,已经达到了与 Apache“平起平坐”的地位,而在“Top Million”网站中更是超过了 Apache,拥有超过 50% 的用户。

在这里必须要说一下 Nginx 的正确发音,它应该读成“Engine X”,但我个人感觉“X”念起来太“拗口”,还是比较倾向于读做“Engine ks”,这也与 UNIX、Linux 的发音一致。


Yihui大约 6 分钟Network
2