蒸汽日记

QUIC协议详解 - 流量控制

在数据通信中,发送方的发送速度和接收方的接收速度不一定是相等的, 如果发送方的速度太快,会导致接收方处理不过来,需要把处理不来的数据放在缓冲区里(buffer)。如果接收方的缓冲区已经满了,发送方继续发送数据将会导致数据丢失。在具有不同网络速度的机器进行通信的环境中,具有流量控制机制是必不可少的。例

蒸汽 发布于 2025-03-26

QUIC协议详解 - 连接迁移

当代人的日常生活中,手机网络连接会经常在 Wi-Fi 和 蜂窝网络(Cellular)中进行切换。比如:早上从家里出门,连接从 Wi-Fi 变为 cellular;到喜欢的餐厅吃早餐,手机自动连接餐厅的 Wi-Fi;从餐厅到公司,连接又经历了 Wi-Fi -> cellular -> Wi-Fi 的

蒸汽 发布于 2025-03-26

QUIC协议详解 - 加密与传输握手

大家知道 TCP 建立连接需要 3 次握手,这需要 1.5-RTT,如果再加上 TLS 的握手时间,总共需要 3-RTT,耗时将近 200-300 ms。随着互联网的高速发展,用户对于性能体验要求越来越高,TCP 连接握手带来的长时延显然是不可接受的。QUIC 因此提出一个新的建立连接机制,把传输和

蒸汽 发布于 2025-03-26

QUIC协议详解 - 地址验证

QUIC 做为新一代的互联网传输协议,[IETF QUIC 工作组]在设计协议标准时除了关注优化性能,安全性也是需要重点考虑的。这篇文章介绍了 QUIC 的地址验证(Address Validation)。 地址验证主要是用于确保端点(endpoint)不能被用于[流量放大攻击](traffic a

蒸汽 发布于 2025-03-26

QUIC协议详解 - 版本协商

QUIC 目前由 IETF 工作组 起草进行标准化设计,预计 2021 年初提交 RFC。IETF 工作组在设计过程中发布了多个版本的草案,目前最新的草案版本是 2020-10-20 发布的 draft-32。另外 QUIC 是在用户侧(User space)实现的,版本迭代会比较方便和快速,市面上

蒸汽 发布于 2025-03-26

UNIX高级编程 -3 文件IO

UNIX中大部分文件I/O只需用5个函数:open, read, write, lseek, close 不带缓冲:每个read和write都调用内核中的一个系统调用。不属于ISO C, 但是是POSIX.1和Single UNIX Specification的组成部分 多进程间共享文件: 原子操作

蒸汽 发布于 2025-03-24

Linux 动态库格式详解

1.动态库(Linux叫共享目标文件)和普通的可执行程序(EXEC)有什么 普通的程序有main函数,存在操作系统可以进入的入口,可独立运行 但是库文件没有main函数,只能在有main函数的程序中调用运行,不可独立运行 这是我们写的add.c文件 编译成动态库 -

蒸汽 发布于 2025-03-19

《UNIX环境高级编程》 之 2-UNIX标准

2.2 UNIX标准化 2.2.1 ISO C 目标:实现C程序的可移植性,使其能够适合于大量不同的操作系统 内容:定义了C程序设计语言的语法和予以,还定义了其标准库,现今所有的UNIX操作系统都提供该C标准库 工作组: ISO/IEC JTC1/SC22/WG14 ,简称WG14 定义的头文件:

蒸汽 发布于 2025-03-10

《UNIX高级环境编程》之 1-UNIX基础知识

前置知识: 测试的OS环境: BSD:Berkeley software Distribution 加州大学伯克利分校开发的类unix系统 SVRx:表示AT&T的系统V的第x版 XPG3: X/Open可移植性指南 ANSI C:C语言的ANSI标准

蒸汽 发布于 2025-03-08