DE102006012614A1 - Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung - Google Patents

Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung Download PDF

Info

Publication number
DE102006012614A1
DE102006012614A1 DE102006012614A DE102006012614A DE102006012614A1 DE 102006012614 A1 DE102006012614 A1 DE 102006012614A1 DE 102006012614 A DE102006012614 A DE 102006012614A DE 102006012614 A DE102006012614 A DE 102006012614A DE 102006012614 A1 DE102006012614 A1 DE 102006012614A1
Authority
DE
Germany
Prior art keywords
port
nat
stun
nat device
internal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102006012614A
Other languages
English (en)
Other versions
DE102006012614B4 (de
Inventor
Aaron Poteau Stanridge
Ken San Carlos Erbes
Remy Belmont Zimmerman
Philippe Mountain View Depallens
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Logitech Europe SA
Original Assignee
Logitech Europe SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Logitech Europe SA filed Critical Logitech Europe SA
Publication of DE102006012614A1 publication Critical patent/DE102006012614A1/de
Application granted granted Critical
Publication of DE102006012614B4 publication Critical patent/DE102006012614B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2578NAT traversal without involvement of the NAT server

Abstract

Ein Verfahren zur Charakterisierung einer Netzwerkadressenübersetzungs[network address translation = NAT]-Einrichtung durch einen internen Rechner hinter der NAT-Einrichtung schließ ein: die Erstellung einer Vielzahl von Sockets; die jeweilige Anbindung der Vielzahl von Sockets an eine Vielzahl von Ports; die Übertragung einer Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; die Feststellung, dass die NAT-Einrichtung UDP-Pakete unterstützt, falls von den STUN-Servern keine Antworten eingehen; und die Feststellung eines Satzes von NAT-Merkmalen der NAT-Einrichtung, falls von jedem der STUN-Server eine Antwort eingeht.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Kommunikation in Rechnernetzwerken, und insbesondere betrifft die vorliegende Erfindung ein-System und ein Verfahren für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung.
  • Da die Nutzung des Internets während der vergangenen Jahre zugenommen hat, nimmt die Zahl der verfügbaren Internet-Protokoll-(IP)-Adressen für neue Zuweisungen rapide ab. Insbesondere nimmt die Zahl derjenigen Internet-Protokoll-(IP)-Adressen rapide ab, die gegenwärtig von der IP-Version 4 (IPv4) dafür spezifiziert sind, neuen Internet-Nutzern zugewiesen zu werden. IPv4 spezifiziert für jede IP-Adresse die Verwendung von vier Bytes. Eine neuere IP-Version 6 (IPv6), die die IP-Adressierung mit 16 Byte spezifiziert, muss für die Verwendung im Internet erst noch umgesetzt werden, wobei diese Umsetzung nicht innerhalb der nächsten Jahre erwartet wird.
  • Da die Verwendung von IPv6 nicht innerhalb der nächsten Jahre geplant ist und da die Zahl der verfügbaren IP-Adressen abnimmt, sind Zwischenlösungen entwickelt worden, mit denen die Zahl von Rechnern erhöht werden soll, die unter Verwendung der begrenzten Zahl gegenwärtig verfügbarer IP-Adressen mit dem Internet verbunden werden können. Eine der Zwischenlösungen für die Bereitstellung einer Rechnerverbindung mit dem Internet schließt die zeitlich begrenzte Zuweisung von IP-Adressen zu Rechnern ein, die eine Verbindung ausbauen. Diese Lösung schließt ein die Zuweisung einer IP-Adresse zu einem Rechner während einer Internet-Verbindung und die Aufhebung der Zuweisung der IP-Adresse, nachdem die Internet-Verbindung beendet ist.
  • Zu den weiteren Zwischenlösungen für die Bereitstellung von Rechnerverbindungen mit dem Internet gehört die Verwendung von Netzwerkadressenübersetzungs-[network address translation = NAT]-Techniken. NAT-Techniken schließen die Übersetzung einer innerhalb eines Netzwerkes verwendeten IP-Adresse in eine innerhalb eines anderen Netzwerkes verwendete IP-Adresse ein. Eines der Netzwerke wird typischerweise als das interne Netzwerk bezeichnet und schließt typischerweise ein lokales Netzwerk [local area network = LAN], ein Weitverkehrsnetz [wide area network = WAN] oder dergleichen ein, das etwa von einem Unternehmen, einer Bildungseinrichtung, einer Behörde oder dergleichen verwendet wird. Das andere Netzwerk wird typischerweise als das externe Netzwerk bezeichnet und kann etwa ein LAN, ein WAN oder das Internet oder eine andere Art von Netzwerk sein. Gegenwärtig verwendete NAT-Techniken verwenden drei Sätze interner IP-Adressen, die für die Verwendung im internen Netzwerk reserviert sind und im externen Netzwerk nicht verwendet werden. Typischerweise bildet eine NAT-Einrichtung interne IP-Adressen in ausgehenden Paketen auf eine oder mehr abgebildete IP-Adressen ab und löst die Abbildung der IP-Adressen in eingehenden Paketen wieder in interne IP-Adressen auf. Beispielsweise passiert ein Paket, das ein internes Netzwerk (z.B. ein Unternehmens-LAN) verlässt, die NAT-Einrichtung, die die interne IP-Adresse (z.B. 10.0.0.1) auf die abgebildete IP-Adresse des Unternehmens abbildet (z.B. 198.60.42.12).
  • Außerdem bilden NAT-Einrichtungen interne Ports, die von einem internen Rechner in einem internen Netzwerk verwendet werden, typischerweise auf externe Ports ab (manchmal als abgebildet [mapped] bezeichnet), die in einem externen Netzwerk verwendet werden. Die Port-Übersetzung wird typischerweise als Netzwerkportübersetzung [network port translation = NPT] bezeichnet. Der Einfachheit halber wird der Begriff NAT hier so verwendet, dass er NPT einschließt.
  • NAT-Einrichtungen sind zwar dafür konfiguriert, externe Netzwerkverbindungen für eine Anzahl interner Rechner über eine einzelne abgebildete IP-Adresse zuzulassen, doch kann es sein, dass einer oder mehrere dieser internen Rechner nicht wissen, dass sie sich "hinter" einer NAT-Einrichtung befinden (d.h. eine NAT-Einrichtung ist kommunikativ zwischen die internen Rechner und externen Rechner gekoppelt) oder dass sie die Merkmale der NAT-Einrichtung nicht kennen, hinter der sich interne Rechner befinden. Wenn ein interner Rechner nicht weiß, ob er sich hinter einer NAT-Einrichtung befindet, oder die Merkmale der NAT-Einrichtung nicht kennt, hinter der sich der interne Rechner befindet, wird der interne Rechner möglicherweise darin behindert, Nachrichten (z.B. Pakete) von externen Rechnern zu empfangen. Zum Beispiel werden Pakete, die von dem externen Rechner aus an den internen Rechner gesendet werden, möglicherweise verworfen, da der interne Rechner möglicherweise den externen Rechner nicht über die Merkmale der NAT-Einrichtung informieren kann. Insbesondere wenn der externe Rechner einen Port verwendet, der von der NAT-Einrichtung nicht akzeptiert wird, werden von dem externen Rechner gesendete Pakete möglicherweise von der NAT-Einrichtung verworfen. Das bedeutet, dass die Pakete die NAT-Einrichtung nicht durchlaufen. Kann dagegen der interne Rechner dem externen Rechner die Merkmale der NAT-Einrichtung mitteilen, hinter der sich der interne Rechner befindet, so können die externen Rechner die Informationen verwenden, um Pakete mit in geeigneter Weise ausgewählten IP-Adressen und Portnummern zu senden, die es den Paketen ermöglichen, durch der NAT-Einrichtung zum internen Rechner durchgelassen zu werden.
  • Es besteht also Bedarf an einem System und einem Verfahren für die Charakterisierung von NAT-Einrichtungen mit dem Ziel, einen verbesserten Durchlauf von Paketen durch die NAT-Einrichtungen zur Verfügung zu stellen.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt ein Rechnernetzwerk für die Netzwerkkommunikation zur Verfügung und stellt insbesondere ein System und ein Verfahren für die Charakterisierung einer Netzwerkadressenübersetzungs- [network address translation = NAT]-Einrichtung durch einen internen Rechner hinter der NAT-Einrichtung zur Verfügung.
  • Gemäß einem Ausführungsbeispiel schließt eine Funktionsweise des internen Rechners die Erstellung einer Vielzahl von Sockets und die jeweilige Anbindung der Vielzahl von Sockets an eine Vielzahl von Ports ein. Eine Vielzahl von STUN [simple traversal of UDP through NATs = einfacher Durchlauf von UDP durch NATs]-Anfragen werden in UDP [user datagram protocol = Benutzerdatagrammprotokoll]-Paketen an eine Vielzahl von STUN-Servern übertragen, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist. Falls von dem STUN-Server keine Antworten eingehen, zieht der interne Rechner den Schluss, dass die NAT-Einrichtung UDP-Pakete unterstützt; und falls von jedem der STUN-Server eine Antwort eingeht, folgert der interne Rechner eine Anzahl von NAT-Merkmalen der NAT-Einrichtung.
  • Gemäß einem speziellen Ausführungsbeispiel schließt die Vielzahl von STUN-Servern mindestens einen ersten, zweiten und dritten STUN-Server ein. Der Schritt des Übertragens der Vielzahl von STUN-Anfragen schließt ein: i) Übertragen einer ersten STUN-Anfrage und einer zweiten STUN-Anfrage an den ersten STUN-Server; ii) Übertragen einer dritten STUN-Anfrage an den zweiten STUN-Server und iii) Übertragen einer vierten STUN-Anfrage an den dritten STUN-Server. Die erste STUN-Anfrage ist einem ersten Socket der Vielzahl von Sockets zugeordnet, und die zweite, dritte und vierte STUN-Anfrage sind einem zweiten Socket der Vielzahl von Sockets zugeordnet.
  • Gemäß einem weiteren Ausführungsbeispiel schließt das Verfahren weiterhin die Feststellung eines Merkmals der NAT-Einrichtung beim Filtern eingehender Pakete als exzeptionell ein, falls von dem ersten STUN-Server mindestens eine Antwort eingeht und von dem zweiten STUN-Server keine Antwort eingeht. Gemäß wiederum einem weiteren Ausführungsbeispiel schließt das Verfahren weiterhin ein: i) den Empfang einer ersten Antwort von dem ersten STUN-Server, wobei die erste Antwort einen ersten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet worden ist und der dem zweiten Socket zugeordnet ist; ii) den Empfang einer zweiten Antwort von dem zweiten STUN- Server, wobei die zweite Antwort einen zweiten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet worden ist und der dem zweiten Socket zugeordnet ist, iii) die Feststellung, dass ein Portzuordnungsverhalten der NAT-Einrichtung konisch ist, falls der erste abgebildete Port derselbe ist wie der zweite abgebildete Port, und iv) die Feststellung, dass das Portzuordnungsverhalten der NAT-Einrichtung Port-sensitiv symmetrisch ist, falls der erste abgebildete Port derselbe ist wie der zweite abgebildete Port.
  • Gemäß einem Ausführungsbeispiel wird ein Rechnersystem zur Verfügung gestellt, das dafür konfiguriert ist, eine Netzwerkadressenübersetzung [network address translation = NAT] zu charakterisieren, hinter der sich der Rechner befindet. Das Rechnersystem schließt eine Web-fähige Einrichtung ein, die dafür konfiguriert ist, i) eine Vielzahl von Sockets zu erstellen; ii) die Vielzahl von Sockets jeweils an eine Vielzahl von Ports zu binden; iii) eine Vielzahl von STUN-Anfragen in User-Datagram-Protokoll (UDP)-Paketen an eine Vielzahl von STUN-Servern zu übertragen, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; iv) festzustellen, dass die NAT-Einrichtung UDP-Pakete unterstützt, falls von den STUN-Servern keine Antworten eingehen, und v) eine Anzahl von NAT-Merkmalen der NAT-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  • Gemäß einem weiteren Ausführungsbeispiel wird ein Rechnersystem zur Verfügung gestellt, welches einschließt: ein erstes Netzwerk, eine erste Netzwerkadressenübersetzungs- (NAT)-Einrichtung in dem ersten Netzwerk; mindestens eine erste Web-fähige Einrichtung in dem ersten Netzwerk, wobei die erste Web-fähige Einrichtung operativ an die erste NAT-Einrichtung gekoppelt ist und sich operativ hinter der ersten NAT-Einrichtung befindet und die erste Web-fähige Einrichtung dafür konfiguriert ist, i) eine Vielzahl von Sockets zu erstellen; ii) die Vielzahl von Sockets jeweils an eine Vielzahl von Ports zu binden; iii) eine Vielzahl von STUN-Anfragen in User-Datagram-Protokoll (UDP)-Paketen an eine Vielzahl von STUN-Servern zu senden, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; und iv) einen Satz NAT-Merkmale der ersten NAT-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  • Eine weiteres Verständnis der in dieser Zusammenfassung beschriebenen Merkmale und Vorteile sowie die folgende detaillierte Beschreibung sind nicht allumfassend, und insbesondere wird der Durchschnittsfachmann anhand der Beschreibung, der beiliegenden Zeichnungen und der Ansprüche viele zusätzliche Merkmale und Vorteile erkennen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein vereinfachtes Diagramm eines Netzwerksystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 2 ist ein vereinfachtes Diagramm eines Netzwerksystems gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung;
  • 3 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, mittels deren der interne Rechner feststellt, ob er sich hinter einer NAT-Einrichtung befindet;
  • 4 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, die einen Überblick über die Feststellung geben, ob die abgebildeten, von der NAT-Einrichtung zugewiesenen Ports inkrementell oder zufällig sind;
  • 5 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, die einen Überblick über die Feststellung geben, ob die NAT-Einrichtung Ports intern-extern inkrementell oder intern-extern zufällig zuweist;
  • 6 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten für die weitere Feststellung von Merkmalen der NAT-Einrichtung durch den internen Rechner; und
  • 7 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, mittels deren der interne Rechner das Inkrement für einen einzelnen Socket zwischen aufeinander folgenden Sockets feststellen kann.
  • BESCHREIBUNG AUSGEWÄHLTER AUSFÜHRUNGSBEISPIELE
  • Einleitung und Überblick
  • Überschriften dienen hier zum besseren Verständnis und sollen nicht als Einschränkung der beschriebenen Ausführungsbeispiele der Erfindung verstanden werden. Weiterhin stellen die beiliegenden Figuren ein ausgewähltes Ausführungsbeispiel der Erfindung lediglich zu Illustrationszwecken dar. Der Fachmann wird aus den folgenden Erläuterungen, Ansprüchen und den beiliegenden Zeichnungen ohne Weiteres erkennen, dass sich alternative Ausführungsformen der hier offenbarten Strukturen und Verfahren anwenden lassen, ohne dass dabei Umfang und Geltungsbereich der Erfindung verlassen würden.
  • 1 ist ein vereinfachtes Diagramm eines Netzwerksystems 100 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das Netzwerksystem 100 schließt ein: mindestens einen internen Rechner 105, der an ein internes Netzwerk 110 gekoppelt ist, mindestens einen externen Rechner 115, der an ein externes Netzwerk 120 gekoppelt ist, sowie eine Netzwerkadressenübersetzungs- (NAT)-Einrichtung 125, die das interne Netzwerk an das externe Netzwerk koppelt. Der interne Rechner kann einen Personal Computer, einen Server, einen Hostrechner oder jedes Web-fähige Gerät einschließen, das dafür konfiguriert ist, an das interne Netzwerk gekoppelt zu werden. Das interne Netzwerk kann ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles LAN oder dergleichen einschließen. Der externe Rechner kann einen Personal Computer, einen Server, einen Hostrechner oder jedes Web-fähige Gerät einschließen, das dafür konfiguriert ist, mit dem externen Netzwerk gekoppelt zu werden. Das externe Netzwerk könnte ein LAN, ein WAN, ein virtuelles LAN, das Internet oder dergleichen einschließen.
  • Gemäß einem Ausführungsbeispiel ist der interne Rechner 105 dafür konfiguriert, die NAT-Einrichtung 125 zu erkennen und zu charakterisieren. Die Feststellung der Merkmale der NAT-Einrichtung erlaubt dem internen und dem externen Rechner den Aufbau einer Peer-to-Peer-Kommunikationsverbindung zum Austausch von UDP-Paketen. Der interne und der externe Rechner können UDP-Pakete zum Zweck der Peer-to-Peer-Dateiübertragung austauschen. Peer-to-Peer bezeichnet allgemein die Übertragung von Dateien ohne Verwendung eines zentralen Servers, auf den Pakete hochgeladen und dann übertragen werden. Dateiübertragung könnte die Übertragung vielfältiger Dateitypen einschließen, etwa Mediendateien (Audio, Video, audiovisuell), Textnachrichten, Sprachnachrichten (z.B. für die Web-Telefonie) und dergleichen.
  • Gemäß einem Ausführungsbeispiel schließt das externe Netzwerk einen Satz STUN- simple traversal of UDP through NATs = einfacher Durchlauf von UDP durch NATs]-Server 130 ein. STUN-Server funktionieren nach einem STUN-Protokoll und sind typischerweise im Web (z.B. World Wide Web) dafür vorgesehen, Einrichtungen wie zum Beispiel NAT-Einrichtungen zu finden und zu charakterisieren. Der Satz STUN-Server wird zwar in 1 so dargestellt, dass er drei STUN-Server 130a, 130b und 130c einschließt, ein Satz, wie hier auf ihn Bezug genommen wird, besteht jedoch aus einem oder mehreren Bestandteilen. STUN-Server werden unten eingehender beschrieben. Gemäß einigen Ausführungsbeispielen kann die NAT-Einrichtung einen Teil eines anderen elektronischen Systems 127 bilden, etwa einer Firewall-Einrichtung, eines Routers oder dergleichen, oder die NAT-Einrichtung kann ein selbstständiges Gerät sein, das an eine Firewall-Einrichtung, einen Router oder dergleichen gekoppelt sein könnte. Gemäß einem alternativen Ausführungsbeispiel könnte die Einrichtung 125 eine Firewall-Einrichtung und dafür konfiguriert sein, die hier beschriebenen Verfahren auszuführen. Gemäß dem Ausführungsbeispiel kann die Einrichtung 127 die Firewall enthalten, oder es kann sich um einen Router handeln, mit dem die Firewall ihrer Konfiguration gemäß gemeinsam funktioniert.
  • 2 ist ein vereinfachtes Diagramm eines Netzwerksystems 200 gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung. Ein ähnliches Nummerierungsschema wird dazu verwendet, dieselben oder ähnliche Elemente wie in 1 zu identifizieren. Netzwerksystem 200 unterscheidet sich dadurch von Netzwerksystem 100, dass der externe Rechner 125, ähnlich wie der interne Rechner 105, sich hinter einer NAT-Einrichtung 205 befinden kann. Das interne Netzwerk und das externe Netzwerk könnten über ein Netzwerk 210, etwa ein weiteres LAN, ein weiteres WAN, das Internet oder dergleichen, gekoppelt sein. Die vorangehend beschriebenen Netzwerksysteme werden zu Illustrationszwecken beschrieben. Dem Fachmann wird eine Fülle an Netzwerksystemen bekannt sein, die für die unten beschriebene Funktionsweise konfiguriert sind, und diese anderen Netzwerksysteme werden als zum Umfang und Geltungsbereich der hier beschriebenen Erfindung gehörig betrachtet. Gemäß einem Ausführungsbeispiel schließen das externe Netzwerk 120, das Netzwerk 210 oder beide einen Satz STUN-Server ein. Gemäß einigen Ausführungsbeispielen kann die NAT-Einrichtung 205 einen Teil eines anderen elektronischen Systems 207 bilden, etwa einer Firewall-Einrichtung, eines Routers oder dergleichen, oder die NAT-Einrichtung kann ein selbstständiges Gerät sein, das an eine Firewall-Einrichtung, einen Router oder dergleichen gekoppelt sein könnte. Gemäß einem alternativen Ausführungsbeispiel könnte die Einrichtung 205 eine Firewall-Einrichtung und dafür konfiguriert sein, die hier beschriebenen Verfahren auszuführen. Gemäß dem Ausführungsbeispiel könnte die Einrichtung 207 die Firewall enthalten oder ein Router sein, mit dem die Firewall ihrer Konfiguration gemäß gemeinsam funktioniert.
  • Gemäß einem Ausführungsbeispiel wissen der interne Rechner und/oder der externe Rechner möglicherweise nicht, ob sie sich hinter NAT-Einrichtungen befinden, und/oder kennen möglicherweise nicht die Merkmale von NAT-Einrichtungen, hinter denen sie sich befinden. Beispielsweise könnte der interne Rechner 105 möglicherweise nicht kennen: i) das Internet-Protokoll (IP)-Adress-Zuordnungsverhalten der NAT-Einrichtung 125, ii) das Portzuordnungsverhalten der NAT-Einrichtung, iii) das Portzuweisungsverhalten der NAT-Einrichtung und/oder iv) das Filtern eingehender Pakete durch die NAT-Einrichtung. Wenn der interne Rechner nicht weiß, ob er sich hinter einer NAT-Einrichtung befindet, oder die Merkmale der NAT-Einrichtung nicht kennt, hinter der sich der interne Rechner befindet, wird der interne Rechner möglicherweise beim Empfangen von Paketen behindert, die von dem externen Rechner aus gesendet werden. Wenn beispielsweise der interne Rechner und der externe Rechner versuchen, eine Peer-to-Peer-Kommunikation aufzubauen, werden die von dem externen Rechner aus an den internen Rechner gesendeten Pakete möglicherweise von der NAT-Einrichtung 125 verworfen, falls diesen Rechnern die vorangehend beschriebenen Merkmale der NAT-Einrichtung unbekannt sind. Auf diese und andere Probleme zielen Ausführungsbeispiele der vorliegenden Erfindung.
  • Beschreibung von Merkmalen von NAT-Einrichtungen
  • Wie oben kurz beschrieben, verfügen NAT-Einrichtungen über verschiedene Merkmale für i) das Portzuordnungsverhalten, ii) das Portzuweisungsverhalten und iii) das Filtern von eingehenden Paketen. Diese Merkmale werden unten eingehend beschrieben. Es wird darauf hingewiesen, dass die beschriebenen Merkmale als Beispiele beschrieben werden und die NAT-Einrichtungen auch andere Merkmale aufweisen könnten, für deren Feststellung nach den hier beschriebenen Verfahren die Rechner konfiguriert sein könnten.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung sind der interne Rechner und/oder der externe Rechner dafür konfiguriert, die Merkmale der ihnen zugeordneten NAT-Einrichtungen festzustellen und Informationen über die Merkmale an den anderen Rechner zu übertragen, so dass Pakete, die von einem Rechner zu dem anderen Rechner gesendet werden, die NAT-Einrichtung des anderen Rechners durchlaufen können, ohne verworfen zu werden. Verfahren, die zur Feststellung dieser Merkmale von dem internen Rechner und/oder dem externen Rechner ausgeführt werden, werden unten eingehend beschrieben.
  • Das Portzuordnungsverhalten wird nun eingehender beschrieben. Das Portzuordnungsverhalten schließt einen Satz Regeln ein, die von der NAT-Einrichtung dafür verwendet werden, Ports abzubilden, während Pakete von einem internen Netzwerk an ein externes Netzwerk gesendet werden. Drei hauptsächliche Portzuordnungsverhaltensweisen werden beschrieben. Sie schließen ein: i) Konisch, ii) Adress-sensitiv symmetrisch und iii) Port-sensitiv symmetrisch.
  • Konisch: Pakete, die von einem Rechner (z.B. dem internen Rechner) von derselben internen IP-Adresse und demselben internen Port (d.h. ip:port) aus gesendet werden, werden von der NAT-Einrichtung auf denselben externen ip:port abgebildet. Abbildung [mapping] bezeichnet allgemein die von der NAT-Einrichtung ausgeführte Übersetzung einer IP-Adresse und/oder eines Ports, die/der von dem internen Rechner in dem internen Netzwerk verwendet wird, in eine IP-Adresse und/oder einen Port, die/der in dem externen Netzwerk verwendet wird. Abbildung bezeichnet allgemein auch die von der NAT-Einrichtung ausgeführte Übersetzung von IP-Adressen und Ports, die von dem externen Netzwerk eingehen, in IP-Adressen und Ports, die von dem internen Rechner in dem internen Netzwerk verwendet werden. Gemäß dem Merkmal "konisch" werden Pakete, die von einem internen ip:port, etwa A, an einen ip:port, etwa D, eines Zielcomputers gesendet werden, so abgebildet, dass A auf X abgebildet wird, wobei X der ip:port der NAT-Einrichtung ist. Wenn der interne Rechner ip:port A dafür verwendet, ein Paket an einen anderen Ziel-ip:pon, etwa E, zu senden, behält die NAT-Einrichtung dieselbe Abbildung von A auf X bei. Das bedeutet: Dieselbe IP-Adresse und derselbe Port werden von der NAT-Einrichtung verwendet, um Pakete sowohl an ip:port D als auch an ip:port E zu senden. Daher durchlaufen Pakete, die von ip:port D aus und von ip:port E aus zurückgesendet werden, die NAT-Einrichtung (d.h. sie werden von der NAT-Einrichtung zu dem internen Rechner an ip:port A geleitet), wenn die Pakete von ip:port D und von ip:port E an ip:port X gesendet werden. Wenn externe Rechner, die andere ip:ports als ip:port D und ip:port E verwenden, versuchen, Pakete an den internen Rechner an ip:port A zu senden, verwirft die NAT-Einrichtung diese Pakete. IP-Adressen und Ports werden allgemein als Sockets bezeichnet. Insbesondere ist ein Socket ein Deskriptor für eine IP-Adresse und einen Port. Wie dem Fachmann bekannt, ist jedem Port eine Portnummer zugeordnet, die zur Identifikation des Ports dient, und manchmal werden Ports mit den ihnen zugeordneten Portnummern bezeichnet.
  • Adress-sensitiv symmetrisch: Pakete, die von einem Rechner (z.B. dem internen Rechner) von derselben internen IP-Adresse und demselben internen Port aus an dieselbe Ziel-IP-Adresse gesendet werden, werden von der NAT-Einrichtung auf dieselbe abgebildete IP-Adresse und denselben abgebildeten Port abgebildet. Das bedeutet: Wenn die Ziel-IP-Adresse dieselbe bleibt, der Zielport sich jedoch ändert, wird von der NAT-Einrichtung dieselbe Abbildung verwendet. Wenn die Ziel-IP-Adresse sich ändert, wird von der NAT-Einrichtung eine neue Port-Abbildung generiert. Beispielsweise werden Pakete, die von dem internen Rechner aus unter Verwendung etwa von ip:port A, an einen externen ip:port, etwa D:M, gesendet werden, von der NAT-Einrichtung so abgebildet, dass A auf X abgebildet wird und X auf D abgebildet wird, wobei X der ip:port der NAT-Einrichtung ist. Eine Adress-sensitive symmetrische NAT-Einrichtung nimmt die Ziel-IP-Adresse in die Abbildung auf; nicht jedoch den Zielport. Verwendet der interne Rechner den ip:port A, um ein Paket an einen anderen Ziel-ip:port, etwa D:N zu senden, so behält die NAT-Einrichtung dieselbe Abbildung bei, bei der A auf X abgebildet ist und X auf D abgebildet ist. Verwendet der interne Rechner ip:port A, um ein Paket an einen anderen Ziel-ip:port, etwa J:K, zu senden, so wird von der NAT-Einrichtung eine neue Abbildung in der Weise erstellt, dass A auf einen ip:port, etwa Y, abgebildet wird und Y auf J abgebildet wird.
  • Port-sensitiv symmetrisch: Pakete, die von einem Rechner (z.B. dem internen Rechner) von derselben internen IP-Adresse und demselben internen Port aus an dieselbe Ziel-IP-Adresse und denselben Zielport gesendet werden, werden auf dieselbe abgebildete IP-Adresse und denselben abgebildeten Port abgebildet. Das bedeutet: Wenn die Ziel-IP-Adresse oder der Zielport sich ändert, wird von der NAT-Einrichtung eine neue Port-Abbildung erstellt. Beispielsweise werden Sockets für Pakete, die von dem internen Rechner aus unter Verwendung von ip:port A an einen externen Rechner unter Verwendung von ip:port D:M gesendet werden, von der NAT-Einrichtung so abgebildet, dass A auf X abgebildet wird und X auf D:M abgebildet wird, wobei X der ip:port der NAT-Einrichtung ist. Eine Port-sensitive symmetrische NAT-Einrichtung nimmt die Ziel-IP-Adresse und den Zielport in die Abbildung auf. Wenn der interne Rechner ip:port A verwendet, um ein Paket an einen anderen Ziel-ip:port D:N zu senden, wird eine neue Abbildung erstellt, wobei A auf Y abgebildet wird und Y auf D:N abgebildet wird.
  • Das Portzuweisungsverhalten schließt einen Satz Regeln ein, die von einer NAT-Einrichtung verwendet werden, um eine externe Port-Abbildung zuzuweisen. Vier hauptsächliche Portzuweisungsverhaltensweisen werden beschrieben. Sie schließen ein: i) inkrementell, ii) zufällig, iii) intern-extern inkrementell sowie iv) intern-extern zufällig.
  • Inkrementell: Ein nächster verfügbarer externer Port wird von der NAT-Einrichtung inkrementell ausgewählt, wenn eine neue Abbildung eines internen ip:ports auf einen externen ip:port generiert wird. Beispielsweise kann die NAT- Einrichtung externe Ports für neue Abbildungen um 1, 2, 5 oder dergleichen inkrementieren. Eine NAT-Einrichtung, die externe Ports inkrementiert, ist typischerweise so konfiguriert, dass sie eine Tabelle speichert, die von der NAT-Einrichtung geführt wird, um den Status der externen Ports zu speichern und zu verfolgen.
  • Zufällig: Ein nächster verfügbarer externer Port wird von der NAT-Einrichtung aus einer Warteschlange ausgewählt, wenn von der NAT-Einrichtung eine neue Abbildung eines internen ip:ports auf einen externen ip:port erstellt wird. Die Warteschlange schließt die Portnummern ein, die zugewiesen werden können. Portnummern, deren Zuweisung aufgehoben wurde, werden in die Warteschlange zurückgeführt. Da die Aushebung der Portnummern-Zuweisung nicht in einer festgelegten Reihenfolge erfolgt, werden diese Portnummern nicht in einer festgelegten Reihenfolge in die Warteschlange eingefügt. Nachdem eine Anzahl Portnummern zugewiesen worden ist, erfolgt somit die Zuweisung nachfolgender Portnummern im Wesentlichen zufällig.
  • Intern-extern inkrementell: Der von dem internen Rechner verwendete interne Port ist derselbe wie der von der NAT-Einrichtung abgebildete externe Port. Beispielsweise könnten eine interne Adresse und ein interner Port 192.168.1.1:5000 sein, und die externe Adresse sowie der externe Port, die von der NAT-Einrichtung abgebildet werden, könnten 64.3.3.3:5000 sein. Generiert die NAT-Einrichtung eine neue Abbildung für denselben internen Port, so inkrementiert die NAT-Einrichtung die Portnummer um ein festgelegtes Inkrement wie etwa 1, 2, 3 usw. Das bedeutet: Werden von der NAT-Einrichtung für denselben internen Port verschiedene externe Ports generiert, so wird von der NAT-Einrichtung die oben beschriebene Inkrement-Regel angewendet, um die externen Ports zu generieren. Beispielsweise könnten eine erste interne Adresse und ein erster interner Port 192.168.1.1:7000 sein, und die von der NAT-Einrichtung abgebildete externe Adresse und der abgebildete externe Port könnten 64.3.3.3:7000 sein, und eine nachfolgende Abbildung für die erste interne Adresse und den ersten internen Port 192.168.1.1:7000 könnten die externe Adresse und der externe Port 64.3.3.3:7001 sein, wobei der Port 7000 um eins auf 7001 inkrementiert wird.
  • Intern-extern zufällig: Der interne Port ist derselbe wie der externe Port. Es sei daran erinnert, dass der externe Port der von der NAT-Einrichtung für die Verwendung im externen Netzwerk abgebildete Port ist. Wenn von der NAT-Einrichtung eine neue externe Port-Abbildung für denselben internen Port generiert wird, so wird von der NAT-Einrichtung die oben beschriebene Zufallsregel angewendet, um die neue Abbildung des externen Ports zu generieren.
  • Das Filtern von eingehenden Paketen bezieht sich allgemein auf einen Satz Regeln, die von einer NAT-Einrichtung dafür verwendet werden, Paketen den Durchlauf von dem externen Rechner aus durch die NAT-Einrichtung auf den internen Rechner zu erlauben oder sie daran zu hindern. Drei hauptsächliche Verhaltensweisen für das Filtern von eingehenden Paketen schließen ein: i) kein Filtern von eingehenden Paketen, ii) Adress-sensitives Filtern von Paketen und iii) Port-sensitives Filtern von Paketen.
  • Kein Filtern von eingehenden Paketen: Eine NAT-Einrichtung, die dafür konfiguriert ist, eingehende Pakete nicht zu filtern, nimmt typischerweise keine Validierung der Rechner vor, von denen die eingehenden Pakete stammen. Das bedeutet: Jeder externe Rechner, der einen ip:port, etwa D, verwendet, kann Pakete an den internen Rechner senden, der etwa ip:port A verwendet, indem der externe Rechner Pakete an den abgebildeten ip:port X sendet, der von der NAT-Einrichtung zugeordnet worden ist.
  • Adress-sensitiver Paketfilter: Ein Paketfilter der NAT-Einrichtung, der dafür konfiguriert ist, die in eingehenden Paketen enthaltenen IP-Adressen zu verifizieren, um festzustellen, ob die Pakete die NAT-Einrichtung durchlaufen und so in das interne Netzwerk gelassen werden sollen. Jeder externe Rechner, der einen ip:port, etwa D:M, verwendet, kann eingehende Pakete an den internen Rechner senden, der etwa ip:port A verwendet, indem der externe Rechner die Pakete an den abgebildeten ip:port, etwa X, schickt, der von der NAT-Einrichtung zugeordnet worden ist; jedoch nur, wenn der interne Rechner, der ip:port A verwendet, zuvor unter Verwendung der IP-Adresse D ein Paket an den externen Rechner gesendet hat, der die IP-Adresse D verwendet.
  • Port-sensitiver Paketfilter: Ein Paketfilter der NAT-Einrichtung, der dafür konfiguriert ist, die in eingehenden Paketen enthaltenen IP-Adressen und Ports zu verifizieren, um festzustellen, ob die Pakete die NAT-Einrichtung durchlaufen und so in das interne Netzwerk gelassen werden sollen. Jeder externe Rechner, der einen ip:port, etwa D:M, verwendet, kann eingehende Pakete an den internen Rechner senden, der etwa ip:port A verwendet, indem der externe Rechner die Pakete an den abgebildeten ip:port, etwa X, sendet, der von der NAT-Einrichtung zugeordnet worden ist; jedoch nur, wenn der interne Rechner, der ip:port A verwendet, zuvor ein Paket an den externen Rechner an ip:port D:M gesendet hat.
  • Zusätzlich zu den vorangehend beschriebenen hauptsächlichen Regeln für das Filtern von eingehenden Paketen können NAT-Einrichtungen so konfiguriert sein, dass sie eine sekundäre Regel für das Filtern von Paketen verwenden, die als Ausnahmepaketfilter [exceptional-packet filter] bezeichnet wird. Der Ausnahmepaketfilter kann entweder aktiviert oder deaktiviert sein und kann auf einen Adress-sensitiven Paketfilter und/oder einen Port-sensitiven Paketfilter angewendet werden.
  • Ausnahmepaketfilter: Ein Paketfilter der NAT-Einrichtung, der dafür konfiguriert ist, den Filter für eingehende Pakete zu modifizieren, nachdem ein erstes Paket von einem Zielcomputer an ip:port, etwa D:M, ankommt, so dass nur Pakete von D:M durch die NAT-Einrichtung durchgelassen und ins interne Netzwerk vorgelassen werden.
  • Klassifikation von NAT-Einrichtungen
  • Wie oben kurz beschrieben, können der interne Rechner 105, der externe Rechner 115 oder beide dafür konfiguriert sein, die vorangehend beschriebenen Merkmale der jeweiligen NAT-Einrichtungen festzustellen, hinter denen sich diese Rechner befinden. Weiterhin können der interne Rechner, der externe Rechner oder beide dafür konfiguriert sein, festzustellen, ob sie sich hinter einer NAT-Einrichtung befinden. Beispielsweise können der interne Rechner und der externe Rechner dafür konfiguriert sein, festzustellen, ob sie sich hinter derselben NAT- Einrichtung in demselben Netzwerk befinden. Informationen zu den festgestellten Merkmalen der NAT-Einrichtungen (oder Informationen über das Nichtvorhandensein einer NAT-Einrichtung), hinter denen/der sich der interne und der externe Rechner befinden, werden aneinander gesendet, so dass von diesen Rechnern Pakete ausgetauscht werden können, ohne dass die Pakete von den NAT-Einrichtungen verworfen werden. Die übertragenen Informationen werden hier als Portvorhersage-Informationen [port-prediction information] bezeichnet, da der interne Rechner und/oder der externe Rechner dafür konfiguriert sind, die Informationen dafür zu verwenden, einen nächsten Port vorherzusagen, der von einer NAT-Einrichtung abgebildet werden kann. Wird ein nächster abgebildeter Port korrekt vorhergesagt, so können die Rechner Pakete an die nächsten abgebildeten Ports senden, die von der NAT-Einrichtung verwendet werden, und die gesendeten Pakete durchlaufen die NAT-Einrichtungen und erreichen den beabsichtigten Empfangsrechner.
  • 3 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, mittels deren der interne Rechner feststellt, ob er sich hinter einer NAT-Einrichtung befindet. Im Folgenden wird zwar die Ausführung der Schritte aus dem Ablaufdiagramm durch den internen Rechner beschrieben, jedoch kann auch der externe Rechner dafür konfiguriert sein, die Schritte aus dem Ablaufdiagramm durchzuführen, um festzustellen, ob er sich hinter einer NAT-Einrichtung befindet.
  • Gemäß einem Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, einen Socket, etwa L0, zu generieren und den Socket an einen Port zu binden. Die interne IP-Adresse von L0 und der lokale Port, der an L0 gebunden ist, werden von dem internen Rechner gespeichert. Der Einfachheit halber wird der lokale Port, der an L0 gebunden ist, als die Portnummer L0 bezeichnet. Der Port könnte von dem internen Rechner zufällig gewählt werden. Beispielsweise kann der interne Rechner den Port zwischen 0 und 65535 wählen. Gemäß einem Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, den Port von 5000 bis einschließlich 65535 zu wählen. Wenn auf dem internen Rechner das Betriebssystem MicrosoftTM WindowsTM läuft, wird durch die Auswahl eines Ports von 5000 oder darüber das Betriebssystem WindowsTM in ähnlicher Weise Ports von 5000 oder darüber wählen. Der interne Rechner ist dafür konfiguriert, im Anschluss an die Generierung des Sockets L0 und die Auswahl des Ports eine STUN-Anfrage (Schritt 300) an den STUN-Server 130a zu senden. Die STUN-Anfrage kann gemäß dem User-Datagram-Protokoll (UDP) oder anderen Protokollen gesendet werden, die Fachleuten auf dem Gebiet ohne Weiteres bekannt sind.
  • Allgemein ist ein STUN-Server dafür konfiguriert, eine Antwort an einen internen Rechner zurückzusenden (Schritt 305), der eine STUN-Anfrage an den STUN-Server sendet. Die Antwort schließt die abgebildete IP-Adresse und den abgebildeten Port ein, von dem aus die STUN-Anfrage gesendet wurde. Somit enthält die Antwort die abgebildete IP-Adresse und den abgebildeten Port, die von der NAT-Einrichtung aus der internen IP-Adresse und dem internen Port abgebildet wurden, die von dem Rechner verwendet werden, der die STUN-Anfrage sendet.
  • Der interne Rechner ist dafür konfiguriert, nachdem die STUN-Anfrage von dem internen Rechner aus an den STUN-Server gesendet worden ist, auf die Antwort des STUN-Servers zu warten. Wenn von dem STUN-Server eine Antwort eingeht, werden die abgebildete IP-Adresse und der abgebildete Port von dem internen Rechner gespeichert (Schritt 310). Der Einfachheit halber wird der abgebildete Port für den Socket L0 hier als die Portnummer E0 bezeichnet. Als weitere Antwort auf den Empfang der Antwort von dem STUN-Server ist der interne Rechner dafür konfiguriert, ein internes Flag zu setzen, das anzeigt, dass die NAT-Einrichtung UDP-Pakete oder andere Pakettypen unterstützt, die für die Charakterisierung verwendet werden.
  • Der interne Rechner ist dafür konfiguriert, die interne IP-Adresse mit der abgebildeten IP-Adresse zu vergleichen (Schritt 320). Ist die interne IP-Adresse dieselbe wie die abgebildete IP-Adresse, so ist der interne Rechner dafür konfiguriert, den Schluss zu ziehen, dass er sich nicht hinter einer NAT-Einrichtung befindet. Andernfalls, wenn die interne IP-Adresse und die abgebildete IP-Adresse unterschiedlich sind, so ist der interne Rechner dafür konfiguriert, den Schluss zu ziehen, dass er sich hinter einer NAT-Einrichtung befindet. Wenn diese IP-Adressen unterschiedlich sind, kann der interne Rechner insbesondere den Schluss ziehen, dass die NAT-Einrichtung die interne IP-Adresse, die von dem internen Rechner verwendet wird, auf die abgebildete IP-Adresse (manchmal als externe IP-Adresse bezeichnet) abgebildet hat, die von der NAT-Einrichtung in dem externen Netzwerk verwendet wird.
  • Wenn der interne Rechner von dem STUN-Server nicht in einem vordefinierten Zeitintervall (z.B. innerhalb von ca. oder ungefähr nach [jeweils] 250 Millisekunden) eine Antwort von dem STUN-Server empfängt, so ist der interne Rechner alternativ dafür konfiguriert, die STUN-Anfrage erneut zu senden (Schritt 300). Die STUN-Anfrage könnte in dem vordefinierten Zeitintervall während eines vordefinierten Zeitraums (z.B. 3 Sekunden) wiederholt an den STUN-Server gesendet werden. Geht nach dem vordefinierten Zeitraum von dem STUN-Server keine Antwort ein, so ist der lokale Rechner dafür konfiguriert, den Schluss zu ziehen, dass die NAT-Einrichtung nicht über UDP-Netzwerk-Fähigkeiten verfügt (Schritt 325). Das bedeutet: UDP-Pakete werden von der NAT-Einrichtung blockiert. Kommt der interne Rechner zu dem Schluss, dass die NAT-Einrichtung UDP-Pakete nicht unterstützt, so wird die Charakterisierung der NAT-Einrichtung angehalten. Der interne Rechner könnte dafür konfiguriert sein, ein internes Flag zu setzen, um anzuzeigen, dass die NAT-Einrichtung keine UDP-Pakete (z.B. UDP-unterstützt = falsch) oder anderen Pakettypen unterstützt, die für den Prozess der Charakterisierung verwendet werden. Geht innerhalb des vordefinierten Zeitraums eine Nachricht von dem STUN-Server ein, so werden von dem internen Rechner der obige Schritt der Speicherung 310 und der obige Schritt des Vergleichs 315 ausgeführt.
  • Gemäß einem Ausführungsbeispiel können die Schritte des Ablaufdiagramms von dem internen Rechner unter Verwendung eines anderen Sockets, etwa L1, wiederholt werden, der von dem internen Rechner generiert wird. Der interne Rechner kann dafür konfiguriert sein, einen neuen Port, etwa die Portnummer L1, an den Socket L1 zu binden. Die Portnummer L1 kann von dem internen Rechner zufällig generiert werden. Die interne IP-Adresse und die Portnummer L1 von Socket L1 können von dem internen Rechner gespeichert werden. Wenn der interne Rechner innerhalb des vordefinierten Zeitraums auf die an den STUN-Server 130a gesendete STUN-Anfrage keine Antwort empfängt, so wird das interne Flag gesetzt, um anzuzeigen, dass die NAT-Einrichtung keine UDP-Pakete (z.B. UDP-unterstützt = falsch) oder anderen Pakettypen unterstützt, die von dem internen Rechner verwendet werden, um die NAT-Einrichtung zu charakterisieren, und die dann von dem internen Rechner verwendet werden. Wenn der interne Rechner eine Antwort von dem STUN-Server empfängt, wird von dem internen Rechner das interne Flag gesetzt, um anzuzeigen, dass die NAT-Einrichtung UDP-Pakete (z.B. UDP-unterstützt = wahr) oder andere Pakettypen unterstützt, die von dem internen Rechner verwendet werden. Außerdem werden die abgebildete IP-Adresse und der abgebildete Port, die von dem STUN-Server in der Antwort an den internen Rechner zurückgesendet werden, von dem internen Rechner gespeichert. Der Einfachheit halber wird der abgebildete Port für den Socket L0 als die Portnummer E1 bezeichnet.
  • Gemäß einem Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, die Portnummer E0 und die Portnummer E1 miteinander zu vergleichen, um festzustellen, ob die von der NAT-Einrichtung zugewiesenen abgebildeten Ports inkrementell oder zufällig sind. Inkrementelle und zufällige Portzuweisung wurden oben eingehend beschrieben.
  • 4 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, die einen Überblick über den vorangehend beschriebenen Vergleich geben. Bei 400 stellt der interne Rechner fest, ob die Portnummer E0 niedriger ist als die Portnummer E1, und errechnet die Differenz zwischen der Portnummer E1 und der Portnummer E0. Ist die Portnummer E0 niedriger als die Portnummer E1 und ist die Differenz zwischen der Portnummer E1 und der Portnummer E0 geringer als ein Inkrement zur Auswahl eines Ports (z.B. 20, 10, 5 oder dergleichen), so ist der interne Rechner dafür konfiguriert, festzustellen, dass die NAT-Einrichtung Ports inkrementell zuweist (wie oben eingehend beschrieben); andernfalls wird festgestellt, dass die NAT-Einrichtung Ports zufällig zuweist. Der interne Rechner ist dafür konfiguriert, ein Flag zu setzen (z.B. das Verhalten bei der Portzuweisung zwischen Sockets), um anzuzeigen, dass die NAT-Einrichtung dafür konfiguriert ist, Ports inkrementell oder zufällig zuzuweisen, je nach dem Ergebnis des eben beschriebenen Vergleichs (z.B. Verhalten bei der Portzuweisung zwischen Sockets = inkrementell oder zufällig).
  • Der interne Rechner ist dafür konfiguriert, im Anschluss an die Feststellung, ob die NAT-Einrichtung Ports zufällig oder inkrementell zuweist, festzustellen, ob die NAT-Einrichtung Ports intern-extern inkrementell oder intern-extern zufällig zuweist (intern-externe Merkmale von NAT-Einrichtungen wurden oben eingehend beschrieben).
  • 5 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten, die einen Überblick über die zuvor beschriebene Feststellung der Merkmale der NAT-Einrichtung geben. Bei 500 ist der interne Rechner dafür konfiguriert, festzustellen, ob die Portnummer E0 und die Portnummer L0 dieselbe sind und ob die Portnummer E1 und die Portnummer L1 dieselbe sind. Wenn diese Ports dieselben sind, überprüft der interne Rechner bei 505, ob das Portzuweisungsverhalten für nacheinander zugewiesene Sockets inkrementell ist. Sind diese Ports dieselben und ist das Portzuweisungsverhalten inkrementell, so ist der interne Rechner (Schritt 510) dafür konfiguriert, den Schluss zu ziehen, dass das Portzuweisungsverhalten der NAT-Einrichtung intern-extern inkrementell ist (wie oben eingehend beschrieben). Wenn diese Ports dieselben sind, das Portzuweisungsverhalten jedoch zufällig ist, so ist alternativ der interne Rechner (Schritt 515) dafür konfiguriert, den Schluss zu ziehen, dass das Portzuweisungsverhalten intern-extern zufällig ist (wie oben eingehend beschrieben). Sind die Portnummer E0 und die Portnummer L0 und/oder die Portnummer E0 und die Portnummer E1 nicht dieselben, so ist der interne Rechner (Schritt 520) dafür konfiguriert, den Schluss zu ziehen, dass das Portzuweisungsverhalten zufällig und nicht intern-extern inkrementell (Schritt 525) oder inkrementell und nicht intern-extern zufällig ist (Schritt 530). Das Verhalten bei der Portzuweisung zwischen Sockets kann von dem internen Rechner so umgeformt werden, dass die Ergebnisse der vorangehend beschriebenen Vergleiche darin wiedergespiegelt werden. Beispielsweise kann das Verhalten bei der Portzuweisung zwischen Sockets abhängig von den Ergebnissen der Vergleiche auf intern-extern zufällig oder intern-extern inkrementell gestellt werden.
  • Gemäß einem Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, im Anschluss an die für den Socket L0 und L1 an den STUN-Server 130b gesendete STUN-Anfrage eine STUN-Anfrage, beispielsweise unter Verwendung von Socket L1, gemäß den Schritten des Ablaufdiagramms aus 3 an STUN-Server 130b zu senden. Wenn der interne Rechner innerhalb des vordefinierten Zeitraums keine Antwort von STUN-Server 130b empfängt, so ist der interne Rechner dafür konfiguriert, den Schluss zu ziehen, dass die NAT-Einrichtung eine Ausnahme-NAT-Einrichtung (wie oben eingehend beschrieben) ist. Informationen zu diesem Merkmal der NAT-Einrichtung werden von dem internen Rechner gespeichert (z.B. exzeptionell = wahr). Wenn von dem STUN-Server eine Antwort eingeht, so ist der interne Rechner dafür konfiguriert, den abgebildeten Port zu speichern, der in der Antwort zurückgesendet wird. Dieser abgebildete Port wird als die Portnummer E2 bezeichnet.
  • Gemäß einem weiteren Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, unter Verwendung von beispielsweise Socket L1 gemäß den Schritten des Ablaufdiagramms aus 3 eine weitere STUN-Anfrage an STUN-Server 130c zu senden. Wenn der interne Rechner innerhalb des vordefinierten Zeitraums keine Antwort von STUN-Server 130c empfängt, so ist der interne Rechner dafür konfiguriert, zu bestätigen, dass die NAT-Einrichtung eine Ausnahme-NAT-Einrichtung ist. Wenn von dem STUN-Server eine Antwort eingeht, so ist der interne Rechner dafür konfiguriert, den abgebildeten Port zu speichern, der in der Antwort zurückgesendet wird. Dieser abgebildete Port wird als die Portnummer E3 bezeichnet.
  • 6 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten für die weitere Charakterisierung der NAT-Einrichtung durch den internen Rechner. Wird festgestellt, dass die NAT-Einrichtung eine Ausnahme-NAT-Einrichtung ist, so ist der interne Rechner bei 600 dafür konfiguriert, die Charakterisierung der NAT-Einrichtung zu beenden, und es wird der Schluss gezogen, dass das Portzuordnungsverhalten und das Portzuweisungsverhalten unbekannt sind. Die den Merkmalen zugeordneten Flags könnten so gesetzt werden, dass sie diese unbekannten Merkmale der NAT-Einrichtung wiederspiegeln. Bei 605 ist der interne Rechner dafür konfiguriert, die Portnummer E1 mit der Portnummer E2 zu vergleichen. Sind diese Portnummern dieselben (610), so wird festgestellt, dass das Portzuordnungsverhalten der NAT-Einrichtung Konisch ist (wie oben eingehend beschrieben). Sind diese Portnummern nicht dieselben (615), so wird festgestellt, dass das Portzuordnungsverhalten Port-sensitiv ist.
  • 7 ist ein Ablaufdiagramm auf einer hohen Ebene mit Schritten für die Feststellung des Inkrements eines einzelnen Sockets zwischen aufeinander folgenden Sockets durch den internen Rechner. Das bedeutet: Die Schritte werden von dem internen Rechner ausgeführt, um den Wert des Inkrements (z.B. 1, 5, 10 usw.) der nacheinander abgebildeten Ports festzustellen, die von der NAT-Einrichtung abgebildet werden. Bei 700 ist der interne Rechner dafür konfiguriert, festzustellen, ob
    • i) die Portnummer E1 niedriger ist als die Portnummer E2,
    • ii) die Portnummer E2 niedriger ist als die Portnummer E3,
    • iii) die Differenz zwischen der Portnummer E1 und der Portnummer E2 niedriger ist als ein Inkrement für die Auswahl von Ports (z.B. 20, 10, 5 oder dergleichen) und
    • iv) die Differenz zwischen der Portnummer E2 und der Portnummer E3 niedriger ist als das Inkrement für die Auswahl von Ports (z.B. 20, 10, 5 oder dergleichen).
  • Wenn der interne Rechner aus den vier oben genannten Vergleichen ein positives Ergebnis ableitet, so ist der interne Rechner dafür konfiguriert, zu bestätigen, dass die NAT-Einrichtung externe Ports inkrementell abbildet (Schritt 705). Weiterhin ist der interne Rechner dafür konfiguriert, das Inkrement für einen einzelnen Socket bei aufeinander folgenden Sockets als die Portnummer E3 minus die Portnummer E2 zu setzen (Schritt 710). Wenn der interne Rechner aus einem der vier oben genannten Vergleiche ein negatives Ergebnis ableitet, so ist der interne Rechner bei 715 dafür konfiguriert, festzustellen, ob
    • i) die Portnummer E2 niedriger ist als die Portnummer E3 und
    • ii) die Differenz zwischen der Portnummer E2 und der Portnummer E3 niedriger ist als das Inkrement für die Auswahl von Ports (z.B. 20, 10, 5 oder dergleichen).
  • Wenn der interne Rechner aus den beiden vorangehend genannten Vergleichen ein positives Ergebnis ableitet, so bestätigt der interne Rechner, dass die NAT-Einrichtung externe Ports inkrementell abbildet (Schritt 705). Weiterhin ist der interne Rechner dafür konfiguriert, das Inkrement für einen einzelnen Socket bei aufeinander folgenden Sockets auf die Portnummer E3 minus die Portnummer E2 festzulegen (Schritt 710). Leitet der interne Rechner aus einem der beiden vorangehend genannten Vergleiche oder aus beiden ein negatives Ergebnis ab, so ist der interne Rechner dafür konfiguriert, den Schluss zu ziehen, dass die NAT-Einrichtung Ports zufällig abbildet (Schritt 720), und legt das Inkrement für einen einzelnen Socket als unbekannt fest (Schritt 725).
  • Der interne Rechner ist dafür konfiguriert, nach Durchführung einer oder mehrerer der vorangehend beschriebenen Feststellungen der Merkmale der NAT-Einrichtung eine Anzahl interner Flags und eine Anzahl interner Variablen gemäß den festgestellten Merkmalen zu setzen. Die internen Flags und internen Variablen werden als Port-Vorhersage-Informationen bezeichnet. Die Port-Vorhersage-Informationen schließen ein:
    • i) die gemäß UDP vorhergesagte externe Portnummer [UDP-predicted-external-port number],
    • ii) die gemäß UDP vorhergesagte interne Portnummer [UDP-predicted-internal-port number],
    • iii) die abgebildete IP-Adresse,
    • iv) die interne IP-Adresse,
    • v) das Inkrement für einen einzelnen Socket,
    • vi) das Portzuordnungsverhalten (z.B. Konisch, Port-sensitiv symmetrisch usw.) und
    • vii) den gemäß UDP vorhergesagten Socket [UDP-predicted socket].
  • Die gemäß UDP vorhergesagte externe Portnummer ist ein nächster abgebildeter Port, dessen Erstellung durch die NAT-Einrichtung der interne Rechner vorhersagt. Die gemäß UDP vorhergesagte interne Portnummer ist der nächste Port, von dem der interne Rechner vorhersagt, dass er ihn erstellen wird. Die abgebildete IP-Adresse wird von der NAT-Einrichtung in dem externen Netzwerk verwendet. Die interne IP-Adresse wird von dem internen Rechner in dem internen Netzwerk verwendet. Das Inkrement für einen einzelnen Socket sind die vorhergesagten Inkremente zwischen nacheinander abgebildeten Ports und/oder nacheinander abgebildeten IP-Adressen, die von der NAT-Einrichtung erstellt werden. Die [einzelnen Arten von] Portzuordnungsverhalten wurden oben eingehend beschrieben. Der gemäß UDP vorhergesagte Socket ist der vorhergesagte Socket, den der interne Rechner verwenden wird.
  • Acht alternative Sätze von Port-Vorhersage-Informationen werden unten beschrieben. Der interne Rechner kann dafür konfiguriert sein, nach der Feststellung der Port-Vorhersage-Informationen durch den internen Rechner Port-Vorhersage-Informationen an den externen Rechner zu übertragen, so dass der externe Rechner die Informationen dazu verwenden kann, Pakete an einen abgebildeten Port zu senden, für den die Pakete die NAT-Einrichtung durchlaufen werden. Die Übertragung der Port-Vorhersage-Informationen wird unten eingehend beschrieben.
  • Gemäß einem ersten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er feststellt, dass die NAT-Einrichtung UDP-Pakete oder andere Pakete nicht unterstützt, die zur Charakterisierung der NAT-Einrichtung verwendet werden, dafür konfiguriert, den Schluss zu ziehen, dass eine UDP-Peer-to-Peer-Verbindung mit dem externen Rechner nicht möglich ist, und er kann dafür konfiguriert sein, dass ein anderes Verfahren zur Kommunikation mit dem externen Rechner festzulegen.
  • Gemäß einem zweiten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich nicht hinter einer NAT-Einrichtung befindet und die NAT-Einrichtung eine Ausnahme-NAT-Einrichtung ist, dafür konfiguriert, einen neuen Socket, etwa L2, zu generieren, und den Socket an einen zufälligen Port zu binden (z.B. einen Port zwischen 5000 und 65535). Der interne Rechner speichert dann die lokale Portnummer, die an den Socket L2 gebunden worden ist, beispielsweise als Portnummer L2. Weiterhin ist der interne Rechner dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer L2 zu setzen, da keine NAT-Einrichtung dafür vorgesehen ist, die Portnummer L2 auf eine abgebildete Portnummer abzubilden. Der interne Rechner ist weiterhin dafür konfiguriert, die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L2 zu setzen.
  • Gemäß einem dritten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich nicht hinter einer NAT-Einrichtung befindet, und die NAT-Einrichtung keine Ausnahme-NAT-Einrichtung ist, dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer L1 zu setzen, und ist dafür konfiguriert, die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L1 zu setzen.
  • Gemäß einem vierten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich hinter einer NAT-Einrichtung befindet, und die NAT-Einrichtung ein Portzuordnungsverhalten aufweist, das Konisch ist, dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer E1 zu setzen, den gemäß UDP vorhergesagten Socket auf den Socket L1 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L1 zu setzen.
  • Gemäß einem fünften Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich hinter einer NAT-Einrichtung befindet, die NAT-Einrichtung über ein Portzuordnungsverhalten verfügt, das nicht Konisch ist, und das Verhalten bei der Portzuweisung zwischen Sockets intern-extern ist, dafür konfiguriert, einen neuen Socket zu generieren, etwa L2, und den Socket L2 an eine Portnummer (z.B. eine zufällige Portnummer) zu binden, etwa die Portnummer L2, für deren Speicherung der interne Rechner konfiguriert ist. Der interne Rechner ist dann dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer L2 zu setzen, den gemäß UDP vorhergesagten Socket als L2 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L2 zu setzen.
  • Gemäß einem sechsten Ausführungsbeispiel der Port-Vorhersage-Informationen ist, falls der interne Rechner festgestellt hat, dass er sich hinter einer NAT-Einrichtung befindet, die NAT-Einrichtung über ein Portzuordnungsverhalten verfügt, das nicht Konisch ist, das Portzuordnungsverhalten inkrementell und nicht intern-extern ist, der interne Rechner dafür konfiguriert, den nächsten abgebildeten Port vorherzusagen, der von der NAT-Einrichtung erstellt werden wird.
  • Um dies näher auszuführen: Ist die Differenz zwischen der Portnummer E1 und der Portnummer E2 dieselbe wie die Differenz zwischen der Portnummer E2 und der Portnummer E3, so ist der interne Rechner dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer E3 plus das Inkrement für einen einzelnen Socket (d.h. die Portnummer E3 minus die Portnummer E2) zu setzen. Weiterhin ist der interne Rechner dafür konfiguriert, den gemäß UDP vorhergesagten Socket auf den Socket L1 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L1 zu setzen.
  • Alternativ ist der interne Rechner, falls die Differenz zwischen der Portnummer E1 und der Portnummer E2 nicht dieselbe ist wie die Differenz zwischen der Portnummer E2 und der Portnummer E3, dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer E3 plus das Inkrement für einen einzelnen Socket (d.h. die Portnummer E3 minus die Portnummer E2) zu setzen. Weiterhin ist der interne Rechner dafür konfiguriert, den gemäß UDP vorhergesagten Socket auf den Socket L1 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L1 zu setzen.
  • Gemäß einem siebten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich hinter einer NAT-Einrichtung befindet, die NAT-Einrichtung über ein Portzuweisungsverhalten verfügt, das nicht Konisch ist, und das Portzuweisungsverhalten inkrementell und nicht intern-extern ist, dafür konfiguriert, einen neuen Socket, etwa L2, zu generieren und den neuen Socket an eine Portnummer (z.B. eine zufällige Portnummer), etwa die Portnummer L2, zu binden, für deren Speicherung der interne Rechner konfiguriert ist. Der interne Rechner ist dann dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer E1 plus das Inkrement für einen einzelnen Socket (d.h. die Portnummer E3 minus die Portnummer E2) zu setzen, den gemäß UDP vorhergesagten Socket auf L2 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer L2 zu setzen.
  • Gemäß einem achten Ausführungsbeispiel der Port-Vorhersage-Informationen ist der interne Rechner, falls er festgestellt hat, dass er sich hinter einer NAT-Einrichtung befindet, die NAT-Einrichtung über ein Portzuordnungsverhalten verfügt, das nicht Konisch ist, und das Portzuweisungsverhalten nicht inkrementell und nicht intern-extern ist, dafür konfiguriert, die gemäß UDP vorhergesagte externe Portnummer auf die Portnummer E0 zu setzen, den gemäß UDP vorhergesagten Socket auf L0 zu setzen und die gemäß UDP vorhergesagte interne Portnummer auf die Portnummer E0 zu setzen.
  • Gemäß einem Ausführungsbeispiel ist der interne Rechner dafür konfiguriert, die Port-Vorhersage-Informationen an den externen Rechner zu übertragen, um eine UDP-Peer-to-Peer-Kommunikationsverbindung mit dem externen Rechner aufzubauen. Die Port-Vorhersage-Informationen können über einen Rückkanal zwischen dem internen Rechner und dem externen Rechner übertragen werden, um dafür zu sorgen, dass die Port-Vorhersage-Informationen von der an den externen Rechner angeschlossenen NAT-Einrichtung nicht blockiert werden. Der Rückkanal ist eine Kommunikationseinrichtung, die zwei Peers über eine Kommunikationsverbindung (die entweder über Leitungen oder drahtlos bestehen kann) verbindet. Der Rückkanal wird typischerweise von einem Server gehostet. Die beiden Peers können über eine Kommunikationsverbindung mit dem Server verbunden sein, was die Übertragung der Port-Vorhersage-Informationen erleichtert. Die Port-Vorhersage-Informationen können von dem externen Rechner dazu verwendet werden, festzustellen, ob sich der interne Rechner hinter einer NAT-Einrichtung befindet, oder um den nächsten Port vorherzusagen, der von der NAT-Einrichtung erstellt werden wird, um Pakete an den vorhergesagten Port zu senden. Im Anschluss an den Empfang der Port-Vorhersage-Informationen oder bevor diese Informationen empfangen werden, kann der externe Rechner dafür konfiguriert sein, die Merkmale der NAT-Einrichtung, zum Beispiel der NAT-Einrichtung 205, festzustellen, hinter der sich der externe Rechner befindet. Der externe Rechner kann die Schritte aus einem oder mehreren der obigen Ablaufdiagramme einer hohen Ebene ausführen; um die Merkmale oder das Vorhandensein der NAT-Einrichtung festzustellen. Der externe Rechner kann dann einen Satz interner Flags und interner Variablen (d.h. Port-Vorhersage-Informationen) setzen und diese Port-Vorhersage-Informationen an den internen Rechner übertragen.
  • Gemäß einem Ausführungsbeispiel befinden sich, falls der interne Rechner und der externe Rechner anhand der empfangenen Port-Vorhersage-Informationen feststellen, dass sie über dieselbe abgebildete IP-Adresse verfügen, sowohl der interne Rechner als auch der externe Rechner hinter derselben NAT-Einrichtung. Diese Rechner werden dann dafür konfiguriert sein, die gemäß UDP vorhergesagte interne Portnummer für die gemeinsame Nutzung von Paketen [packet sharing] zu verwenden. Gemäß dem vorangehend beschriebenen Ausführungsbeispiel wird, falls die Pakete die NAT-Einrichtung durchlaufen, eine Peer-to-Peer-Kommunikationsverbindung zwischen dem internen und dem externen Rechner aufgebaut.
  • Gemäß einem alternativen Ausführungsbeispiel ist, falls der externe Rechner feststellt, dass der interne Rechner sich hinter einer NAT-Einrichtung mit dem Portzuordnungsverhalten Konisch befindet, der Port, der von dem externen Rechner dafür verwendet wird, Pakete an den internen Rechner zu senden, die gemäß UDP vorhergesagte externe Portnummer. In ähnlicher Weise kann der interne Rechner dafür konfiguriert sein, Pakete an die gemäß UDP vorhergesagte Portnummer der NAT-Einrichtung zu senden, hinter der sich der externe Rechner befindet. Gemäß dem vorangehend beschriebenen Ausführungsbeispiel wird zwischen dem internen und dem externen Rechner eine Peer-to-Peer- Kommunikationsverbindung aufgebaut, falls die Pakete die NAT-Vorrichtungen durchlaufen.
  • Alternativ kann, falls der externe Rechner feststellt, dass der interne Rechner sich hinter einer symmetrischen NAT-Einrichtung befindet, der externe Rechner dafür konfiguriert sein, Pakete an den internen Rechner zu senden und dabei eine Vielzahl von verschiedenen Ports zu verwenden, die auf dem Inkrement für einen einzelnen Socket beruhen, das von dem externen Rechner in den Port-Vorhersage-Informationen empfangen wird, die er von dem internen Rechner empfängt. Beispielsweise kann der interne Rechner dafür konfiguriert sein, fünf Pakete über fünf verschiedene Ports an den internen Rechner zu senden. Die fünf verschiedenen Ports könnten einschließen: die gemäß UDP vorhergesagte externe Portnummer plus das Inkrement für einen einzelnen Socket, die gemäß UDP vorhergesagte externe Portnummer plus das Zweifache des Inkrements für einen einzelnen Socket, die gemäß UDP vorhergesagte externe Portnummer plus das Dreifache des Inkrements für einen einzelnen Socket usw. In ähnlicher Weise kann der interne Rechner dafür konfiguriert sein, unter Verwendung von Inkrementen einer vorhergesagten Portnummer eine Anzahl Pakete an den externen Rechner zu senden. Gemäß dem vorangehend beschriebenen Ausführungsbeispiel wird, wenn die Pakete die NAT-Einrichtung durchlaufen, zwischen dem internen und dem externen Rechner eine Peer-to-Peer-Kommunikationsverbindung aufgebaut.
  • Es wird darauf hingewiesen, dass die oben beschriebenen Beispiele und Ausführungsformen lediglich zu Illustrationszwecken dienen und dass verschiedene Abwandlungen oder Änderungen angesichts dessen für Fachleute nahe liegen und in den Gedanken und Geltungsbereich dieser Anmeldung sowie den Geltungsbereich der beiliegenden Ansprüche aufgenommen werden sollen. Beispielsweise können hier beschriebene Firewall-Einrichtungen dafür konfiguriert sein, im Wesentlichen ähnlich zu funktionieren wie die verschiedentlich beschriebenen NAT-Einrichtungen, wobei allerdings die Firewall-Einrichtungen nicht dafür konfiguriert sein können, die Übersetzung von Netzwerkadressen durchzuführen, und möglicherweise nicht dafür konfiguriert sind, die Übersetzung von Port-Adressen durchzuführen. Die Funktionen von Firewall-Einrichtungen sind Fachleuten bekannt und werden hier nicht eingehend beschrieben, mit Ausnahme der Anmerkung, dass Firewall-Einrichtungen dafür konfiguriert sind, auf der Netzwerk-Ebene, Anwendungsschichtebene und dergleichen betrieben zu werden, um Pakete am Passieren der Firewall zu hindern, falls sie einem Satz Regeln nicht entsprechen. Ein Firewall-Administrator kann den Satz Regeln definieren, oder der Satz Regeln kann ein standardmäßiger Satz Regeln sein. Die Regeln könnten die hier beschriebenen Regeln für die Paketfilterung einschließen (z.B. die Ausnahmeregel). Gemäß einem weiteren Beispiel könnten eine oder mehrere hier beschriebene NAT-Einrichtungen dafür konfiguriert sein, in Verbindung mit einer oder mehrerer Firewall-Einrichtungen zu funktionieren, um NAT durchzuführen und das Filtern einer Firewall zur Verfügung zu stellen. Das Zusammenwirken von NAT-Einrichtungen und Firewall-Einrichtungen ist Fachleuten bekannt und wird hier nicht eingehender beschrieben. Die obige Beschreibung sollte daher nicht so verstanden werden, dass sie den Geltungsbereich der Erfindung einschränkt, der von den Ansprüchen definiert wird.

