青龙网站建设,wordpress前台发帖,女孩子做网站推广,wordpress 百秀主题文章目录 websockt及原理ipv4和ipv6的区别线程和进程的区别cdn原理缓存所涉及的http状态码缓存的时候设置 no-store和no-cache和max-age0这几个有什么区别token一般存放在哪儿怎么设置强缓存和协商缓存强缓存#xff1a;1. 使用 Cache-Control 头字段#xff1a; 协商缓存0这几个有什么区别token一般存放在哪儿怎么设置强缓存和协商缓存强缓存1. 使用 Cache-Control 头字段 协商缓存1. 使用 Last-Modified 和 ETag 头字段2. 在响应中返回 304 Not Modified http每次都要建立一个连接吗tcp连接的三次握手和四次挥手三次握手Establishing a Connection四次挥手Terminating a Connection websockt及原理
WebSocket 是一种单个 TCP 连接上进行全双工通信的协议它允许在客户端和服务器之间进行实时数据传输。与传统的 HTTP 请求-响应模型不同WebSocket 提供了持久性连接允许双方在任何时候向对方发送数据而无需等待请求。
握手过程 WebSocket 的连接始于一个握手过程该过程通过 HTTP 协议完成。客户端发送一个 WebSocket 握手请求到服务器请求中包含了一些特定的头部信息如 Upgrade: websocket 和 Connection: Upgrade。如果服务器支持 WebSocket它将响应一个包含同样头部的握手确认然后连接升级为 WebSocket。
持久连接 一旦握手成功WebSocket 连接就建立起来了而且是持久性的。这意味着客户端和服务器之间的连接将一直保持打开状态直到其中一方选择关闭连接。
数据帧 WebSocket 数据以数据帧的形式传输。数据帧可以是文本、二进制数据或者其他自定义数据类型。这些数据帧通过 WebSocket 连接在客户端和服务器之间传递。
全双工通信 WebSocket 支持全双工通信这意味着客户端和服务器都可以同时向对方发送数据而不需要等待对方的响应。这在实时应用中非常有用如聊天应用、实时游戏等。
心跳机制 为了保持连接的活跃状态通常会实现心跳机制。通过定期发送小的数据帧或 ping 消息可以检测连接是否仍然可用。
创建websocket请求
var socket new WebSocket(ws://example.com/socket);监听 WebSocket 的不同事件以处理连接状态和接收数据。
// 监听连接建立事件
socket.addEventListener(open, function (event) {console.log(WebSocket 连接已建立);
});// 监听接收到消息事件
socket.addEventListener(message, function (event) {console.log(收到消息 event.data);
});// 监听连接关闭事件
socket.addEventListener(close, function (event) {console.log(WebSocket 连接已关闭);
});// 监听发生错误事件
socket.addEventListener(error, function (event) {console.error(WebSocket 错误发生 event);
});
主动发送数据
// 发送文本消息
socket.send(Hello, WebSocket!);// 发送 JSON 数据
var data { message: Hello, WebSocket!, user: user123 };
socket.send(JSON.stringify(data));
主动关闭socket连接
// 关闭连接
socket.close();ipv4和ipv6的区别
IPv4Internet Protocol version 4和IPv6Internet Protocol version 6是互联网协议的两个不同版本用于标识和定位网络上的设备。
地址长度 IPv4 使用32位地址通常表示为四个点分十进制数如 192.168.0.1。每个部分取值范围是255 IPv4地址空间有限约为42亿个地址(255255255*255)。
IPv6 使用128位地址通常表示为八组四位十六进制数,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6大大扩展了地址空间提供了3.4 x 10^38个地址
安全性: IPv6 在设计时考虑了更多的安全特性例如IPsecInternet Protocol Security在IPv6中是可选但更常见的部分而在IPv4中是可选的。 IPv4 安全性方面相对较弱对于安全性需求通常需要添加额外的协议和功能。
网络层协议支持 IPv4 支持的网络层协议有IP、ICMP、IGMP等。 IPv6 支持更多网络层协议 除了支持IPv4的协议外还集成了IPsec并在邻居发现中包含了Multicast Listener DiscoveryMLD等新的特性。
线程和进程的区别
进程 进程是程序的执行实例是操作系统分配资源的基本单位。一个进程可以包含多个线程。 线程 线程是进程内的执行单元是操作系统调度的基本单位。一个进程内的所有线程共享相同的资源和上下文。
独立性 进程 进程之间相对独立一个进程的崩溃通常不会影响其他进程。 线程 线程之间共享相同的资源一个线程的错误可能会影响整个进程但通过适当的同步和错误处理机制可以降低这种风险。
通信方式 进程 进程间通信需要采用额外的机制IPC如消息传递、管道、共享内存等。 线程 线程之间可以直接共享数据通信更为简便。
cdn原理
CDNContent Delivery Network是一种网络架构旨在通过在全球范围内的多个服务器上分发内容提高用户对网站资源的访问速度和性能。
辐射式部署 CDN 提供商在全球范围内部署了多个辐射点Point of PresencePoP。每个 PoP 都包含有缓存服务器这些服务器存储了网站的静态内容如图像、样式表、脚本等。
DNS 解析 用户在浏览器中输入网址并请求特定资源时首先进行 DNS 解析。如果网站启用了 CDNDNS 解析会返回距离用户最近的 CDN 辐射点的 IP 地址。
请求重定向 用户的请求经过本地 CDN 辐射点后CDN 辐射点会检查请求的资源是否已经缓存在本地。如果有CDN 直接返回缓存的资源如果没有CDN 会根据一系列的负载均衡和缓存算法将请求转发到全球其他的 CDN 辐射点或源服务器上。
内容缓存 CDN 辐射点会在其服务器上缓存静态内容通常是经过压缩和优化的版本。这样当其他用户请求相同的资源时CDN 辐射点可以直接返回缓存的内容而无需再次访问源服务器。
负载均衡 CDN 提供商会使用负载均衡技术确保用户请求被分发到最合适的 CDN 辐射点。这可以基于地理位置、服务器负载、网络拓扑等因素来进行动态调整。
动态内容加速 除了静态内容一些高级 CDN 提供商还提供动态内容加速。这通过缓存和优化动态生成的内容减轻源服务器的负担。
安全性 CDN 也可以提供一些安全性措施如 DDoS 攻击防护、SSL 加密等以确保用户和网站的数据安全。
缓存所涉及的http状态码
200 OK 表示请求成功。当服务器返回 200 状态码时可能会包含有关资源是否已被修改的信息以确定是否使用缓存。
304 Not Modified 表示资源未被修改客户端可以使用缓存。当客户端发起条件请求通常是带有 If-Modified-Since 或 If-None-Match 头部的 GET 请求而服务器判断资源未被修改时返回 304 状态码告诉客户端可以使用缓存的版本。
410 Gone 表示请求的资源不再可用。410 明确表示资源已被永久删除。如果客户端先前缓存了该资源可能需要清除缓存。
缓存的时候设置 no-store和no-cache和max-age0这几个有什么区别
这三个HTTP头字段涉及到浏览器缓存和服务器的缓存控制它们有一些区别 no-store: no-store 是一个缓存控制指令表示不应该缓存任何与请求/响应有关的内容。它指示客户端不应该将请求/响应的任何部分存储在缓存中包括不存储请求的副本和不存储响应的副本。 no-cache: no-cache 是一个缓存控制指令表示缓存需要重新验证。它指示客户端在使用缓存之前必须先验证缓存的有效性即发送请求到服务器进行检查但不一定需要下载整个响应。 max-age0: max-age 是一个缓存控制指令表示资源在缓存中的最大存储时间单位是秒。max-age0 表示资源已经过期客户端必须将请求发送到服务器进行验证以确保缓存的内容仍然有效。实际上这等效于 no-cache 指令。
总结区别
no-store 表示完全禁止缓存不存储任何内容。no-cache 表示需要重新验证缓存客户端需要发送请求到服务器进行检查。max-age0 也表示需要重新验证缓存相当于 no-cache因为 max-age0 意味着资源已经过期。
token一般存放在哪儿
token可以存在在cookie或者local storage但一般存在local storage
为什么不存储在 Cookie 中的一些考虑
CSRF 攻击 Cookies 在每个请求中都会被自动发送到服务器因此如果 Token 存储在 Cookie 中那么攻击者可能通过构造恶意网站来利用用户的身份进行恶意请求即 CSRF 攻击。
安全性和隐私 Cookies 通常会被浏览器自动管理而 Local Storage 则由 JavaScript 控制。从安全性和隐私的角度来看开发人员可能更喜欢使用 Local Storage以便更精确地控制 Token 的存储和获取。
强缓存和协商缓存分别是什么请求的过程是怎样的 当客户端首次请求资源时服务器会在响应头中添加 Last-Modified 字段表示资源的最后修改时间。当客户端再次请求资源时可以在请求头中包含 If-Modified-Since 字段其值为上次收到的 Last-Modified 的值。
服务器发现请求中的 If-Modified-Since 的值与服务器上资源的最后修改时间相同说明客户端的资源仍然是最新的服务器会返回 304 Not Modified并告诉客户端可以使用缓存。
当服务器返回资源时也可以在响应头中添加 ETag 字段表示资源的唯一标识符。客户端再次请求资源时可以在请求头中包含 If-None-Match 字段其值为上次收到的 ETag 的值。
如果服务器发现请求中的 If-None-Match 的值与服务器上资源的 ETag 相同说明客户端的资源仍然是最新的服务器会返回 304 Not Modified并告诉客户端可以使用缓存。
怎么设置强缓存和协商缓存
在服务器端设置强缓存或协商缓存可以通过在 HTTP 响应头中添加相应的字段来实现。以下是设置强缓存和协商缓存的常用响应头字段
强缓存
1. 使用 Cache-Control 头字段 max-age 设置资源的最大缓存时间单位是秒。 Cache-Control: max-age3600s-maxage 用于代理服务器设置共享缓存的最大时间。 Cache-Control: s-maxage3600public 表示资源可以被任何缓存包括代理服务器缓存。 Cache-Control: public, max-age3600private 表示资源仅可被浏览器缓存。 Cache-Control: private, max-age3600no-cache 表示浏览器每次请求都要向服务器验证资源是否过期。 Cache-Control: no-cache协商缓存
1. 使用 Last-Modified 和 ETag 头字段 Last-Modified 表示资源的最后修改时间。 Last-Modified: Tue, 23 Nov 2023 12:00:00 GMTETag 表示资源的唯一标识符。 ETag: 686897696a7c876b7e2. 在响应中返回 304 Not Modified
当客户端发起请求时服务器通过比较请求头中的 If-Modified-Since 或 If-None-Match 字段与资源的修改时间或标识来判断是否需要返回新的资源。如果没有变化服务器可以直接返回 304 Not Modified告诉客户端可以使用缓存。
HTTP/1.1 304 Not Modified
Date: Tue, 23 Nov 2023 12:00:00 GMT通过这些设置服务器可以控制浏览器缓存行为实现强缓存和协商缓存。请注意在实际应用中可以根据具体的业务需求选择适当的缓存策略。
http每次都要建立一个连接吗
HTTP/1.1 中默认情况下是可以复用连接的即通过持久连接Persistent Connection的方式。这意味着在单个 TCP 连接上可以传输多个 HTTP 请求和响应而不必为每个请求都重新建立一个连接。
tcp连接的三次握手和四次挥手
TCPTransmission Control Protocol是一种面向连接的协议它使用三次握手和四次挥手来建立和终止连接。
TCPTransmission Control Protocol是一种面向连接的协议它使用三次握手和四次挥手来建立和终止连接。
三次握手Establishing a Connection 客户端发送 SYN同步报文 客户端向服务器发送一个 TCP 报文标志位 SYN 置为 1表示请求建立连接并选择一个初始的序列号ISN。 服务器发送 SYN ACK 报文 服务器收到客户端的 SYN 请求后如果同意建立连接会向客户端发送一个 TCP 报文其中 SYN 置为 1同时 ACK确认标志也置为 1表示确认收到客户端的请求并选择自己的初始序列号。 客户端发送 ACK 报文 客户端收到服务器的 SYN ACK 报文后会向服务器发送一个 ACK 报文确认服务器的建立连接请求。
此时连接建立完成可以开始进行数据传输。
四次挥手Terminating a Connection 客户端发送 FIN 报文 客户端希望关闭连接时会向服务器发送一个 FIN结束报文表示不再发送数据。 服务器发送 ACK 报文 服务器收到客户端的 FIN 报文后发送一个 ACK 报文确认收到客户端的关闭请求。此时服务器进入 CLOSE-WAIT 状态表示可以关闭连接但还需要等待可能未发送完的数据。 服务器发送 FIN 报文 服务器确认可以关闭连接后发送一个 FIN 报文给客户端表示服务器也不再发送数据了。 客户端发送 ACK 报文 客户端收到服务器的 FIN 报文后发送一个 ACK 报文确认收到服务器的关闭请求。
此时连接终止。客户端和服务器都进入 CLOSED 状态。
需要注意的是四次挥手中的 ACK 报文通常和 FIN 报文合并在一个报文中发送因此可能看起来只有三次数据包交换。