TCP の Nagleアルゴリズム を TCP_NODELAY で無効にする2019年02月27日 14時41分11秒

Nagleアルゴリズムは TCP 通信の時に、書き込みをバッファリングし帯域の利用効率を上げるためのテクニック。TCP のヘッダには 40 バイト必要になり、一バイト毎の書き込みに送信を行うと、帯域のほとんどが通信内容以外で潰される事になる。

例えば、ハートビート等を行って、TCP 接続で相手側の生存確認を行ったりすると、送信が遅延されて影響が出たりする。そのため socket API ではこれを無効にする為のオプションが大抵用意されている。

int on = 1;
fd = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
setsockopt( fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof( on ) );
socket の API での名前は TCP_NODELAY になっている。