Tag:计算机网络
All the articles with the tag "计算机网络".
http1.1 的 keep-alive 和 http2 的多路复用有什么区别?
Posted on:2024年9月19日 at 01:36HTTP/1.1 的 Keep-Alive 和 HTTP/2 的多路复用是两种不同的技术,尽管它们都旨在提高网络请求的效率,但实现方式和功能有显著区别。 1. Keep-Alive(HTTP/1.1) 连接保持:HTTP/1.1 引入了 Keep-Alive 机制,允许在同一个 TCP 连接上发送多个 HTTP 请求和响应,减少了频繁建立和关闭连接的开销。 请求顺序:在一个连接上,HTTP/1.1
为什么 http2 能非常快速的过渡到 HTTP3 ?
Posted on:2024年9月19日 at 01:35HTTP/2 迅速过渡到 HTTP/3 的原因主要包括以下几点: 1. 技术架构的改进 基于 QUIC:HTTP/3 基于 QUIC 协议,使用 UDP 而非 TCP。这使得连接建立和数据传输的延迟显著降低,尤其在丢包的情况下表现更优。 2. 改善了性能 减少延迟:QUIC 的零连接建立和快速恢复机制大幅减少了延迟,尤其是在移动网络和高延迟环境下表现更佳。 3. 增强的安全性 内置加密:QUIC
TCP 粘包(TCP packet sticking)是什么?
Posted on:2024年8月21日 at 01:14TCP 粘包(TCP packet sticking)是一种在 TCP 协议中常见的现象,指的是接收方在读取数据时,可能会将来自多个发送包的数据合并在一起,或者将一个发送包的数据拆分成多个接收包进行读取。这种现象与 TCP 的数据传输机制有关,而 TCP 协议本身并不保留消息边界,只关心字节流的可靠传输。 粘包和拆包的原因 流式协议: TCP 是一个流式协议,数据在网络上传输时被看作一个连续的字节
304 状态码用于什么场景, 好处和坏处分别是什么?
Posted on:2024年8月21日 at 01:07304 状态码表示“未修改”(Not Modified),用于缓存机制中。它告知客户端缓存的资源仍然有效,无需重新下载。 场景: 缓存优化:当客户端请求一个资源时,服务器可以通过 If-Modified-Since 或 If-None-Match 头部判断该资源是否被修改。如果资源未修改,服务器返回 304 状态码,客户端继续使用缓存中的资源。 好处: 减少带宽消耗:避免重复传输未改变的资源,节省
HTTP Header 中有哪些信息?
Posted on:2024年8月21日 at 01:05常见的 HTTP 头部信息包括以下几类: 请求头(Request Headers) Accept:指定客户端能够接受的内容类型。例如:Accept: application/json, text/html. Accept-Encoding:指定客户端能够接受的编码格式。例如:Accept-Encoding: gzip, deflate. Accept-Language:指定客户端能够接受的语言。例
TCP/IP 是如何保证数据包传输有序可靠的?
Posted on:2024年8月15日 at 23:00TCP/IP 协议栈中的 TCP 协议提供了保证数据包传输有序和可靠的功能。以下是 TCP 如何实现这一目标的详细机制: 1. 数据包传输有序 TCP 确保数据包的顺序是通过以下机制实现的: 序列号(Sequence Number): 每个 TCP 数据包(即 TCP 段)都有一个序列号,用于标识数据流中的位置。发送方会为每个数据包分配一个唯一的序列号。 接收方根据序列号重新排序接收到的数据包,确
DNS 协议了解多少?
Posted on:2024年8月15日 at 19:43关键词:DNS协议、DNS加速 DNS 基本概念 DNS(Domain Name System,域名系统)是因特网上用于将主机名转换为 IP 地址的协议。它是一个分布式数据库系统,通过将主机名映射到 IP 地址来实现主机名解析,并使用户能够通过更容易识别的主机名来访问互联网上的资源。 在使用 DNS 协议进行主机名解析时,系统首先查询本地 DNS 缓存。如果缓存中不存在结果,系统将向本地 DNS
什么是CDN?
Posted on:2024年8月15日 at 18:44CDN(Content Delivery Network,内容分发网络)是一种通过分布在全球的服务器网络来加速内容传输的技术。CDN 的主要目的是将网站或应用的内容缓存到离用户更近的服务器上,从而提高内容加载速度和用户体验。 主要特点 内容缓存:CDN 会在多个节点(边缘服务器)上缓存网站的静态资源(如图片、CSS、JavaScript 文件等),并在用户请求时从离用户最近的节点提供这些资源。 负
说说你对 Server-sent events(SSE,服务端推送) 的了解
Posted on:2024年8月15日 at 09:55Server-Sent Events (SSE) 是一种基于 HTTP 的技术,用于实现服务器向客户端推送实时更新。与 WebSocket 不同,SSE 只支持从服务器到客户端的单向通信,并且是基于文本的事件流。 特点与工作原理 单向通信: SSE 允许服务器主动向客户端推送消息,但客户端不能直接通过 SSE 向服务器发送数据(虽然可以通过其他方法,如普通的 HTTP 请求)。 连接建立: 客户端
https 的证书验证过程是什么样的
Posted on:2024年8月14日 at 23:52HTTPS 的证书验证过程是确保用户与服务器之间的安全通信的关键步骤。 以下是证书验证过程的详细步骤: 1. 客户端发起连接 客户端请求: 客户端(如浏览器)发起一个 HTTPS 请求,连接到服务器。 2. 服务器响应 服务器发送证书: 服务器将 SSL/TLS 证书发送给客户端。证书包含了服务器的公钥和由受信任的证书颁发机构(CA)签名的信息。 3. 客户端验证证书 验证证书链: 检查证书有效性
HTTP/3 是基于 UDP 的协议, 那么他是如何保障安全性的?
Posted on:2024年8月14日 at 23:31HTTP/3 是基于 QUIC 协议的,而 QUIC 本身集成了加密机制,从而保证了数据传输的安全性。具体来说,HTTP/3 的安全性保障依赖于以下几个关键点: 1. 内置的加密 集成 TLS:QUIC 协议将 TLS(传输层安全性)加密集成到协议本身中。与传统的 HTTP/2 需要在 TCP 连接建立后再进行 TLS 握手不同,QUIC 和 HTTP/3 在协议层级直接实现加密,减少了额外的握手
http3 中的 QUIC 是什么协议?
Posted on:2024年8月14日 at 23:30定义 QUIC:QUIC 是一个基于 UDP 的传输层协议,旨在减少网络延迟和提高性能。最初由 Google 开发,现在已经成为 IETF 的标准化项目。 主要目标:提高传输效率,减少连接建立和数据传输的延迟,解决传统 TCP 和 HTTP/2 中的一些性能瓶颈。 特点 无连接的传输:QUIC 使用 UDP 进行数据传输,不同于 TCP 的面向连接特性。这使得 QUIC 可以更灵活地管理数据流和连
http1.1 的持久连接和 http2 的多路复用有什么区别?
Posted on:2024年8月14日 at 23:28HTTP/1.1 的持久连接和 HTTP/2 的多路复用都是为了解决 HTTP 请求和响应的性能问题,但它们的实现方式和解决问题的角度有所不同。下面是它们的主要区别: 1. HTTP/1.1 持久连接(Persistent Connections) 持久连接的特点 定义:HTTP/1.1 引入了持久连接(也称为长连接),允许在一个 TCP 连接上复用多个 HTTP 请求和响应。这意味着在同一个 T
HTTP协议的不同版本的主要特点有哪些?
Posted on:2024年8月14日 at 23:27HTTP协议的不同版本的主要特点如下表所示: 版本 发布时间 主要特点 HTTP/0.9 1991年 只支持GET方法,没有Header和Body HTTP/1.0 1996年 引入Header、POST方法、响应码、缓存等特性 HTTP/1.1 1999年 引入持久连接、管道化请求、分块传输编码、Host头、缓存控制等特性 HTTP/2 2015年 引入二进制分帧、头部压缩、流量控制、多路复用等
HTTPS 加密算法和加解密过程是啥?
Posted on:2024年8月14日 at 20:31HTTPS 使用 SSL/TLS 协议来加密传输的数据,确保数据的机密性和完整性。HTTPS 的加解密过程主要包括以下几个步骤和算法: 1. 加密算法和密钥类型 对称加密算法:使用相同的密钥进行加密和解密。常见的对称加密算法包括 AES(Advanced Encryption Standard)和 3DES(Triple Data Encryption Standard)。 非对称加密算法:使用一
HTTPS 中的 SSL/TLS 是什么?
Posted on:2024年8月14日 at 20:31HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,它通过SSL/TLS协议对数据进行加密,确保数据在传输过程中保持机密性和完整性。下面是对SSL和TLS的详细介绍: SSL(Secure Sockets Layer) 定义:SSL是最早的安全协议,用于在网络上加密传输的数据。它确保数据在客户端和服务器之间的传输是安全的。 历史:SSL最初由Ne
一个 tcp 连接能发几个 http 请求?
Posted on:2024年8月14日 at 20:00一个 TCP 连接可以发多个 HTTP 请求,具体取决于使用的 HTTP 版本: 1. HTTP/1.0 每个请求独立:HTTP/1.0 默认使用非持久连接(每个请求都需要建立新的 TCP 连接)。因此,每个 HTTP 请求需要一个新的 TCP 连接。 2. HTTP/1.1 持久连接:HTTP/1.1 引入了持久连接(Connection: keep-alive),使得一个 TCP 连接可以发送
请简述 HTTP 请求的过程
Posted on:2024年8月14日 at 13:58HTTP 请求的过程包括从客户端发起请求到服务器响应的完整流程。以下是简述的步骤: 1. DNS 解析 客户端将域名(如 www.example.com)解析为 IP 地址。这个过程通常通过 DNS(域名系统)完成。 2. 建立 TCP 连接 客户端与服务器建立 TCP 连接,通常通过三次握手过程(SYN, SYN-ACK, ACK)。 3. 发送 HTTP 请求 客户端通过 TCP 连接向服务器
HTTP建立连接的过程?
Posted on:2024年8月14日 at 12:31在HTTP/1.1中 建立连接过程遵循以下步骤: 建立TCP连接:客户端通过三次握手建立TCP连接。 发送请求:客户端向服务器发送一个HTTP请求报文。 服务器响应:服务器收到请求后,返回一个HTTP响应报文。 客户端接收响应:客户端收到响应后,根据响应中的状态码判断请求是否成功。 关闭连接:如果响应中包含 Connection: close 头部,那么连接关闭,否则保持连接,可以继续发送请求。
TCP 传输过程?
Posted on:2024年8月14日 at 12:30TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,主要用于确保数据在网络上的可靠传输。TCP 的传输过程包括多个步骤,从建立连接到数据传输,再到连接终止。下面详细介绍这些过程: 1. 连接建立(Three-Way Handshake) 1.1 客户端发起连接请求 客户端向服务器发送一个 SYN(同步)报文段,表示请求建立连接。报文段中包含一个初始的序列号(ISN)。 SYN (seq=x)
网络模型分层大概有哪些层级?
Posted on:2024年8月14日 at 12:28计算机网络体系结构通常被划分为七层,即OSI(Open System Interconnection,开放式系统互联)参考模型和TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)参考模型。 OSI参考模型包含七层,从底层到顶层依次是: 物理层(Physical Layer):负责将比特流传输到物理媒介上,如电缆、
CORS 是如何实现跨域的?
Posted on:2024年8月14日 at 12:22CORS(Cross-Origin Resource Sharing)是一种用于实现跨域请求的机制,允许浏览器和服务器之间在不同源之间共享资源。CORS 通过在 HTTP 头部添加特定的字段来控制跨域访问。以下是 CORS 的工作原理及实现细节: 1. CORS 工作原理 1.1 浏览器发起跨域请求 当浏览器发起一个跨域请求时,它会先发送一个预检请求(preflight request),以检查服
ajax如何获取下载进度?
Posted on:2024年8月14日 at 12:19在使用 AJAX 进行文件下载时,可以通过 XMLHttpRequest 的 progress 事件来获取下载进度。以下是如何实现这一过程的详细步骤: 1. 使用 XMLHttpRequest 监控下载进度 1.1 创建 XMLHttpRequest 实例 const xhr = new XMLHttpRequest(); 1.2 配置请求 设置请求的 URL 和方法(如 GET),并配置相关的事
JSONP 是如何实现跨域的?
Posted on:2024年8月14日 at 12:17JSONP JSONP 的实现原理是通过添加一个 script 标签,指定 src 属性为跨域请求的 URL,而这个 URL 返回的不是 JSON 数据,而是一段可执行的 JavaScript 代码,这段代码会调用一个指定的函数,并且将 JSON 数据作为参数传入函数中。 例如,假设我们从 http://example.com 域名下请求数据,我们可以通过在 http://example.com
Blob,ArrayBuffer,Base64 分别有哪些使用场景?
Posted on:2024年8月10日 at 17:07Blob、ArrayBuffer和Base64在Web开发中有各自的使用场景: Blob: 文件上传和下载:Blob对象可以用于将文件数据存储为二进制形式,并进行上传或下载操作。 图片处理:可以将图像数据存储为Blob对象,并进行处理、显示或上传。 多媒体处理:可用于处理音频和视频等多媒体数据。 生成临时URL:可以使用Blob对象创建临时URL,用于在浏览器中显示或分享文件。 ArrayBuff
Blob,ArrayBuffer,Base64 有什么区别?
Posted on:2024年8月10日 at 17:07Blob、ArrayBuffer和Base64是在Web开发中处理二进制数据的不同表示和操作方式。 Blob(Binary Large Object): Blob是一种表示二进制数据的对象,可以存储大量的数据。它常用于处理文件、图像、音频和视频等媒体数据。Blob对象可以通过new Blob()构造函数创建,也可以从其他数据源(例如,通过XMLHttpRequest下载的数据)生成。Blob提供了
Http 3.0 是基于 udp 的,那么它是如何保证传输可靠性的?
Posted on:2024年8月10日 at 17:07HTTP/3 使用的底层传输协议 QUIC 是基于 UDP 的,因此需要在应用层实现可靠的数据传输。QUIC 协议使用了以下几种机制来保证数据的可靠性: 连接迁移:QUIC 允许在网络切换或 IP 变更时迁移连接,而不需要重新建立新的连接,从而避免了连接中断和数据丢失的问题。 可靠性流控制:QUIC 在每个流上都实现了可靠的流控制机制,可以根据发送方和接收方的负载情况动态调整数据发送速率,从而优化
websocket 中的 Handshaking 是什么?
Posted on:2024年8月10日 at 17:07Handshaking 是 WebSocket 建立连接的第一步,它是一个类似于 HTTP 请求的过程,在客户端和服务器之间交换握手信息,以确定双方是否支持 WebSocket 协议,并建立起 WebSocket 连接。其主要步骤如下: 客户端向服务器发送升级协议请求:客户端通过普通的 HTTP GET 请求向服务器发送一个包含特殊头部字段 Upgrade 和 Connection 的HTTP 请
https是如何保证安全的,又是如何保证不被中间人攻击的?
Posted on:2024年8月10日 at 17:07HTTPS 是一种基于 TLS/SSL 协议的安全传输协议,它可以通过加密和认证等措施来保护数据传输过程中的安全性和隐私性。其主要保证方式如下: 加密传输:使用公钥加密技术对数据进行加密,并使用私钥进行解密,以保证在传输过程中数据不会被窃取、篡改或伪造。 身份认证:使用数字证书对服务器和客户端身份进行认证,防止恶意攻击者伪装成合法用户或服务器进行攻击。 完整性校验:使用消息摘要算法对传输数据进行校
说下 websocket 的连接原理
Posted on:2024年8月10日 at 17:07WebSocket 是一种基于 TCP 协议的双向通信协议,它可以在客户端和服务器之间建立持久性的连接,实现实时的数据传输和交互。其主要原理如下: 利用 HTTP 建立连接:WebSocket 的连接需要通过 HTTP 请求首先建立握手(Handshaking)过程,该过程类似于普通的 HTTP 请求,但包含了一些特殊的头部字段,例如 Upgrade 和 Connection 等。 建立 TCP
webSocket 有哪些安全问题,应该如何应对?
Posted on:2024年8月10日 at 17:071. WebSocket特性介绍 WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocket API也被W3C定为标准,主流的浏览器都已经支持WebSocket通信。 WebSocket协议是基于TCP协议上的独立的通信协议,在建立WebSocket通信连接前,需要使用HTTP协
cookie 怎么设置只在 https 时携带?
Posted on:2024年8月10日 at 17:06设置 cookie 的 secure 属性。 secure选项用来设置cookie只在确保安全的请求中才会发送。当请求是HTTPS或者其他安全协议时,包含 secure 选项的 cookie 才能被发送至服务器。 默认情况下,cookie不会带secure选项(即为空)。所以默认情况下,不管是HTTPS协议还是HTTP协议的请求,cookie 都会被发送至服务端。 但要注意一点,secure选项只
POST请求的 Content-Type 常见的有哪几种?
Posted on:2024年8月10日 at 17:06POST 请求的 Content-Type 可以有多种类型,常见的包括: application/x-www-form-urlencoded:用于普通的 HTML 表单提交,在请求正文中将表单字段编码为键值对。 multipart/form-data:用于上传文件或二进制数据的表单提交,请求正文以多部分形式进行编码。 application/json:用于发送 JSON 格式的数据,请求正文中的数
跨域时怎么处理 cookie?
Posted on:2024年8月10日 at 17:06在默认情况下,跨域请求是不会携带 Cookie 的,这是为了保护用户隐私和安全考虑。然而,如果确实需要在跨域请求中携带 Cookie,可以通过以下方式进行处理: 设置 withCredentials 属性:在发送跨域请求的客户端代码中,将 withCredentials 属性设置为 true。例如,在使用 XMLHttpRequest 或 Fetch API 发起请求时,可以添加如下配置: //
HTTP1.0,HTTP1.1,HTTP2.0之间有什么区别?
Posted on:2024年8月10日 at 17:06HTTP1.0 和 HTTP1.1 的一些区别 缓存处理 在 HTTP1.0 中主要使用 header 里的 If-Modified-Since(比较资源最后的更新时间是否一致),Expires(资源的过期时间(取决于客户端本地时间)) 来做为缓存判断的标准。 HTTP1.1 则引入了更多的缓存控制策略: Entity tag:资源的匹配信息 If-Unmodified-Since:比较资源最后的
说说对 HTTP3 的了解
Posted on:2024年8月10日 at 17:06HTTP/3的来源 由于TCP和UDP两者在运输层存在一定差异,TCP的传递效率与UDP相比有天然劣势,于是Google基于UDP开发出了新的协议QUIC(Quick UDP Internet Connections),希望取代TCP提高传输效率,后经过协商将QUIC协议更名为HTTP/3。 QUIC概述 TCP、UDP是我们所熟悉的传输层协议,UDP比TCP相比效率更高但并不具备传输可靠性。而Q
说说WebSocket和HTTP的区别
Posted on:2024年8月10日 at 17:06HTTP协议 HTTP是单向的,客户端发送请求,服务器发送响应。举例来说,当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端。 每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTP或HTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。 HTTP是在TCP之上运行的无状态协议,TC
TCP是怎么判断丢包的?
Posted on:2024年8月10日 at 17:06TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP协议保证数据传输可靠性的方式主要有: 校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制 确认应答与序列号 序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。 确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉
HTTP2中,多路复用的原理是什么?
Posted on:2024年8月10日 at 17:06HTTP/2是一个二进制协议,其基于“帧”的结构设计,改进了很多HTTP/1.1痛点问题。 什么是多路复用? HTTP/1.1协议的请求-响应模型大家都是熟悉的,我们用“HTTP消息”来表示一个请求-响应的过程,那么HTTP/1.1中的消息是“管道串形化”的:只有等一个消息完成之后,才能进行下一条消息;而HTTP/2中多个消息交织在了一起,这无疑提高了“通信”的效率。这就是多路复用:在一个HTTP
说说 https 的握手过程
Posted on:2024年8月10日 at 17:06https的详细握手过程 https在七层协议里面属于应用层,他基于tcp协议,所以,https握手的过程,一定先经过tcp的三次握手,tcp链接建立好之后,才进入https的对称密钥协商过程,对称密钥协商好之后,就开始正常的收发数据流程。 接下来拿实际网络数据包来解释https的整个详细的握手过程 打开wireshark抓包工具,并随手打开命令行,输入了如下一行命令 curl https://w
TCP和HTTP请求之间有什么关系?
Posted on:2024年8月10日 at 17:06我们知道开启一个TCP链接之后,HTTP请求就会并行发出。 首先我们来思考一个问题,浏览器与服务器建立一个TCP链接之后,会不会在完成一个HTTP请求后立马断开? HTTP/1.0的时候是会的,需要手动设置Connection: keep-alive。 HTTP/1.1的时候Connection默认为keep-alive 。 一般情况下,复用的 TCP连接在等待设置的超时时间之后还没有被任何连接使
从存储位置看,浏览器缓存分为哪几种?
Posted on:2024年8月10日 at 17:06从存储位置来看,浏览器缓存一共分为四种,并且各自有优先级,当依次查找缓存且都没有命中的时候,才会去请求网络。 Service Worker Memory Cache Disk Cache Push Cache Service Worker Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。因为
Cache-Control 有哪些常见配置值?
Posted on:2024年8月10日 at 17:06Cache-Control的值有十几种,其中包含了请求首部可携带的和响应首部携带的。 咱们先看看 request首部 Cache-Control的值 no-cache 当客户端请求时携带这个首部字段的时候,通过中间的缓存服务器时,会不去拿缓存资源,而是让中间服务器转发给资源服务器,资源服务器看看一下这个资源过期没有,如果没有就会告知中间服务器,可以使用缓存资源。否则资源服务器就会直接返回新的资源。
说说对TCP/IP协议的了解
Posted on:2024年8月10日 at 17:06TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由 FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 TC
说说你对“三次握手”、“四次挥手”的理解
Posted on:2024年8月10日 at 17:06我们都知道TCP是面向连接的,三次握手就是用来建立连接的,四次握手就是用来断开连接的。 三次握手 先上图: 我们来看一下三次握手的过程: 一开始,客户端和服务端都处于 CLOSED 状态。客户端主动打开连接,服务端被动打卡连接,结束CLOSED z状态,开始监听,进入 LISTEN 状态。 一次握手 客户端会随机初始化序号(client_isn),将此序号置于 TCP 首部的「序号」字段中,同时把
为什么推荐将静态资源放到cdn上?
Posted on:2024年8月10日 at 17:06静态资源是什么 静态资源 静态资源是指在不同请求中访问到的数据都相同的静态文件。例如:图片、视频、网站中的文件(html、css、js)、软件安装包、apk文件、压缩包文件等。 动态资源 动态资源是指在不同请求中访问到的数据不相同的动态内容。例如:网站中的文件(asp、jsp、php、perl、cgi)、API接口、数据库交互请求等。 CDN是什么 内容分发网络,Content Delivery
介绍下304过程
Posted on:2024年8月10日 at 17:06首先304状态码是对客户端有缓存情况下服务端的一种响应。 客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。 因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。服务端只要判断这个时间和当前请求的文件的修改时间就可以确定是返回
什么是DNS劫持?
Posted on:2024年8月10日 at 17:06DNS 劫持作为最常见的网络攻击方式,是每个站长或者运维团队最为头疼的事情。苦心经营的网站受到 DNS 劫持后,不仅会影响网站流量、权重,还会让用户置身于危险之中,泄露隐私造成财产损失。 就是这样一个简单到不能再简单的攻击方式,在 2009 年制造了轰动全球的“银行劫持案”,导致巴西最大银行 Banco Bradesco 银行近 1% 客户受到攻击而导致账户被盗。黑客利用宽带路由器缺陷对用户 DN
301、302、303、307、308 这些状态码有什么区别?
Posted on:2024年8月10日 at 17:063xx开头的状态码都表示重定向。 先说明一些版本问题, 301和302都是http1.0就定义好的,在http1.1中才新增了其余的状态码。 301 Moved Permanently 永久重定向 在请求的 URL 已被移除时使用。响应的 Location 首部中应该包含 资源现在所处的 URL。 默认情况下,永久重定向是会被浏览器缓存的。 302 Found 临时重定向 与 301 状态码类似;
TLS 1.3 做了哪些改进?
Posted on:2024年8月10日 at 17:06TLS 1.2 虽然存在了 10 多年,经历了无数的考验,但历史的车轮总是不断向前的,为了获得更强的安全、更优秀的性能,在2018年就推出了 TLS1.3,对于TLS1.2做了一系列的改进,主要分为这几个部分:强化安全、提高性能。 强化安全 在 TLS1.3 中废除了非常多的加密算法,最后只保留五个加密套件: TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA38
如何理解 HTTP 代理?
Posted on:2024年8月10日 at 17:06我们知道在 HTTP 是基于请求-响应模型的协议,一般由客户端发请求,服务器来进行响应。 当然,也有特殊情况,就是代理服务器的情况。引入代理之后,作为代理的服务器相当于一个中间人的角色,对于客户端而言,表现为服务器进行响应;而对于源服务器,表现为客户端发起请求,具有双重身份。 那代理服务器到底是用来做什么的呢? 功能 负载均衡。客户端的请求只会先到达代理服务器,后面到底有多少源服务器,IP 都是多
TLS1.2 握手的过程是怎样的?
Posted on:2024年8月10日 at 17:06HTTP 是明文传输的协议,传输保文对外完全透明,非常不安全,那如何进一步保证安全性呢? 由此产生了 HTTPS,其实它并不是一个新的协议,而是在 HTTP 下面增加了一层 SSL/TLS 协议,简单的讲,HTTPS = HTTP + SSL/TLS。 那什么是 SSL/TLS 呢? SSL 即安全套接层(Secure Sockets Layer),在 OSI 七层模型中处于会话层(第 5 层)。
HTTP 中如何处理表单数据的提交?
Posted on:2024年8月10日 at 17:06在 http 中,有两种主要的表单提交的方式,体现在两种不同的Content-Type取值: application/x-www-form-urlencoded multipart/form-data 由于表单提交一般是POST请求,很少考虑GET,因此这里我们将默认提交的数据放在请求体中。 application/x-www-form-urlencoded 对于application/x-www
说说你对cookie的理解
Posted on:2024年8月10日 at 17:06Cookie 简介 HTTP 是一个无状态的协议,每次 http 请求都是独立、无关的,默认不需要保留状态信息。但有时候需要保存一些状态,怎么办呢? HTTP 为此引入了 Cookie。Cookie 本质上就是浏览器里面存储的一个很小的文本文件,内部以键值对的方式来存储(在chrome开发者面板的Application这一栏可以看到)。向同一个域名下发送请求,都会携带相同的 Cookie,服务器拿
HTTP1.1 中如何解决 HTTP 的队头阻塞问题?
Posted on:2024年8月10日 at 17:06什么是 HTTP 队头阻塞? HTTP 传输是基于请求-应答的模式进行的,报文必须是一发一收,但值得注意的是,里面的任务被放在一个任务队列中串行执行,一旦队首的请求处理太慢,就会阻塞后面请求的处理。这就是著名的 HTTP队头阻塞 问题。 并发连接 对于一个域名允许分配多个长连接,那么相当于增加了任务队列,不至于一个队伍的任务阻塞其它所有任务。在RFC2616规定过客户端最多并发 2 个连接,不过事
HTTP 报文结构是怎样的?
Posted on:2024年8月10日 at 17:06对于 TCP 而言,在传输的时候分为两个部分:TCP头和数据部分。 而 HTTP 类似,也是header + body的结构,具体而言: 起始行 + 头部 + 空行 + 实体 由于 http 请求报文和响应报文是有一定区别,因此我们分开介绍。 起始行 对于请求报文来说,起始行类似下面这样: GET /home HTTP/1.1 也就是方法 + 路径 + http版本。 对于响应报文来说,起始行一般
为什么说HTTP是无状态的协议?
Posted on:2024年8月10日 at 17:06因为它的每个请求都是完全独立的,每个请求包含了处理这个请求所需的完整的数据。 无状态协议是指协议对务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 Http协议不像建立了socket连接的两个终端,双方是可以互相通信的,http的客户端只能通过请求服务器来获取相关内容或文件信息。 h
TCP 和 UDP的区别是什么?
Posted on:2024年8月10日 at 17:05TCP(传输控制协议)和 UDP(用户数据报协议)是两种常见的网络传输协议。它们之间的主要区别如下: 连接方式:TCP 是面向连接的协议,需要在通信前建立连接,而 UDP 是无连接的协议,可以直接发送数据包。 可靠性:TCP 保证传输数据的可靠性,能够保证所有数据到达目的地且顺序正确;UDP 不保证传输数据的可靠性,可能会出现数据丢失或乱序等问题。 开销:TCP 在传输过程中要维护连接状态、进行流
Nginx支持哪些负载均衡调度算法?
Posted on:2024年8月10日 at 17:05weight轮询(默认,常用,具有HA功效!):接收到的请求按照权重分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配
正向代理和反向代理分别是什么?
Posted on:2024年8月10日 at 17:05说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道; 此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户。 正向代理 正向代理也是大家最常接触的到的代理模式。 在如今的网络环境下,我们如
什么是负载均衡?
Posted on:2024年8月10日 at 17:05客户端发送的、Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。将服务器接收到的请求按照规则分发的过程,称为负载均衡。 负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种。 硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动、中国联通这
nginx是什么?
Posted on:2024年8月10日 at 17:05Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器,基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。 然而,这些服务器在设计之初受到当时环境的
简单说下你对 HTTP2 的理解
Posted on:2024年8月10日 at 17:05HTTP/1.1 存在的问题 TCP 连接数限制 对于同一个域名,浏览器最多只能同时创建 6~8 个 TCP 连接 (不同浏览器不一样)。为了解决数量限制,出现了 域名分片 技术,其实就是资源分域,将资源放在不同域名下 (比如二级子域名下),这样就可以针对不同域名创建连接并请求,以一种讨巧的方式突破限制,但是滥用此技术也会造成很多问题,比如每个 TCP 连接本身需要经过 DNS 查询、三步握手、慢
强缓存和协商缓存分别是什么?
Posted on:2024年8月10日 at 17:05这里说的缓存是指浏览器(客户端)在本地磁盘中对访问过的资源保存的副本文件。 浏览器缓存主要有以下几个优点: 减少重复数据请求,避免通过网络再次加载资源,节省流量。 降低服务器的压力,提升网站性能。 加快客户端加载网页的速度, 提升用户体验。 浏览器缓存分为强缓存和协商缓存,两者有两个比较明显的区别: 如果浏览器命中强缓存,则不需要给服务器发请求;而协商缓存最终由服务器来决定是否使用缓存,即客户端与
HTTPS 为什么是安全的?
Posted on:2024年8月10日 at 17:05以一个故事来学习 HTTPS: 来自中国的张大胖和位于米国的 Bill 进行通信。 由于张大胖和 Bill 都是使用 HTTP 进行通信,HTTP 是明文的,所以他们的聊天都是可被窥视的。于是,二人准备想要改变现状,所以 HTTPS 首先要解决的问题就是要保证传输的内容只有这两个人能看懂。 plan1:使用对称密钥 两人商量了一下,可以使用对称密钥进行加密。(对称密钥也就是加密和解密使用的是同一个
请说说cookie与session有什么区别?
Posted on:2024年8月10日 at 17:05由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session。 典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。 在服务
什么是对象存储OSS?
Posted on:2024年8月10日 at 17:05对象存储OSS(Object Storage Service)是一种海量、安全、低成本、高持久的云存储服务。 OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 OSS相关概念 存储类型(Storage Class) OSS提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。其中标准存储类型提供高持久、高可
URI、URL、URN分别是什么?
Posted on:2024年8月10日 at 17:04URL代表资源的路径地址,而URI代表资源的名称。 URI: Universal Resource Identifier 统一资源标志符 URL: Universal Resource Locator 统一资源定位符 URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。 URN: Universal Resource Name
TCP链接为什么会采用三次握手,而不是两次或者四次呢?
Posted on:2024年8月10日 at 17:04建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。 采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。 失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。 考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机
Http 缓存策略,有什么区别,分别解决了什么问题
Posted on:2024年7月19日 at 18:171)浏览器缓存策略浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存;否则,则向服务器发起请求并携带缓存标识。根据是否需向服务器发起HTTP请求,将缓存过程划分为两个部分:强制缓存和协商缓存,强缓优先于协商缓存。强缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行比较缓存策略。协商缓存,
HTTP和HTTPS的区别
Posted on:2024年7月19日 at 18:16HTTPS是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密(在传输层) HTTP + 加密 + 认证 + 完整性保护 = HTTPS HTTPS协议需要到CA申请证书或自制证书 HTTP的信息是明文传输; HTTPS则是具有安全性的ssl加密 HTTP是直接与TCP进行数据传输; 而HTTPS运行在SSL/TLS(安全传输层协议)之上,SSL
HTTP的长连接和短连接分别是什么?keep-alive是干什么的
Posted on:2024年7月19日 at 18:16HTTP的长连接和短连接实际上是TCP的长连接和短连接,HTTP属于应用层协议。 短连接:浏览器和服务器每进行一次HTPP操作,就建立一个连接,但任务结束就会中断这个连接 长连接:HTTP1.1规定了默认保持长连接,也称为持久连接。 意思就是,数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据。 长连接好处: 同一个客户端可以使用这个长连接处理其他
HTTP Request Header和Response Header里面分别都有哪些比较重要的字段
Posted on:2024年7月19日 at 18:15HTTP Request Header(请求头)和Response Header(响应头)在HTTP通信中扮演着至关重要的角色,它们分别包含了客户端向服务器发送请求时和服务器向客户端返回响应时所需的各种重要信息。以下是这两部分中一些比较重要的字段及其简要说明:HTTP Request Header(请求头)Host:指定目标服务器的域名或IP地址。这是必须的字段,因为HTTP是一个基于TCP/IP
GET和POST的请求的区别
Posted on:2024年7月19日 at 18:13GET和POST是HTTP协议中两种常见的请求方法,它们在用途、数据传输方式、安全性、数据限制等方面存在显著差异。以下是GET和POST请求的主要区别:1. 用途GET请求:主要用于从服务器获取资源,通常用于查询数据,而不应该用于对服务器产生影响。它适用于请求服务器发送资源或数据,例如获取网页内容、图片等。POST请求:通常用于向服务器提交数据,对服务器状态产生影响,比如提交表单、上传文件等。PO
常见的HTTP请求方法
Posted on:2024年7月19日 at 18:11HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP请求方法(也称为“动作”或“操作”)定义了客户端希望对服务器上的资源进行的操作类型。HTTP/1.0 定义了三种请求方法:GET、POST 和 HEAD。随着HTTP/1.1 的引入,又增加了几种请求方法,以支持更丰富的客户端-服务器交互。下面是一些常见
options请求方法及使用场景
Posted on:2024年7月19日 at 18:10OPTIONS是除了GET和POST之外的其中一种 HTTP请求方法。OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。该请求方法的响应不能缓存。OPTIONS请求方法的主要用途有两个:获取服务器支持的所有HTTP请求方法;用来检查访问权限
HTTP 1.0和 HTTP 1.1 之间有哪些区别?
Posted on:2024年7月19日 at 18:09HTTP 1.0和 HTTP 1.1 有以下区别:连接方面 的区别,http1.1 默认使用持久连接,而 http1.0 默认使用非持久连接。http1.1 通过使用持久连接来使多个 http 请求复用同一个 TCP 连接,以此来避免使用非持久连接时每次需要建立连接的时延。资源请求方面 的区别,在 http1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象
HTTP 1.1和 HTTP 2.0 的区别
Posted on:2024年7月19日 at 18:07二进制协议:HTTP/2 是一个二进制协议。在 HTTP/1.1 版中,报文的头信息必须是文本(ASCII 编码),数据体可以是文本,也可以是 二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为”帧”,可以分为头信息帧和数据帧。 帧的概念是它实现多路复用的基础。多路复用: HTTP/2 实现了多路复用,HTTP/2 仍然复用 TCP 连接,但是在一个连接里,客户端
HTTP协议的优点和缺点
Posted on:2024年7月19日 at 18:06HTTP 是超文本传输协议,它定义了客户端和服务器之间交换报文的格式和方式,默认使用 80 端口。它使用 TCP 作为传输层协议,保证了数据传输的可靠性。HTTP协议具有以下优点:支持客户端/服务器模式简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。无连接:无连接的含义是限制每次链接只处理一个请求。服务器处理
HTTP状态码
Posted on:2024年7月19日 at 18:05状态码的类别:类别原因描述1xxInformational(信息性状态码)接受的请求正在处理2xxSuccess(成功状态码)请求正常处理完毕3xxRedirection(重定向状态码)需要进行附加操作一完成请求4xxClient Error (客户端错误状态码)服务器无法处理请求5xxServer Error(服务器错误状态码)服务器处理请求出错1. 2XX (Success 成功状态码)状态码
DNS协议介绍
Posted on:2024年7月19日 at 18:031. DNS 协议的概念概念: DNS 是域名系统 (Domain Name System) 的缩写,提供的是一种主机名到 IP 地址的转换服务,就是我们常说的域名系统。它是一个由分层的 DNS 服务器组成的分布式数据库,是定义了主机如何查询这个分布式数据库的方式的应用层协议。能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。作用: 将域名解析为IP地址,客户端向DNS服务器(
介绍下WebSocket
Posted on:2024年7月19日 at 18:021. WebSocket 是什么WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。WebSocket 的出现就解决了半双工通信的弊端。它最大的特点是:服务器可以向客户端主动推动消息,客户端也可以主动向服务器推送消息
即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别?
Posted on:2024年7月19日 at 18:01短轮询和长轮询的目的都是用于实现客户端和服务器端的一个即时通讯。短轮询的基本思路是 浏览器每隔一段时间向浏览器发送 http 请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。这种方式的优点是比较简单,易于理解。缺点是这种方式由于需
你知道哪些应用层协议?
Posted on:2022年5月6日 at 22:01应用层常见的协议: 超文本传输 Http、Https 文本传输:FTP 电子邮件:SMTP、POP3、IMAP 动态主机配置:DHCP 域名系统:DNS
对于定长和不定长的数据,HTTP 是怎么传输的?
Posted on:2022年2月6日 at 21:47定长包体 对于定长包体而言,发送端在传输的时候一般会带上 Content-Length,来指明包体的长度。 不定长包体 介绍另外一个 http 头部字段:Transfer-Encoding: chunked。 表示分块传输数据,设置这个字段后会自动产生两个效果: Content-Length 字段会被忽略 基于长连接持续推送动态内容
get 和 post 请求在缓存方面有什么区别?
Posted on:2021年11月17日 at 22:51缓存一般只适用于那些不会更新服务端数据的请求。 一般 get 请求都是查找请求,不会对服务器资源数据造成修改,而 post 请求一般都会对服务器数据造成修改,所以,一般会对 get 请求进行缓存,很少会对 post 请求进行缓存。
get 请求是否限制了传参长度?
Posted on:2021年11月17日 at 22:49HTTP 协议未规定 GET 和 POST 的长度限制 GET 的最大长度显示是因为浏览器和 web 服务器限制了 URI 的长度 不同的浏览器和 WEB 服务器,限制的最大长度不一样 要支持 IE,则最大长度为 2083byte,若只支持 Chrome,则最大长度 8182byte
协商缓存中,有了 Last-Modified,为什么还会出现 ETag?
Posted on:2021年8月15日 at 15:28ETag的出现,主要是为了解决 Last-Modified 无法解决的一些问题: 某些服务器不能精确得到文件的最后修改时间, 这样就无法通过最后修改时间来判断文件是否更新了。 某些文件的修改非常频繁,在秒以下的时间内进行修改. Last-Modified只能精确到秒。 一些文件的最后修改时间改变了,但是内容并未改变。 我们不希望客户端认为这个文件修改了。