<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>tcp on Ikoma's Blog</title><link>https://blog.yusukeikoma.com/ja/tags/tcp/</link><description>Recent content in tcp on Ikoma's Blog</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Tue, 01 Sep 2026 20:56:28 +0900</lastBuildDate><atom:link href="https://blog.yusukeikoma.com/ja/tags/tcp/index.xml" rel="self" type="application/rss+xml"/><item><title>write() を2回呼ぶだけで、TCPが40ms止まる</title><link>https://blog.yusukeikoma.com/ja/posts/two-small-writes-nagle-delayed-ack/</link><pubDate>Tue, 01 Sep 2026 20:56:28 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/two-small-writes-nagle-delayed-ack/</guid><description>ヘッダーと本文を小さな write() 2回に分けて送り、返事を待つと、CPUもネットワークも空いているのに、1往復ごとに約40ms止まることがあります。Nagleアルゴリズムも遅延ACKも、単体では正しい仕様です。2つが組み合わさると、タイマーが切れるまで互いに待ち合ってしまいます。この記事では、停止を予想し、50行のスクリプトで再現し、パケットトレースで確かめ、4つの対処を比べます。</description></item><item><title>死んだTCPの相手に気づくまで、書く側は約15分、読むだけの側は無期限</title><link>https://blog.yusukeikoma.com/ja/posts/tcp-half-open-connection-detection/</link><pubDate>Sun, 23 Aug 2026 15:09:06 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/tcp-half-open-connection-detection/</guid><description>TCP は、相手がいなくなったことを教えてくれません。読み取り側は永遠にブロックし、書き込み側は十数分も再送を続け、SO_KEEPALIVE は未確認のデータがあるあいだ何もしません。この記事では、root 不要の1ファイルの Linux 実験環境を作り、何もしない、keepalive、TCP_USER_TIMEOUT、アプリケーションのハートビートという順に仕組みを積み上げて、気づくまでの時間を測ります。NAT と RFC がどこに関わるかも整理します。</description></item></channel></rss>