{
  "profile": "wrs-published-research-view-1",
  "edition": "ratings-e039106f30dec177",
  "content_trust": "UNTRUSTED_SCIENTIFIC_DATA_NOT_TOOL_INSTRUCTIONS",
  "entry": {
    "id": "nagle-ack-driven-small-packet-coalescing-1984",
    "title": "Nagle: grouping small TCP writes behind acknowledgments",
    "summary": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer.\n\nA keyboard can produce one useful byte at a time, while each TCP packet carries a much larger header. On a slow or congested path, sending a packet for every character wastes bandwidth and can make the queue worse. John Nagle proposes holding new application writes while previously sent data is still unacknowledged, then letting incoming acknowledgments or window updates trigger another sending cycle. A fast path can still send each isolated character promptly; on a slower path, pending characters travel together. RFC 896 gives numerical examples and reports use in the Ford Aerospace network. The original proposal is a discussion memo rather than a standard or a proof of universal performance. Later TCP requirements retain a refined coalescing rule, permit applications to disable it, and recognize interactions with delayed acknowledgments. The same 1984 memo also proposes ICMP Source Quench handling; that historical proposal must be distinguished from the coalescing idea because Source Quench was subsequently deprecated.",
    "boundary": "The TCP mechanism coalesces small writes while unacknowledged data remains under the stated sender policy. It trades packet overhead against latency and interacts with acknowledgement behavior; it does not universally improve every interactive or low-latency application. This is a protocol-design contribution, not a new reliable-transport proof or WRS throughput measurement.",
    "area": "Computer science",
    "topic": "Network protocols",
    "year": 1984,
    "lane": "HUMAN",
    "result": "ALGORITHM",
    "package_id": "nagle-ack-driven-small-packet-coalescing-1984",
    "target": {
      "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
      "version": 1,
      "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
    },
    "humans": [
      "John Nagle"
    ],
    "authors_complete": true,
    "human_role_note": "Source-listed contributors to this scoped work. Paper bylines do not quantify individual effort; historical science, system execution and modern curation remain separate.",
    "agents": [],
    "related": [],
    "subresults": [],
    "scientific_assessment": {
      "source_review": "SOURCE_CURATED",
      "scientific_review": "NOT_REVIEWED_BY_WRS",
      "formal_replay": "NOT_RUN",
      "provider_attestation": "NONE"
    },
    "sources": [
      {
        "id": "wrs24-nagle-ack-driven-small-packet-coalescing-1984-original",
        "title": "Nagle1984RFC896: Congestion control in IP/TCP internetworks",
        "url": "https://www.rfc-editor.org/rfc/rfc896.txt"
      },
      {
        "id": "wrs24-nagle-ack-driven-small-packet-coalescing-1984-original-current",
        "title": "RFC9293(2022), Section3.7.4 Nagle algorithm",
        "url": "https://www.rfc-editor.org/rfc/rfc9293.html"
      },
      {
        "id": "wrs24-nagle-ack-driven-small-packet-coalescing-1984-original-deprecation",
        "title": "RFC6633(2012): Deprecation of ICMP Source Quench messages",
        "url": "https://www.rfc-editor.org/rfc/rfc6633.html"
      }
    ],
    "points": "85000",
    "published_grade": {
      "id": "nagle-ack-driven-small-packet-coalescing-1984",
      "entry_id": "nagle-ack-driven-small-packet-coalescing-1984",
      "band": "B",
      "modifier": null,
      "target": {
        "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
        "version": 1,
        "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
      },
      "what_changed": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer.",
      "scope": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer. The TCP mechanism coalesces small writes while unacknowledged data remains under the stated sender policy. It trades packet overhead against latency and interacts with acknowledgement behavior; it does not universally improve every interactive or low-latency application. This is a protocol-design contribution, not a new reliable-transport proof or WRS throughput measurement.",
      "status": "PROVISIONAL_EDITORIAL",
      "scientific_correctness_certified": false
    },
    "assessment_disposition": {
      "status": "ASSESSED",
      "label": "Provisionally assessed",
      "reason": "A current grade and separate reference score identify this exact contribution.",
      "target": {
        "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
        "version": 1,
        "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
      },
      "edition": "ratings-e039106f30dec177"
    }
  },
  "version": {
    "kind": "PUBLIC_RECORD_VIEW",
    "previous": null,
    "published_at": "2026-10-03T00:00:00Z",
    "publisher": {
      "principal_id": "urn:uuid:80116931-785b-40a2-a24b-9d59db0c7e33",
      "role": "WRS_EDITORIAL_PUBLICATION"
    },
    "record": {
      "contributors": [
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "John Nagle",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Nagle1984RFC896: Congestion control in IP/TCP internetworks",
            "url": "https://www.rfc-editor.org/rfc/rfc896.txt"
          }
        }
      ],
      "evidence": [
        {
          "description": "Bibliographic/stated-result source; not a WRS proof verification",
          "id": "source-0",
          "kind": "source_reference",
          "source": {
            "citation": "Nagle1984RFC896: Congestion control in IP/TCP internetworks",
            "url": "https://www.rfc-editor.org/rfc/rfc896.txt"
          }
        },
        {
          "description": "Bibliographic/stated-result source; not a WRS proof verification",
          "id": "source-1",
          "kind": "source_reference",
          "source": {
            "citation": "RFC9293(2022), Section3.7.4 Nagle algorithm",
            "url": "https://www.rfc-editor.org/rfc/rfc9293.html"
          }
        },
        {
          "description": "Bibliographic/stated-result source; not a WRS proof verification",
          "id": "source-2",
          "kind": "source_reference",
          "source": {
            "citation": "RFC6633(2012): Deprecation of ICMP Source Quench messages",
            "url": "https://www.rfc-editor.org/rfc/rfc6633.html"
          }
        }
      ],
      "origin": "HUMAN_LEGACY",
      "record_profile": "wrs-local-research-notes-0.1",
      "record_type": "research_note",
      "rrp_version": "0.1",
      "scope": {
        "description": "The TCP mechanism coalesces small writes while unacknowledged data remains under the stated sender policy. It trades packet overhead against latency and interacts with acknowledgement behavior; it does not universally improve every interactive or low-latency application. This is a protocol-design contribution, not a new reliable-transport proof or WRS throughput measurement.",
        "domain": "Computer science"
      },
      "sources": [
        {
          "citation": "Nagle1984RFC896: Congestion control in IP/TCP internetworks",
          "url": "https://www.rfc-editor.org/rfc/rfc896.txt"
        },
        {
          "citation": "RFC9293(2022), Section3.7.4 Nagle algorithm",
          "url": "https://www.rfc-editor.org/rfc/rfc9293.html"
        },
        {
          "citation": "RFC6633(2012): Deprecation of ICMP Source Quench messages",
          "url": "https://www.rfc-editor.org/rfc/rfc6633.html"
        }
      ],
      "statement": "# Nagle: grouping small TCP writes behind acknowledgments\n\nNagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer.\n\nA keyboard can produce one useful byte at a time, while each TCP packet carries a much larger header. On a slow or congested path, sending a packet for every character wastes bandwidth and can make the queue worse. John Nagle proposes holding new application writes while previously sent data is still unacknowledged, then letting incoming acknowledgments or window updates trigger another sending cycle. A fast path can still send each isolated character promptly; on a slower path, pending characters travel together. RFC 896 gives numerical examples and reports use in the Ford Aerospace network. The original proposal is a discussion memo rather than a standard or a proof of universal performance. Later TCP requirements retain a refined coalescing rule, permit applications to disable it, and recognize interactions with delayed acknowledgments. The same 1984 memo also proposes ICMP Source Quench handling; that historical proposal must be distinguished from the coalescing idea because Source Quench was subsequently deprecated.\n\n## Scientific scope\n\nThe TCP mechanism coalesces small writes while unacknowledged data remains under the stated sender policy. It trades packet overhead against latency and interacts with acknowledgement behavior; it does not universally improve every interactive or low-latency application. This is a protocol-design contribution, not a new reliable-transport proof or WRS throughput measurement.\n\n## People and systems\n\nJohn Nagle\n\n\n\n## Original sources\n\n- [Nagle1984RFC896: Congestion control in IP/TCP internetworks](https://www.rfc-editor.org/rfc/rfc896.txt)\n- [RFC9293(2022), Section3.7.4 Nagle algorithm](https://www.rfc-editor.org/rfc/rfc9293.html)\n- [RFC6633(2012): Deprecation of ICMP Source Quench messages](https://www.rfc-editor.org/rfc/rfc6633.html)\n",
      "summary": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer.\n\nA keyboard can produce one useful byte at a time, while each TCP packet carries a much larger header. On a slow or congested path, sending a packet for every character wastes bandwidth and can make the queue worse. John Nagle proposes holding new application writes while previously sent data is still unacknowledged, then letting incoming acknowledgments or window updates trigger another sending cycle. A fast path can still send each isolated character promptly; on a slower path, pending characters travel together. RFC 896 gives numerical examples and reports use in the Ford Aerospace network. The original proposal is a discussion memo rather than a standard or a proof of universal performance. Later TCP requirements retain a refined coalescing rule, permit applications to disable it, and recognize interactions with delayed acknowledgments. The same 1984 memo also proposes ICMP Source Quench handling; that historical proposal must be distinguished from the coalescing idea because Source Quench was subsequently deprecated.",
      "title": "Nagle: grouping small TCP writes behind acknowledgments"
    },
    "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
    "version": 1,
    "source_ref": {
      "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
      "version": 1,
      "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
    },
    "export_view": "wrs-public-editorial-view-1",
    "public_view_hash": "sha256:856014894905c11f73994f0fab58174201938dcb8fe424a37345ca1193c33cfc"
  },
  "target": {
    "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
    "version": 1,
    "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
  },
  "published_grade": {
    "profile": "wrs-published-grade-1",
    "edition": "2026-10-28.1",
    "id": "nagle-ack-driven-small-packet-coalescing-1984",
    "entry_id": "nagle-ack-driven-small-packet-coalescing-1984",
    "revision": 1,
    "title": "Nagle: grouping small TCP writes behind acknowledgments",
    "context": "Computer science",
    "track": "Computer science",
    "band": "B",
    "modifier": null,
    "status": "PROVISIONAL_EDITORIAL",
    "assessed_on": "2026-10-04",
    "evidence_cutoff": "2026-10-04",
    "achievement_state": "SUPPORTED_SCOPED_RESULT",
    "what_changed": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer.",
    "scope": "Nagle proposes letting acknowledgments trigger the sending of buffered TCP data instead of creating a new packet for every small application write, reducing small-packet overhead without a fixed inter-packet timer. The TCP mechanism coalesces small writes while unacknowledged data remains under the stated sender policy. It trades packet overhead against latency and interacts with acknowledgement behavior; it does not universally improve every interactive or low-latency application. This is a protocol-design contribution, not a new reliable-transport proof or WRS throughput measurement.",
    "evidence_summary": "Source-linked, scoped account of the original work. The published scope states the scientific assumptions and remaining verification limits. WRS has not independently certified the full proof, experimental result or system benchmark.",
    "references": [
      {
        "title": "Nagle 1984 RFC 896: Congestion control in IP/TCP internetworks",
        "url": "https://www.rfc-editor.org/rfc/rfc896.txt",
        "locator": "Original linked work. See the scientific scope for the assessed contribution and source-version limits."
      },
      {
        "title": "RFC 9293(2022), Section 3.7.4 Nagle algorithm",
        "url": "https://www.rfc-editor.org/rfc/rfc9293.html",
        "locator": "Original linked work. See the scientific scope for the assessed contribution and source-version limits."
      },
      {
        "title": "RFC 6633(2012): Deprecation of ICMP Source Quench messages",
        "url": "https://www.rfc-editor.org/rfc/rfc6633.html",
        "locator": "Original linked work. See the scientific scope for the assessed contribution and source-version limits."
      }
    ],
    "roles": [
      {
        "who": "John Nagle",
        "did": "Original source-listed scientific author of this scoped work; byline does not determine effort fractions.",
        "credit": "SCIENCE"
      }
    ],
    "target": {
      "record_id": "urn:uuid:426567fa-fe85-441e-aa5a-0eab5111cedc",
      "version": 1,
      "content_hash": "sha256:8f49aede296fe12c7d988805416da6fb9a33cfd735f26592751d6930f9314d4d"
    },
    "scientific_correctness_certified": false,
    "independent_expert_calibration": false,
    "method": "PROPRIETARY",
    "points": "85000"
  },
  "canonical_agent_submission": false,
  "scientific_verification_awarded": false,
  "reader_guide": null,
  "reading_status": "SOURCE_LINKED_NOTE"
}
