在数据通信中,发送方的发送速度和接收方的接收速度不一定是相等的, 如果发送方的速度太快,会导致接收方处理不过来,需要把处理不来的数据放在缓冲区里(buffer)。如果接收方的缓冲区已经满了,发送方继续发送数据将会导致数据丢失。在具有不同网络速度的机器进行通信的环境中,具有流量控制机制是必不可少的。例
当代人的日常生活中,手机网络连接会经常在 Wi-Fi 和 蜂窝网络(Cellular)中进行切换。比如:早上从家里出门,连接从 Wi-Fi 变为 cellular;到喜欢的餐厅吃早餐,手机自动连接餐厅的 Wi-Fi;从餐厅到公司,连接又经历了 Wi-Fi -> cellular -> Wi-Fi 的
大家知道 TCP 建立连接需要 3 次握手,这需要 1.5-RTT,如果再加上 TLS 的握手时间,总共需要 3-RTT,耗时将近 200-300 ms。随着互联网的高速发展,用户对于性能体验要求越来越高,TCP 连接握手带来的长时延显然是不可接受的。QUIC 因此提出一个新的建立连接机制,把传输和
QUIC 做为新一代的互联网传输协议,[IETF QUIC 工作组]在设计协议标准时除了关注优化性能,安全性也是需要重点考虑的。这篇文章介绍了 QUIC 的地址验证(Address Validation)。 地址验证主要是用于确保端点(endpoint)不能被用于[流量放大攻击](traffic a
QUIC 目前由 IETF 工作组 起草进行标准化设计,预计 2021 年初提交 RFC。IETF 工作组在设计过程中发布了多个版本的草案,目前最新的草案版本是 2020-10-20 发布的 draft-32。另外 QUIC 是在用户侧(User space)实现的,版本迭代会比较方便和快速,市面上
引言 本文详细介绍 Posix API 与 网络协议栈 之间的关系;三次握手、数据传输、四次挥手的过程。上下文耦合性较高,不建议跳跃阅读。 Posix API 有哪些 哪些是Posix API呢,就是Linux网络编程的这些API,本文介绍下列8种。 Tcp Server 1.socket
学习内容(目录): 1.为什么会要有携程? 2.携程实现过程,原语操作(哪些原语操作) 3.携程如何定义 struct coroutine 4.调度器如何定义, struct scheduler 5.携程的调度执行策略 6.posix api做到一致
一、io_uring的引入 为了方便说明io_uring的作用,先举一个通俗点的例子 1、通过异步提高读写的效率 假设有一批
在前文已经基于dpdk实现了用户态协议栈,但是有个缺陷就是不能连接多服务端。这也就引出了本文的目的——如何实现自定的 epoll。 为什么不用系统自带的epoll? 用户态协议栈是指运行在用户态的协议栈,与传统的内核态协议栈相比,它有许多优点,如灵活性、可扩展性、高性能等。因为可以避免内核态和用户态