12

1つのIPパケットで複数のtcpまたはudpパケットを送信することは可能ですか?これを許可しないプロトコルの仕様はありますか。

プロトコルで許可されているが、一般的にtcp / udp実装では実行されない場合は、これを証明するLinuxソースコードの関連部分を教えてください。

単一のIPパケットで複数のパケットを送信する一部のOSでのtcp/udpの実装はありますか。(許可されている場合)。

4

6 に答える 6

9

できませ

TCP seqment ヘッダーには、その長さが記述されていません。TCP ペイロードの長さは、IP パケットの長さから IP および TCP ヘッダーの長さを差し引いたものです。したがって、IP パケットごとに 1 つの TCP セグメントのみです。

ただし、逆に、IP フラグメンテーションによって、単一の TCP セグメントを複数の IP パケットにフラグメント化できます。

于 2010-02-08T10:05:50.527 に答える
3

TCP はパケットを送信しません。これは継続的なストリームです。メッセージを送信します。
Udp はパケット ベースであるため、一度に 1 つのパケットしか送信しません。

プロトコル自体が許可していません。それは壊れません、それは起こりません。

トンネリングを使用するという提案は有効ですが、警告も有効です。

于 2010-02-08T10:06:35.297 に答える
2

TCP は公開仕様です。それを読んでみませんか?

RFC4164はロードマップ ドキュメントであり、RFC793は TCP 自体であり、RFC1122にはいくつかの正誤表が含まれており、(IPv4) ユニバースの残りの部分とどのように適合するかを示しています。

要するに、TCP ヘッダー (RFC793 セクション 3.1) には長さフィールドがないため、TCP データはヘッダー パディングの末尾から IP パケットの末尾まで拡張されます。パケット内に別のデータ セグメントを配置する場所がありません。

于 2010-02-08T10:19:40.137 に答える
2

tcp over tcp をトンネリングしてみることをお勧めしますが、一般的には悪い考えと考えられています。必要に応じて、マイレージは異なる場合があります。

于 2010-02-08T10:07:30.820 に答える
2

単一の TCP 接続で複数のデータ ストリームを許可するStream Control Transmission Protocolを参照してください。

編集 - TCP には独自のヘッダー フィールドがないことを知らなかったので、この情報を含むカスタム TCP に相当するものを作成せずにこれを行う方法はありません。ただし、SCTP はまだ使用できる可能性があるため、そのリンクは残しておきます。

于 2010-02-08T10:18:42.153 に答える
1

複数の TCP パケットを 1 つの IP パケットにパックすることはできません。これは、前述の仕様上の制限です。TCP は、アプリケーション指向の最も近い API です。それとも生の IP メッセージの送信をプログラムしたいですか? どんな問題を解決したいか教えてください。あるアプリケーションから別のアプリケーションへのメッセージの配信をどのように編成するかを考えたり、TCP/IP スタックにフックしたいと述べたりします。私があなたに提案できること:

  1. 好きなものをUDPパケットに詰め込むことを検討してください。リモート側で「解凍された」TCPパッケージのルーティングを開始するのがどれほど簡単かはわかりません。
  2. PPTPまたは同様のトンネリング プロトコルの使用を検討してください。
于 2010-02-08T10:48:10.050 に答える