Claims (28)

  1. Ein Verfahren für die Charakterisierung einer Netzwerkadressenübersetzungs-[network address translation = NAT] -Einrichtung durch einen internen Rechner hinter der NAT-Einrichtung, wobei das Verfahren umfasst: Erstellung einer Vielzahl von Sockets; Jeweilige Anbindung der Vielzahl von Sockets an eine Vielzahl von Ports; Übertragung einer Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; Feststellung, dass die NAT-Einrichtung UDP-Pakete unterstützt, falls von den STUN-Servern keine Antworten eingehen, und Feststellung einer Anzahl von NAT-Merkmalen der NAT-Einrichtung, falls von jedem der STUN-Server eine Antwort eingeht.
  2. Verfahren nach Anspruch 1, wobei die Vielzahl von Antworten mindestens eine erste Antwort und eine zweite Antwort, die nach der ersten Antwort empfangen wird, einschließt.
  3. Verfahren nach Anspruch 2, weiterhin umfassend: Feststellung, dass ein Portzuweisungsverhalten der NAT-Einrichtung inkrementell ist, falls ein erster abgebildeter Port, der in der ersten Antwort empfangen wird, niedriger ist als ein zweiter abgebildeter Port, der in der zweiten Antwort empfangen wird, und falls der erste abgebildete Port minus der zweite abgebildete Port niedriger ist als eine ausgewählte Nummer, und Feststellung, dass das Portzuweisungsverhalten der NAT-Einrichtung zufällig ist, falls der erste abgebildete Port höher als oder gleich dem zweiten abgebildeten Port ist und/oder falls der erste abgebildete Port minus der zweite abgebildete Port größer als oder gleich der ausgewählten Nummer ist.
  4. Verfahren nach Anspruch 3, wobei die Vielzahl von Sockets mindestens einen ersten Socket und einen zweiten Socket einschließt, die jeweils einem ersten Port und einem zweiten Port zugeordnet sind, die in der Vielzahl von Ports eingeschlossen sind.
  5. Verfahren nach Anspruch 4, weiterhin umfassend: Feststellung, dass ein Portzuweisungsverhalten der NAT-Einrichtung intern-extern inkrementell ist, falls das Portzuweisungsverhalten der NAT-Einrichtung inkrementell ist, falls der erste abgebildete Port derselbe ist wie der erste Port und falls der zweite abgebildete Port derselbe ist wie der zweite Port; und Feststellung, dass ein Portzuweisungsverhalten der NAT-Einrichtung intern-extern zufällig ist, falls das Portzuweisungsverhalten der NAT-Einrichtung zufällig ist, falls der erste abgebildete Port derselbe ist wie der erste Port und falls der zweite abgebildete Port derselbe ist wie der zweite Port.
  6. Verfahren nach Anspruch 1, wobei die Vielzahl von STUN-Servern mindestens einen ersten, einen zweiten und einen dritten STUN-Server einschließt und der Schritt der Übertragung der Vielzahl von STUN-Anfragen einschließt: Übertragung einer ersten STUN-Anfrage und einer zweiten STUN-Anfrage an den ersten STUN-Server; Übertragung einer dritten STUN-Anfrage an den zweiten STUN-Server; und Übertragung einer vierten STUN-Anfrage an den dritten STUN-Server, wobei die erste STUN-Anfrage einem ersten Socket der Vielzahl von Sockets zugeordnet ist und die zweite, dritte und vierte STUN-Anfrage einem zweiten Socket der Vielzahl von Sockets zugeordnet sind.
  7. Verfahren nach Anspruch 6, weiterhin umfassend die Feststellung, dass ein Merkmal der Filterung eingehender Pakete durch die NAT-Einrichtung exzeptionell ist, falls mindestens eine Antwort von dem ersten STUN-Server eingeht und von dem zweiten STUN-Server keine Antwort eingeht.
  8. Verfahren nach Anspruch 6, weiterhin umfassend: Empfang einer ersten Antwort von dem ersten STUN-Server, wobei die erste Antwort einen ersten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet wird und der dem zweiten Socket zugeordnet ist; Empfang einer zweiten Antwort von dem zweiten STUN-Server, wobei die zweite Antwort einen zweiten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet wird und der dem zweiten Socket zugeordnet ist, Feststellung, dass ein Portzuordnungsverhalten der NAT-Einrichtung Konisch ist, falls der erste abgebildete Port derselbe ist wie der zweite abgebildete Port; und Feststellung, dass das Portzuordnungsverhalten der NAT-Einrichtung Port-sensitiv symnietrisch ist, falls der erste abgebildete Port derselbe ist wie der zweite abgebildete Port.
  9. Verfahren nach Anspruch 8, weiterhin umfassend: Empfang einer dritten Antwort von dem dritten STUN-Server, wobei die dritte Antwort einen dritten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet wird und der dem zweiten Socket zugeordnet ist, Setzen eines Inkrements für einen einzelnen Socket auf die Differenz zwischen dem zweiten abgebildeten Port und dem dritten abgebildeten Port, falls der erste abgebildete Port niedriger ist als der zweite abgebildete Port, falls der zweite abgebildete Port niedriger ist als der dritte abgebildete Port und falls die Differenz zwischen dem ersten abgebildeten Port und dem zweiten abgebildeten Port geringer ist als ein Inkrement für die Auswahl von Ports.
  10. Verfahren nach Anspruch 9, weiterhin umfassend: Empfang einer dritten Antwort von dem dritten STUN-Server, wobei die dritte Antwort einen dritten abgebildeten Port einschließt, der von der NAT-Einrichtung abgebildet wird und dem zweiten Socket zugeordnet ist, Setzen eines Inkrements für einen einzelnen Socket auf die Differenz zwischen dem zweiten abgebildeten Port und dem dritten abgebildeten Port, falls der zweite abgebildete Port niedriger ist als der dritte abgebildete Port und falls die Differenz zwischen dem zweiten abgebildeten Port und dem dritten abgebildeten Port geringer ist als ein Inkrement für die Auswahl von Ports.
  11. Verfahren nach Anspruch 10, weiterhin umfassend, über einen Rückkanal einen Satz Port-Vorhersage-Informationen an einen externen Rechner zu übertragen, wobei die Port-Vorhersage-Informationen einschließen: eins oder mehrere der Inkremente für einen einzelnen Socket, das Portzuordnungsverhalten, den ersten Port, den zweiten Port, den ersten abgebildeten Port, den zweiten abgebildeten Port und den dritten abgebildeten Port.
  12. Verfahren nach Anspruch 11, weiterhin umfassend: Vorhersage eines nächsten Satzes von durch die NAT auszuwählenden Ports durch den externen Rechner auf der Grundlage von einem oder mehreren in dem Satz von NAT-Merkmalen eingeschlossenen Elementen; und Übertragung eines Satzes von Paketen von dem externen Rechner an die NAT-Einrichtung und den internen Rechner unter Verwendung der nächsten Ports.
  13. Verfahren nach Anspruch 11, weiterhin umfassend: falls das Portzuweisungsverhalten Konisch ist, Senden von Paketen von dem externen Rechner an den internen Rechner über den ersten abgebildeten Port.
  14. Verfahren nach Anspruch 11, weiterhin umfassend: falls das Portzuordnungsverhalten Adress-sensitiv-symmetrisch oder Port-sensitiv-symmetrisch ist, Senden von Paketen von dem externen Rechner an den internen Rechner über eine IP-Adresse des internen Rechners und eine Vielzahl von vorhergesagten Ports, die Inkremente eines letzten von der NAT-Einrichtung abgebildeten Ports sind, wobei die Inkremente Vielfache des Inkrements für einen einzelnen Socket einschließen.
  15. Verfahren nach Anspruch 14, wobei in dem Fall, dass mindestens eines der Pakete durch die NAT-Einrichtung in den internen Rechner gelangt, zwischen dem internen Rechner und dem externen Rechner eine Peer-to-Peer-Verbindung aufgebaut wird.
  16. Verfahren nach Anspruch 1, weiterhin umfassend die Übertragung des Satzes NAT-Merkmale über einen Rückkanal an einen externen Rechner.
  17. Verfahren nach Anspruch 16, weiterhin umfassend: Vorhersage eines Satzes von nächsten Ports, die von der NAT abgebildet werden, durch den externen Rechner auf der Grundlage des Satzes von NAT-Merkmalen und Übertragung eines Satzes Pakete von dem externen Rechner an die NAT-Einrichtung und den internen Rechner über die nächsten Ports.
  18. Ein Rechnersystem, das dafür konfiguriert ist, eine Netzwerkadressenübersetzungs-[network address translation = NAT]-Einrichtung in der Weise zu charakterisieren, dass der Rechner über ein internes Netzwerk an die NAT-Einrichtung gekoppelt ist und der Rechner sich hinter der NAT-Einrichtung befindet, wobei das Rechnersystem folgendes umfasst: eine Web-fähige Einrichtung, die dafür konfiguriert ist, eine Vielzahl von Sockets zu erstellen; die Vielzahl von Sockets jeweils an eine Vielzahl von Ports zu binden; eine Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern zu übertragen, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; festzustellen, dass die NAT-Einrichtung UDP-Pakete unterstützt, falls von den STUN-Servern keine Antworten eingehen, und einen Satz von NAT-Merkmalen der NAT-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  19. Ein Rechnersystem umfassend: ein erstes Netzwerk; eine erste Netzwerkadressenübersetzungs-[network address translation = NAT]-Einrichtung in dem ersten Netzwerk; mindestens eine erste Web-fähige Einrichtung in dem ersten Netzwerk, wobei die erste Web-fähige Einrichtung operativ an die erste NAT-Einrichtung gekoppelt ist und sich operativ hinter der ersten NAT-Einrichtung befindet und die erste Web-fähige Einrichtung dafür konfiguriert ist, eine Vielzahl von Sockets zu erstellen; die Vielzahl von Sockets jeweils an eine Vielzahl von Ports zu binden; eine Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern zu übertragen, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; und einen Satz NAT-Merkmale der ersten NAT-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  20. Rechnersystem nach Anspruch 19, weiterhin umfassend: ein zweites Netzwerk, das operativ an die NAT-Einrichtung gekoppelt ist; und mindestens eine zweite Web-fähige Einrichtung, die an das zweite Netzwerk gekoppelt ist und dafür konfiguriert ist, den Satz NAT-Merkmale von der ersten Web-fähigen Einrichtung zu empfangen, wobei die zweite Web-fähige Einrichtung dafür konfiguriert ist, auf der Grundlage der NAT-Merkmale einen Satz von als nächsten abgebildeten Ports vorherzusagen, die von der NAT-Einrichtung abgebildet werden, und einen Satz Pakete an die erste NAT-Einrichtung an dem Satz von als nächsten abgebildeten Ports zu senden, falls eines der Pakete an einen als nächsten abgebildeten Port, der von der NAT-Einrichtung abgebildet wird, gesendet wird, dieses Paket dafür konfiguriert ist, die NAT-Einrichtung zu durchlaufen.
  21. Rechnersystem nach Anspruch 20, weiterhin umfassend: eine zweite NAT-Einrichtung in dem zweiten Netzwerk, wobei die zweite netzwerkfähige Einrichtung sich hinter der zweiten NAT-Einrichtung befindet und die zweite netzwerkfähige Einrichtung dafür konfiguriert ist, eine weitere Vielzahl von Sockets zu erstellen, die weitere Vielzahl von Sockets jeweils an eine weitere Vielzahl von Ports zu binden; eine weitere Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern zu übertragen, wobei jede STUN-Anfrage einem der weiteren Sockets zugeordnet ist; und einen Satz von NAT-Merkmalen der zweiten NAT-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  22. Rechnersystem nach Anspruch 21, weiterhin umfassend: ein drittes Netzwerk, das zwischen der ersten NAT-Einrichtung und der zweiten NAT-Einrichtung angeordnet ist.
  23. Rechnersystem nach Anspruch 22, wobei das dritte Netzwerk das Internet ist.
  24. Rechnersystem nach Anspruch 23, weiterhin umfassend: eine Vielzahl von STUN-Servern, die operativ an das zweite Netzwerk gekoppelt sind und dafür konfiguriert sind, die STUN-Anfragen zu empfangen.
  25. Ein Verfahren zur Feststellung von Merkmalen einer Firewall-Einrichtung durch einen internen Rechner hinter der Firewall-Einrichtung, wobei das Verfahren umfasst: Erstellung einer Vielzahl von Sockets; Jeweilige Anbindung der Vielzahl von Sockets an eine Vielzahl von Ports; Übertragung einer Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; Feststellung, dass die Firewall-Einrichtung UDP-Pakete unterstützt, falls von den STUN-Servern keine Antworten eingehen; und Feststellung eines Satzes von Firewall-Merkmalen der Firewall-Einrichtung, falls von jedem der STUN-Server eine Antwort eingeht.
  26. Verfahren nach Anspruch 25, wobei die Vielzahl von Antworten mindestens eine erste Antwort und eine zweite Antwort, die nach der ersten Antwort empfangen wird, einschließt.
  27. Rechnersystem umfassend: ein erstes Netzwerk; eine Firewall-Einrichtung in dem ersten Netzwerk; mindestens eine erste Web-fähige Einrichtung in dem ersten Netzwerk, wobei die erste Web-fähige Einrichtung operativ an die Firewall-Einrichtung gekoppelt ist und sich operativ hinter der Firewall-Einrichtung befindet und die erste Web-fähige Einrichtung dafür konfiguriert ist, eine Vielzahl von Sockets zu erstellen; die Vielzahl von Sockets jeweils an eine Vielzahl von Ports zu binden; eine Vielzahl von STUN-Anfragen in Benutzer-Datagramm-Protokoll-[user datagram protocol = UDP]-Paketen an eine Vielzahl von STUN-Servern zu übertragen, wobei jede STUN-Anfrage einem der Sockets zugeordnet ist; und einen Satz von Firewall-Merkmalen der Firewall-Einrichtung festzustellen, falls von jedem der STUN-Server eine Antwort eingeht.
  28. Rechnersystem nach Anspruch 27, weiterhin umfassend: ein zweites Netzwerk, das operativ an die Firewall-Einrichtung gekoppelt ist; und mindestens eine zweite Web-fähige Einrichtung, die an das zweite Netzwerk gekoppelt ist und dafür konfiguriert ist, den Satz von Firewall-Merkmalen von der ersten Web-fähigen Einrichtung zu empfangen, wobei die zweite Web-fähige Einrichtung dafür konfiguriert ist, auf der Grundlage der Firewall-Merkmale einen Satz von als nächsten abgebildeten Ports vorherzusagen, die von der Firewall-Einrichtung abgebildet werden, und einen Satz von Paketen an die Firewall-Einrichtung an dem Satz von als nächsten abgebildeten Ports zu senden, falls eines der Pakete an den als nächsten abgebildeten Port gesendet wird, der von der Firewall-Einrichtung abgebildet wird, dieses Paket konfiguriert ist, die Firewall-Einrichtung zu durchlaufen.
