一个 TCP 接收缓冲区问题的解析

2020-01-04
阅读 16 分钟
9.8k
Clinet 与 Server 之间建立一条 TCP 连接,Server 通过 SO_RCVBUF 选项设置连接的接收缓冲区为 2048 字节。Clinet 每隔 100 ms 通过 send() 一个载荷长度很小(2 字节)的 TCP 报文,但 Server 端不调用 recv(),这意味着 Server 收到的 TCP 报文都会存放在接收缓冲区,而当接收缓冲区满时,便应该向 Client 通告零窗口(Ze...

一个 TCP 发送缓冲区问题的解析

2020-01-04
阅读 6 分钟
13.1k
Client 创建一个 TCP 的 socket,并通过 SO_SNDBUF 选项设置它的发送缓冲区大小为 4096 字节,连接到 Server 后,每 1 秒发送一个 TCP 数据段长度为 1024 的报文。Server 端不调用 recv()。预期的结果分为以下几个阶段:

Linux中TCP listen套接字的查找的变化

2019-09-29
阅读 6 分钟
2.6k
The current listener hashtable is hashed by port only. When a process is listening at many IP addresses with the same port (e.g.[IP1]:443, [IP2]:443... [IPN]:443), the inet[6]_lookup_listener() performance is degraded to a link list. It is prone to syn attack.

Linux内核中reuseport的演进

2019-09-28
阅读 8 分钟
13.2k
SO_REUSEPORT选项在Linux 3.9被引入内核,在这之前也有一个很像的选项SO_REUSEADDR。如果你不太清楚这两者的区别和联系,建议阅读How do SO_REUSEADDR and SO_REUSEPORT differ?。如果不想读,那么下面这一节算是为懒人准备的。

内核TCP: remove per-destination timestamp cache

2019-09-25
阅读 2 分钟
2k
与之一起修改的,还有tcp: remove tcp_tw_recycle。tcp_tw_recycle机制是用于内核快速回收TIME_WAIT状态的套接字。但是当网络中存在NAT设备时,该机制反而可能会导致NAT设备背后的客户端难以连接上服务器。

Linux内核TCP Metrics框架

2019-09-23
阅读 1 分钟
3.6k
TCP是一个复杂的协议,这种复杂来源于对报文传输的可靠性承诺。对每条TCP连接来说,除了有独立的状态机、定时器之外,还有拥塞控制相关的一些运行变量,比如RTT、CWND、SSTHRESH等,这些运行参数同样也是每连接(Per-Connection)的

隧道而言,TCP-In-TCP为什么不好

2019-09-19
阅读 2 分钟
3.2k
前天晚上在家中,当我搭起熟悉的ss梯子时, 发现不可用了T.T。登陆到控制台查看,发现国内的IP被Block了。问问身边朋友,也是一样的现象,听说是因为网络安全周?!看来只能寄希望于一周后能恢复吧....

XFRM -- IPsec协议的内核实现框架

2019-09-17
阅读 5 分钟
17.4k
IPsec协议帮助IP层建立安全可信的数据包传输通道。当前已经有了如StrongSwan、OpenSwan等比较成熟的解决方案,而它们都使用了Linux内核中的XFRM框架进行报文接收发送。

锁和无锁

2019-08-02
阅读 8 分钟
2.4k
当我们在编写多线程程序时,常常会涉及到多个线程对共享数据的访问。如果不对这种访问加以限制,往往会导致程序运行结果与预期不符 锁 编写代码时,我们以及习惯了用锁去保护数据。那么,这里的锁是什么?为什么它能满足我们的要求?它存在于哪里? 让我们从一个最简单的例子出发---多个线程并发修改一个全局变量: {代...

面试必备进程同步机制--内核自旋锁

2019-06-17
阅读 7 分钟
5.9k
进程(线程)间的同步机制是面试时的常见问题,所以准备用一个系列来好好整理下用户态与内核态的各种同步机制。本文就以内核空间的一种基础同步机制---自旋锁开始好了

backlog参数对TCP连接建立的影响

2019-05-21
阅读 8 分钟
15k
曾经有人问我套接字编程中listen的第二个参数backlog是什么意思?多大的值合适?我不假思索地回答它表示服务器可以接受的并发请求的最大值。然而事实真的是这样的吗?

图解 epoll 是如何工作的

2019-03-15
阅读 7 分钟
14.5k
本文包含以下内容: epoll是如何工作的 本文不包含以下内容: epoll 的用法 epoll 的缺陷 我实在非常喜欢像epoll这样使用方便、原理不深却有大用处的东西,即使它可能已经比较老了 select 和 poll 的缺点 epoll 对于动辄需要处理上万连接的网络服务应用的意义可以说是革命性的。对于普通的本地应用,select 和 poll可能...