
计算机网络
文章平均质量分 84
计算机网络
_OLi_
这个作者很懒,什么都没留下…
展开
-
TCP 三次握手与四次挥手面试题(计算机网络)
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。原创 2024-04-08 22:26:10 · 2174 阅读 · 0 评论 -
TCP 重传、滑动窗口、流量控制、拥塞控制(计算机网络)
TCP 针对数据包丢失的情况,会用解决。原创 2024-04-09 22:34:43 · 1328 阅读 · 0 评论 -
HTTP/3 强势来袭(计算机网络)
HTTP/3 同 HTTP/2 一样采用二进制帧的结构,不同的地方在于 HTTP/2 的二进制帧里需要定义 Stream,而 HTTP/3 自身不需要再定义 Stream,直接使用 QUIC 里的 Stream,于是 HTTP/3 的帧的结构也变简单了。对于静态表的变化,HTTP/2 中的 HPACK 的静态表只有 61 项,而 HTTP/3 中的 QPACK 的静态表扩大到 91 项。HTTP/2 和 HTTP/3 的 Huffman 编码并没有多大不同,但是动态表编解码方式不同。原创 2024-04-02 14:43:56 · 629 阅读 · 0 评论 -
既然有 HTTP 协议,为什么还要有 WebSocket?(计算机网络)
TCP 协议本身是全双工的,但我们最常用的 HTTP/1.1,虽然是基于 TCP 的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,需要使用支持全双工的 WebSocket 协议。在 HTTP/1.1 里,只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用 WebSocket 协议。WebSocket 和 socke原创 2024-04-02 16:09:30 · 873 阅读 · 0 评论 -
HTTPS 如何优化?(计算机网络)
重放攻击的危险之处在于,如果中间人截获了某个客户端的 Session ID 或 Session Ticket 以及 POST 报文,而一般 POST 请求会改变数据库的数据,中间人就可以利用此截获的报文,不断向服务器发送该报文,这样就会导致数据库的数据被中间人改变了,而客户是不知情的。当然为了安全性,内存中的会话密钥会定期失效。),这个列表是由 CA 定期更新,列表内容都是被撤销信任的证书序号,如果服务器的证书在此列表,就认为证书已经失效,不在的话,则认为证书是有效的。原创 2024-04-01 21:58:35 · 1358 阅读 · 0 评论 -
HTTPS ECDHE 握手解析(计算机网络)
而对于 RSA 握手过程,必须要完成 TLS 四次握手,才能传输应用数据。所以,,有点「抢跑」的意思,它被称为是「」,跟「」有点像,都是在还没连接完全建立前,就发送了应用数据来提高传输效率。原创 2024-04-01 17:34:40 · 1737 阅读 · 0 评论 -
HTTPS RSA 握手解析(计算机网络)
再用会话密钥加密一下,让服务器做个验证,验证加密通信「是否可用」和「之前握手信息是否有被中途篡改过」。原创 2024-03-31 17:18:15 · 974 阅读 · 0 评论 -
HTTP/2 牛逼在哪?(计算机网络)
1.HTTP/2 没有在 URI 里引入新的协议名,仍然用「http://」表示明文协议,用「https://」表示加密协议,只需要浏览器和服务器在背后自动升级协议,这样可以让用户意识不到协议的升级,很好的实现了协议的平滑升级。HTTP/2 通过 Stream 的并发能力,解决了 HTTP/1 队头阻塞的问题,看似很完美了,但是 HTTP/2 还是存在“队头阻塞”的问题,只不过问题不是在 HTTP 这一层面,而是在 TCP 这一层。的方式,将体积压缩了近一半,而且针对后续的请求头部,还可以建立。原创 2024-04-02 14:31:37 · 902 阅读 · 0 评论 -
既然有 HTTP 协议,为什么还要有 RPC?(计算机网络)
纯裸 TCP 是能收发数据,但它是个无边界的数据流,会产生粘包的问题,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP 和各类 RPC 协议就是在 TCP 之上定义的应用层协议。RPC 本质上不算是协议,而是一种调用方式,而像 gRPC 和 Thrift 这样的具体实现,才是协议,它们是实现了 RPC 调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时 RPC 有很多种实现方式,不一定非得基于 TCP 协议。从发展历史来说,HTTP 主要用于 B/S 架构,而原创 2024-04-02 15:29:44 · 987 阅读 · 0 评论 -
HTTP 常见面试题(计算机网络)
HTTP/1.1相较于HTTP/1.0新增了长连接,解决了请求时的队头阻塞,但没有解决响应时的队头阻塞。而HTTP/2进行了头部压缩,以及二进制格式传输,并基于HTTPS将多个 Stream 复用在一条 TCP 连接中,解决了HTTP层面请求和响应的队头阻塞,通过Stream ID来区分不同的流,并且不同 Stream 的帧是可以乱序发送的,再由接收端通过 Stream ID 有序组装成 HTTP 消息,但没有解决TCP层面的队头阻塞,如果一个Stream中的包丢了,就会触发 TCP 的重传机制,这样在原创 2024-03-31 16:49:28 · 3070 阅读 · 0 评论 -
HTTP/1.1 如何优化?(计算机网络)
客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期,客户端发送请求的时候带上响应数据的摘要,服务器比对后发现资源没有变化,就发出不带包体的 304 响应,告诉客户端缓存的响应仍然有效。3.按需访问资源,只访问当前用户看得到/用得到的资源,当客户往下滑动,再访问接下来的资源,以此达到延迟请求,也就减少了同一时间的 HTTP 请求次数。1.将原本由客户端处理的重定向请求,交给代理服务器处理,这样可以减少重定向请求的次数;原创 2024-03-31 16:44:43 · 709 阅读 · 0 评论 -
HTTP/1.1、HTTP/2、HTTP/3 演变(计算机网络)
图中发送方发送了很多个 packet,每个 packet 都有自己的序号,你可以认为是 TCP 的序列号,其中 packet 3 在网络中丢失了,即使 packet 4-6 被接收方收到后,由于内核中的 TCP 数据不是连续的,于是接收方的应用层就无法从内核中读取到,只有等到 packet 3 重传后,接收方的应用层才可以从内核中读取到数据,这就是 HTTP/2 的队头阻塞问题,是在 TCP 层面发生的。我们都知道 HTTP/1.1 的实现是基于请求-响应模型的。原创 2024-03-31 15:31:21 · 1039 阅读 · 0 评论 -
HTTP/1.1 特性(计算机网络)
HTTP/1.1采用了长连接来提高性能,只要客户端和服务器端没有一方主动断开连接,就会在一定时间内保持连接,从而避免了多次连接和断开产生的开销,长连接使得管道网络传输成为可能,之前的情况是必须等第一个请求得到响应时才能发送第二个请求,如果使用管道网络传输,那么就可以在发送的第一个请求没有得到响应时就发送第二个请求,但是服务器必须按照接收请求的顺序发送对这些管道化请求的响应,如果服务端在处理某一个请求时耗时比较长,那么后续的请求的处理都会被阻塞住,这称为「队头堵塞」,就和堵车一样,会导致客户端一直请求不到数据原创 2024-03-30 15:02:59 · 3306 阅读 · 1 评论 -
计算机网络 - 基础篇总结
硬件中断函数先暂时屏蔽中断(下一次就直接写入内存而不通知CPU),再发起软中断,软中断调用ksoftirqd 线程从 Ring Buffer 中获取一个数据帧,用sk_buffer(socket_buffer,一种数据类型)表示,然后由网络协议栈处理,先进入网络接口层,去掉帧头和帧尾,再进入网络层,去掉IP头部,接着进入传输层去掉TCP 头或 UDP 头,根据四元组「源 IP、目的 IP、源端口、目的端口」 作为标识,找出对应的 Socket,并把数据放到 Socket 的接收缓冲区。原创 2024-03-30 11:49:15 · 1540 阅读 · 0 评论 -
GET 与 POST(计算机网络)
只是因为 RFC 规范定义的 GET 请求是获取资源,所以根据这个语义不需要用到 body。因为 HTTP 传输的内容都是明文的,虽然在浏览器地址拦看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。所以,要避免传输过程中数据被窃取,就要使用 HTTPS 协议,这样所有 HTTP 的数据都会被加密传输。另外,URL 中的查询参数也不是 GET 所独有的,POST 请求的 URL 中也可以有参数的。POST 不安全,不幂等,(大部分实现)不可缓存。GET 方法是安全、幂等、可被缓存的。原创 2024-03-30 11:39:58 · 591 阅读 · 0 评论 -
TCP/IP 网络模型有哪几层?(计算机网络)
网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。原创 2024-03-29 14:29:01 · 800 阅读 · 0 评论 -
HTTP 和 HTTPS(计算机网络)
1.加密传输,更安全(在HTTP层与TCP层之间加上了SSL/TTL安全协议)SSL和TTL是在不同时期的两种叫法,含义相同。2.默认端口号:4433.TCP三次握手即可+SSL/TTL四次握手(RSA算法和ECDHE算法)4.采用对称加密和非对称加密结合的「混合加密」方式:在通信建立前采用非对称加密的方式交换「会话秘钥」。在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。采用「混合加密」的方式的原因:对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交原创 2023-12-04 16:41:20 · 1320 阅读 · 0 评论 -
HTTP 缓存机制(计算机网络)
只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存而无需再请求服务器。如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话,。Cache-control 选项更多一些,设置更加精细,所以建议使用 Cache-Control 来实现强制缓存。原创 2023-12-04 14:42:25 · 1158 阅读 · 0 评论 -
HTTP 基本概念(计算机网络)
HTTP(HyperText Transfer Protocol) :超文本传输协议。「HTTP 是用于从互联网服务器传输超文本到本地浏览器的协议」,这种说法正确吗?。因为也可以是「服务器< -- >服务器」,所以采用的描述会更准确。原创 2023-12-02 15:45:40 · 1536 阅读 · 0 评论 -
Linux 系统是如何收发网络包的?(计算机网络)
1.Linux收包:网卡收到网络包之后会通过 DMA 技术将网络包写入RingBuffer环形缓冲区,接着网卡向 CPU 发起硬件中断,当 CPU 收到硬件中断请求后,根据中断表,调用已经注册的中断处理函数。原创 2023-12-01 21:26:04 · 1481 阅读 · 0 评论 -
OSI七层模型与TCP/IP四层模型的区别(计算机网络)
OSI 网络模型共有 7 层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。OSI 网络模型提出的只是概念理论上的分层,并没有提供具体的实现方案。原创 2023-12-01 19:41:45 · 1357 阅读 · 0 评论 -
键入网址到网页显示,期间发生了什么?(计算机网络)
但是光有web服务器名www.server.com是不够的,只知道一个人的名字是找不到人的,我们还需要服务器的IP地址。对URL进行解析之后,浏览器确定了 Web 服务器和文件名,就会根据这些信息来生成 HTTP 请求消息。而DNS服务器就可以通过服务器名提供它的IP地址(相当于一个电话本,通过人名查询电话号码),下面以http://www.server.com/dir1/file1.html为例。例如www.server.com实际上是www.server.com.DNS域名是分层级的,越靠右层级越高。原创 2023-11-30 21:43:03 · 1322 阅读 · 0 评论