DE102006012614A 2005-03-22 2006-03-17 Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung Active DE102006012614B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/088,030 2005-03-22
US11/088,030 US7738468B2 (en) 2005-03-22 2005-03-22 Method and apparatus for packet traversal of a network address translation device

Publications (2)

Publication Number Publication Date
DE102006012614A1 true DE102006012614A1 (de) 2007-02-15
DE102006012614B4 DE102006012614B4 (de) 2011-08-18

Family

ID=37015893

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006012614A Active DE102006012614B4 (de) 2005-03-22 2006-03-17 Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung

Country Status (3)

Country Link
US (2) US7738468B2 (de)
CN (1) CN100561976C (de)
DE (1) DE102006012614B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11128636B1 (en) 2020-05-13 2021-09-21 Science House LLC Systems, methods, and apparatus for enhanced headsets

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US8060626B2 (en) * 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US7543064B2 (en) * 2004-09-30 2009-06-02 Logitech Europe S.A. Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host
US7738468B2 (en) * 2005-03-22 2010-06-15 Logitech Europe S.A. Method and apparatus for packet traversal of a network address translation device
US8619765B2 (en) * 2005-06-13 2013-12-31 Cisco Technology, Inc. Automatic reconfiguration of layer 3 device to layer 2 device upon detection of upstream NAT/NAPT device
KR100758971B1 (ko) * 2006-05-09 2007-09-14 주식회사 케이티프리텔 스턴 바인딩 프로토콜을 확장한 스턴 바인딩 메시지를이용하여 서로 다른 ip 도메인 간의 연동을 위한 통신시스템, 응용 계층 게이트웨이 장치, 스턴 서버 및 통신방법
US8204065B2 (en) 2006-09-29 2012-06-19 Avaya Ecs Ltd. Network address translation in session initiation protocol based application
US8533339B2 (en) 2006-10-13 2013-09-10 Cisco Technology, Inc. Discovering security devices located on a call path and extending bindings at those discovered security devices
US20080122932A1 (en) * 2006-11-28 2008-05-29 George Aaron Kibbie Remote video monitoring systems utilizing outbound limited communication protocols
US8069251B2 (en) 2007-06-01 2011-11-29 Adobe Systems Incorporated System and/or method for client-driven server load distribution
CN101335681B (zh) * 2007-06-27 2011-08-10 华为技术有限公司 获取穿越资源的方法、对等网络节点和对等网络
US8631155B2 (en) * 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
US8239548B2 (en) 2007-07-17 2012-08-07 Adobe Systems Incorporated Endpoint discriminator in network transport protocol startup packets
CN101179581B (zh) * 2007-12-13 2010-06-09 北京邮电大学 一种采用ice中继候选地址进行媒体传输的方法
US8145698B1 (en) 2008-01-03 2012-03-27 Adobe Systems Incorporated Self organizing peer-to-peer system, method, and/or apparatus
US8171147B1 (en) 2008-02-20 2012-05-01 Adobe Systems Incorporated System, method, and/or apparatus for establishing peer-to-peer communication
US8312147B2 (en) * 2008-05-13 2012-11-13 Adobe Systems Incorporated Many-to-one mapping of host identities
US8341401B1 (en) 2008-05-13 2012-12-25 Adobe Systems Incorporated Interoperable cryptographic peer and server identities
US20090319674A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Techniques to manage communications between relay servers
GB0821236D0 (en) * 2008-11-20 2008-12-31 Nec Corp Client-server communications in mobile radio communications device
US9160794B2 (en) * 2008-12-04 2015-10-13 Microsoft Technology Licensing, Llc Network address translators (NAT) type detection techniques
US8750112B2 (en) 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
US8601567B2 (en) * 2009-05-08 2013-12-03 At&T Intellectual Property I, L.P. Firewall for tunneled IPv6 traffic
US8949444B1 (en) * 2009-07-14 2015-02-03 Juniper Networks, Inc. Flow control scheme for parallel flows
US9083587B2 (en) * 2009-08-21 2015-07-14 Cisco Technology, Inc. Port chunk allocation in network address translation
US8964567B2 (en) * 2011-07-21 2015-02-24 Microsoft Technology Licensing, Llc Wireless synchronization testing
US9742728B2 (en) * 2011-08-30 2017-08-22 Sonus Networks, Inc. Determining expiration time of bindings for network address translation devices
CN103166824B (zh) * 2011-12-13 2016-09-28 华为技术有限公司 一种互联方法、装置和系统
EP3800854A1 (de) 2012-02-14 2021-04-07 INTEL Corporation Systeme und verfahren für peer-to-peer-vernetzung und gemeinsame nutzung
CN103297552B (zh) * 2012-03-02 2016-05-25 百度在线网络技术(北京)有限公司 传递客户端IPv4地址及端口至后端服务器的方法及装置
CN102611766A (zh) * 2012-04-09 2012-07-25 苏州工业园区云视信息技术有限公司 基于NAT实现两个VoIP实体媒体互通的方法
US10412122B1 (en) * 2016-01-22 2019-09-10 Cisco Technology, Inc. Dynamic per-session NAT-behavior selection
CN109040344A (zh) * 2018-09-20 2018-12-18 杭州智块网络科技有限公司 一种nat穿透方法、装置、设备及存储介质

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3017456A (en) 1958-03-24 1962-01-16 Technicolor Corp Bandwidth reduction system for television signals
US4813056A (en) 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
GB2267624B (en) 1992-05-05 1995-09-20 Acorn Computers Ltd Image data compression
US5778143A (en) 1993-01-13 1998-07-07 Hitachi America, Ltd. Method and apparatus for the selection of data for use in VTR trick playback operation in a system using progressive picture refresh
JPH06237451A (ja) 1993-02-10 1994-08-23 Hitachi Ltd 動画通信方式および端末装置
WO1994024629A1 (en) 1993-04-13 1994-10-27 Intel Corporation System for computer supported collaboration
JPH0795571A (ja) 1993-09-27 1995-04-07 Oki Electric Ind Co Ltd 画像符号化装置、画像復号化装置及び多地点間データ伝送方法
US5592225A (en) 1993-09-30 1997-01-07 Matsushita Electric Industrial Co., Ltd. Device and method for controlling coding
US5991308A (en) 1995-08-25 1999-11-23 Terayon Communication Systems, Inc. Lower overhead method for data transmission using ATM and SCDMA over hybrid fiber coax cable plant
JP3068002B2 (ja) 1995-09-18 2000-07-24 沖電気工業株式会社 画像符号化装置、画像復号化装置及び画像伝送システム
US5790180A (en) 1995-12-28 1998-08-04 At&T Corp. Video telephone call handling system and method
US5740278A (en) 1996-02-16 1998-04-14 Cornell Research Foundation, Inc. Facsimile-based video compression method and system
US5990852A (en) 1996-10-31 1999-11-23 Fujitsu Limited Display screen duplication system and method
US6061739A (en) 1997-11-26 2000-05-09 International Business Machines Corp. Network address assignment using physical address resolution protocols
JP3905969B2 (ja) 1998-01-30 2007-04-18 株式会社東芝 動画像符号化装置および動画像符号化方法
US6058421A (en) 1998-02-04 2000-05-02 3Com Corporation Method and system for addressing network host interfaces from a cable modem using DHCP
US6775276B1 (en) 1998-05-27 2004-08-10 3Com Corporation Method and system for seamless address allocation in a data-over-cable system
US6826620B1 (en) 1998-08-26 2004-11-30 Paradyne Corporation Network congestion control system and method
US6243749B1 (en) 1998-10-08 2001-06-05 Cisco Technology, Inc. Dynamic network address updating
US6219706B1 (en) 1998-10-16 2001-04-17 Cisco Technology, Inc. Access control for networks
US6654891B1 (en) 1998-10-29 2003-11-25 Nortel Networks Limited Trusted network binding using LDAP (lightweight directory access protocol)
US6614781B1 (en) 1998-11-20 2003-09-02 Level 3 Communications, Inc. Voice over data telecommunications network architecture
US6766519B1 (en) 1999-03-26 2004-07-20 Emc Corporation Generic software interface for hardware environments having executing code registers itself and the code for a next suboperation
US6222529B1 (en) 1999-05-05 2001-04-24 Shareware, Inc. Method and apparatus for providing multiple sessions on a single user operating system
US7054279B2 (en) 2000-04-07 2006-05-30 Broadcom Corporation Method and apparatus for optimizing signal transformation in a frame-based communications network
AU2001264799A1 (en) * 2000-05-24 2001-12-03 Virtual Clinic, Inc. Method and apparatus for providing personalized services
US20050125532A1 (en) 2000-05-26 2005-06-09 Gur Kimchi Traversing firewalls and nats
GB2366464A (en) 2000-08-14 2002-03-06 Nokia Mobile Phones Ltd Video coding using intra and inter coding on the same data
EP1238476B1 (de) 2000-10-09 2011-12-14 Koninklijke Philips Electronics N.V. Verfahren und vorrichtung zur datenübertragung und leistungsregelung
US20020067405A1 (en) 2000-12-04 2002-06-06 Mcdiarmid James Michael Internet-enabled portable audio/video teleconferencing method and apparatus
US6973484B1 (en) 2000-12-29 2005-12-06 3Pardata, Inc. Method of communicating data in an interconnect system
US7272650B2 (en) 2001-04-17 2007-09-18 Intel Corporation Communication protocols operable through network address translation (NAT) type devices
US6842484B2 (en) 2001-07-10 2005-01-11 Motorola, Inc. Method and apparatus for random forced intra-refresh in digital image and video coding
US7107464B2 (en) 2001-07-10 2006-09-12 Telecom Italia S.P.A. Virtual private network mechanism incorporating security association processor
RU2291586C2 (ru) 2001-08-23 2007-01-10 Поликом, Инк. Система и способ маскирования ошибок видеосигнала
US6904040B2 (en) 2001-10-05 2005-06-07 International Business Machines Corporaiton Packet preprocessing interface for multiprocessor network handler
US6693663B1 (en) 2002-06-14 2004-02-17 Scott C. Harris Videoconferencing systems with recognition ability
US7640549B2 (en) 2002-07-22 2009-12-29 Agilent Technologies, Inc. System and method for efficiently exchanging data among processes
US7301951B2 (en) 2002-07-31 2007-11-27 At&T Knowledge Ventures, L.P. Resource reservation protocol based guaranteed quality of service internet protocol connections over a switched network
US20040022222A1 (en) 2002-07-31 2004-02-05 Allister Clisham Wireless metropolitan area network system and method
US7302496B1 (en) 2002-11-12 2007-11-27 Cisco Technology, Inc. Arrangement for discovering a localized IP address realm between two endpoints
US7899932B2 (en) 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
US7283489B2 (en) 2003-03-31 2007-10-16 Lucent Technologies Inc. Multimedia half-duplex sessions with individual floor controls
CN1282246C (zh) * 2003-09-01 2006-10-25 上海宏力半导体制造有限公司 可阻断寄生损失电流的高功率射频集成电路及其制造方法
US8116370B2 (en) 2003-10-20 2012-02-14 Logitech Europe S.A. Methods and apparatus for encoding and decoding video data
US7886057B2 (en) 2003-10-20 2011-02-08 Logitech Europe S.A. Method and apparatus for communicating data between two hosts
US7634146B2 (en) 2003-10-20 2009-12-15 Logitech Europe S.A. Methods and apparatus for encoding and decoding video data
US7826526B2 (en) 2003-10-20 2010-11-02 Logitech Europe S.A. Methods and apparatus for encoding and decoding video data
US7636805B2 (en) 2003-10-20 2009-12-22 Logitech Europe S.A. Method and apparatus for communicating data between two hosts
US7328282B2 (en) * 2003-10-23 2008-02-05 International Business Machines Corporation Aspect oriented web service invocation
US7543064B2 (en) * 2004-09-30 2009-06-02 Logitech Europe S.A. Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host
US7738468B2 (en) * 2005-03-22 2010-06-15 Logitech Europe S.A. Method and apparatus for packet traversal of a network address translation device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11128636B1 (en) 2020-05-13 2021-09-21 Science House LLC Systems, methods, and apparatus for enhanced headsets

