{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-20T21:45:43.317Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC7604",
  "document": {
    "abstract": "This document describes several Network Address Translator (NAT) traversal techniques that were considered to be used for establishing the RTP media flows controlled by the Real-Time Streaming Protocol (RTSP). Each technique includes a description of how it would be used, the security implications of using it, and any other deployment considerations it has. There are also discussions on how NAT traversal techniques relate to firewalls and how each technique can be applied in different use cases. These findings were used when selecting the NAT traversal for RTSP 2.0, which is specified in a separate document.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "authors": [
      {
        "name": "Magnus Westerlund"
      },
      {
        "name": "Thomas Zeng"
      }
    ],
    "authors$meta": {
      "confidence": "high",
      "note": "Parsed from Datatracker doc page article:author (profile full names)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docId": "RFC7604",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docLabel": "IETF RFC 7604",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docNumber": "7604",
    "docNumber$meta": {
      "confidence": "high",
      "note": "From the RFC index entry (rfc-index.xml <doc-id>)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docTitle": "Comparison of Different NAT Traversal Techniques for Media Controlled by the Real-Time Streaming Protocol (RTSP)",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docType": "Informational",
    "docType$meta": {
      "confidence": "high",
      "note": "Mapped from Datatracker std_level or RFC status text",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "doi": "10.17487/RFC7604",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "href": "https://doi.org/10.17487/RFC7604",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "keywords": [
      "RTP",
      "Real-time",
      "Firewalls",
      "UDP"
    ],
    "keywords$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML keywords",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "pages": "46",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "publicationDate": "2015-09-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "references": {
      "bibliographic": [
        "RFC768",
        "RFC793",
        "RFC2326",
        "RFC2588",
        "RFC2663",
        "RFC3022",
        "RFC3261",
        "RFC3424",
        "RFC3489",
        "RFC3550",
        "RFC4566",
        "RFC4571",
        "RFC4787",
        "RFC4961",
        "RFC5245",
        "RFC5382",
        "RFC5389",
        "RFC5764",
        "RFC5766",
        "RFC6062",
        "RFC6263",
        "RFC6275",
        "RFC7362",
        "IETF.draft-ietf-avt-rtp-no-op-04",
        "IETF.draft-ietf-mmusic-rfc2326bis-40",
        "IETF.draft-ietf-mmusic-rtsp-nat-22",
        "orphan/RFC7604/h:ac9c769a",
        "orphan/RFC7604/h:89c2dea0",
        "orphan/RFC7604/h:6d31ee83"
      ],
      "bibliographic$meta": {
        "confidence": "medium",
        "flag": "MIXED_REF_LAYOUT_RISK anchored=30 proseBlocks=33 skippedAnchorBlocks=32",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "reviewRequired": true,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc7604/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
      "updated": "2026-10-20T21:45:43.317Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "errataExist": false,
      "errataExist$meta": {
        "confidence": "high",
        "note": "Derived from presence of errata links on RFC/Datatracker pages",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "statusNote": "Informational",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7604/",
        "updated": "2026-10-20T21:45:43.317Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      }
    }
  }
}