Frage

ist es möglich, mehrere tcp-oder udp-Pakete auf eine einzelne ip-Paket?gibt es irgendwelche Spezifikationen des Protokolls, die dies nicht zulassen.

wenn es erlaubt ist, durch das Protokoll aber in der Regel nicht getan, die von tcp - /udp-Implementierungen könnten Sie mir den entsprechenden Abschnitt in der linux-source-code, der dies beweist.

gibt es Implementierungen von tcp - /udp-os, das senden mehrerer Pakete auf eine einzelne ip-Paket.(wenn es erlaubt ist).

War es hilfreich?

Lösung

Es ist nicht möglich .

Der TCP-Header seqment beschreibt nicht seine Länge. Die Länge der TCP-Nutzlast wird aus der Länge des IP-Pakets (n) minus der Länge der IP und TCP-Headern abgeleitet. Also nur ein TCP-Segment pro IP-Paket.

Im Gegensatz dazu jedoch eine einzige TCP-Segment kann sich über mehrere IP-Pakete von IP-Fragmentierung fragmentiert werden.

Andere Tipps

Sie möchten vielleicht Tunneling TCP über TCP versuchen, obwohl es in der Regel ein schlechte Idee . Je nach Bedarf, die Leistung kann variieren.

Tcp, nicht senden Pakete:es ist ein fortlaufender stream.Sie Nachrichten senden.
Udp, wird Paket-basierend, nur senden Sie ein Paket an eine Zeit.

Das Protokoll selbst nicht erlauben.Es wird nicht brechen, es will einfach nicht passieren.

Der Vorschlag, tunneling gültig ist, aber so ist die Warnung.

Sie können einen Blick auf die Stream Control Transmission Protocol nehmen wollen, die mehrere Daten erlaubt Ströme über eine einzige TCP-Verbindung.

EDIT - ich war nicht bewusst, dass TCP nicht über ein eigenes Header-Feld ist, so gibt es keine Möglichkeit, dies zu tun, wäre eine benutzerdefinierte TCP äquivalent ohne schreiben, die diese Informationen enthält. SCTP noch von Nutzen sein kann, aber so werde ich auf diesen Link verlassen.

TCP ist eine öffentliche Spezifikation, warum nicht nur gelesen?

RFC4164 ist der Fahrplan Dokument, RFC793 ist TCP selbst und RFC1122 einige errata enthält und zeigt, wie es mit dem Rest des (IPv4) Universum passt zusammen.

Aber kurz gesagt, weil die TCP-Header (RFC793 Abschnitt 3.1) nicht ein Längenfeld haben, erstreckt sich TCP-Daten vom Ende des Kopfpolsters bis zum Ende des IP-Pakets. Es gibt nirgendwo ein anderes Datensegment in dem Paket zu setzen.

Sie können nicht mehr TCP-Pakete in ein IP-Paket packen -, dass eine Beschränkung der Spezifikation ist, wie oben erwähnt. TCP ist die nächste API, die anwendungsorientiert ist. Oder Sie möchten von Raw-IP-Nachrichten zu programmieren, zu senden? Sagen Sie uns, welches Problem wollen Sie lösen. Überlegen Sie, wie Sie die Zustellung der Nachrichten von einer Anwendung zur anderen organisieren, oder erwähnen, dass Sie in TCP / IP-Stack anschließen möchten. Was kann ich Ihnen vorschlagen:

  1. Betrachten Sie die Verpackung, was Sie in UDP-Paket mögen. Ich bin nicht sicher, wie einfach ist Routing von „ausgepackt“ TCP-Paketen auf Remote-Seite zu starten.
  2. PPTP oder ähnliches Tunneling-Protokoll verwenden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top