Also Published As

Publication number Publication date
CN100561976C (zh) 2009-11-18
DE102006012614B4 (de) 2011-08-18
US7738468B2 (en) 2010-06-15
CN1838636A (zh) 2006-09-27
US7957406B2 (en) 2011-06-07
US20060215652A1 (en) 2006-09-28
US20100220721A1 (en) 2010-09-02

Similar Documents

Publication Publication Date Title
DE102006012614B4 (de) Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung
DE60311297T2 (de) Gemeinsame port adressenumsetzung in einem router der als nat & nat-pt gateway agiert
EP3035634B1 (de) Telekommunikationsanordnung und verfahren zum herstellen einer rtc-verbindung zwischen einem ersten endpunkt und einem zweiten endpunkt
DE10392494T5 (de) Mechanismen zum Bereitstellen von Verbindbarkeit zwischen Netzen unterschiedlicher Adressbereiche
DE102007046627A1 (de) Verfahren und Vorrichtung zum Organisieren von Internet-Kommunikationsvorgängen unter Nutzung einer dynamischen STUN-Infrastrukturkonfiguration
DE112016002952T5 (de) Systeme und Verfahren zum Verarbeiten von Paketen in einem Computernetz
WO2018099736A9 (de) Verfahren für ein kommunikationsnetzwerk und elektronische kontrolleinheit
DE10330079B4 (de) Router und Verfahren zur Aktivierung eines deaktivierten Computers
DE60211287T2 (de) Handhabung von Verbindungen, die zwischen Firewalls umziehen
DE60206780T2 (de) Netzwerkverbindungsvorrichtung, verbindungssystem und netzwerkverbindungsverfahren
DE60311682T2 (de) Verfahren zur Ausführung einer symmetrischen Adressenumsetzung
DE602005001578T2 (de) Brücke zur Übersetzung zwsichen lokalen Ethernet- und 1394A-Anschlüssen für Geräte der Unterhaltungselektronik
DE60304704T2 (de) Netzsystem, Router und Netzeinrichtungsverfahren
DE69834253T2 (de) System und Verfahren zur Ausführung eines bestimmten Befehls zwischen erstem und zweitem Endgerät
DE60106055T2 (de) Verfahren zum Aufbau einer Kommunikation zwischen einem Gerät und einer Hostanwendung über ein IP-Netz, Hostanwendung und DSL-Router, und Softwareprogramm zur Durchführung dieses Verfahrens
DE102013109884B3 (de) Verfahren zum Herstellen der Verbindung von Netzwerk-Endgeräten
DE60302865T2 (de) Bandbreitenmakler für ein Telekommunikationssystem
DE112015007093T5 (de) Kommunikationsvorrichtung und kommunikationsverfahren
EP1623559B1 (de) Verfahren zum datenaustausch zwischen netzelementen in netzwerken mit verschiedenen adressbereichen
DE102020134185A1 (de) Verfahren zur Durchleitung von Service-Anfragen und Echtzeitrechner zur Durchführung des Verfahrens zur Durchleitung von Service-Anfragen
DE10327545B4 (de) Verfahren und Vorrichtung zur Verarbeitung von Echtzeitdaten
EP2933985A1 (de) Verwendung von Multicast DNS
EP3629549A1 (de) Verfahren und anordnung zum betrieb einer anwendung auf einem industriellen bedien- und beobachtungsgerät
EP3959850B1 (de) Verfahren zum bereitstellen von verbindungsherstellungsdaten sowie anordnung mit einer mehrzahl von kommunikationsservern und einem vermittler
DE102021113670A1 (de) Verfahren zur Datenübertragung in einem Netzwerksystem sowie Netzwerksystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20111119

R082 Change of representative

Representative=s name: HOFSTETTER, SCHURACK & PARTNER PATENT- UND REC, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

Effective date: 20130909

R081 Change of applicant/patentee

Owner name: LOGITECH EUROPE S.A., CH

Free format text: FORMER OWNER: LOGITECH EUROPE S.A., ROMANEL-SUR-MORGES, CH

Effective date: 20130610

R082 Change of representative

Representative=s name: HOFSTETTER, SCHURACK & PARTNER PATENT- UND REC, DE

Effective date: 20130610

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012700000

Ipc: H04L0045000000