-
NET 网络专题汇总-07-HTTP/1.1 如何优化
概览
我们可以从下面这三种优化思路来优化 HTTP/1.1 协议:
尽量避免发送 HTTP 请求;
在需要发送 HTTP 请求时,考虑如何减少请求次数;
减少服务器的 HTTP 响应的数据大小;
下面,就针对这三种思路具体看看有哪些优化方法。
如何避免发送 HTTP 请求?
这个思路你看到是不是觉得很奇怪,不发送 HT...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-07-HTTP 常见面试题
概览
HTTP 基本概念
Get 与 Post
HTTP 特性
HTTP 缓存技术
HTTPS 与 HTTP
HTTP/1.1、HTTP/2、HTTP/3 演变
HTTP 是什么?
HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。
能否详细解释「超文本传输协议」?
HTTP 的名字「超文本协议传输」,它可以拆成三个部分:
超文本
传...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-23-用了 TCP 协议,数据一定不会丢吗?
Q
问大家一句:TCP 是一个可靠的传输协议,那它一定能保证数据不丢失吗?
这次,就跟大家探讨这个问题。
数据包的发送流程
首先,我们两个手机的绿皮聊天软件客户端,要通信,中间会通过它们家服务器。大概长这样。
用户A 《=》 服务器 《=》 用户B
但为了简化模型,我们把中间的服务器给省略掉,假设这是个端到端的通信。且为了保证消息的可靠性,我们盲猜它们之间用的是TCP协议进行通...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-22-没有 accept,能建立 TCP 连接吗?
Q
这次,我们来讨论一下,没有 accept,能建立 TCP 连接吗?
下面这个动图,是我们平时客户端和服务端建立连接时的代码流程。
对应的是下面一段简化过的服务端伪代码。
int main()
{
/*Step 1: 创建服务器端监听socket描述符listen_fd*/
listen_fd = socket(AF_INET, SOCK_STREAM,...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-21-服务端没有 listen,客户端发起连接建立,会发生什么?
问题
服务端如果只bind了ip和端口,但是没有调用Listen让这个socket监听连接,这时候如果客户端朝这个服务端socket发数据,会发生啥?
这位读者的角度是以为服务端没有调用 listen,客户端会 ping 不通服务器,很明显,搞错了。
ping 使用的协议是 ICMP,属于网络层的事情,而面试官问的是传输层的问题。
针对这个问题,服务端如果只 bind 了 IP 地址...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-20-TCP 和 UDP 可以使用同一个端口吗?
问题
之前有读者在字节面试的时候,被问到:TCP 和 UDP 可以同时监听相同的端口吗?
关于端口的知识点,还是挺多可以讲的,比如还可以牵扯到这几个问题:
多个 TCP 服务进程可以同时绑定同一个端口吗?
重启 TCP 服务进程时,为什么会出现“Address in use”的报错信息?又该怎么避免?
客户端的端口可以重复使用吗?...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-19-如何基于 UDP 协议实现可靠传输?
如何基于 UDP 协议实现可靠传输?
我记得之前在群里看到,有位读者字节一面的时候被问到:「如何基于 UDP 协议实现可靠传输?」
很多同学第一反应就会说把 TCP 可靠传输的特性(序列号、确认应答、超时重传、流量控制、拥塞控制)在应用层实现一遍。
实现的思路确实这样没错,但是有没有想过,既然 TCP 天然支持可靠传输,为什么还需要基于 UDP 实现可靠传输呢?这不是重复造轮子吗?
...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-18-TCP 协议有什么缺陷?
TCP 协议有什么缺陷?
写的多了后,忽然思考一个问题,TCP 通过序列号、确认应答、超时重传、流量控制、拥塞控制等方式实现了可靠传输,看起来它很完美,事实真的是这样吗?TCP 就没什么缺陷吗?
所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有四个方面:
升级 TCP 的工作很困难;
TCP 建立连接的延迟;
TCP 存在队...
2023-02-22 00:00:00 |
Net