イーサネットで送信する電文が自動で分割されないようにするにはどうすればよいですか?

尾﨑 友彦(Ozaki,T.) 0 評価のポイント
2024-05-28T05:59:55.3066667+00:00

Windows Server 2016(バージョン 1607)にて、使用しているイーサネットのMTUの設定は1500Byteであるにもかかわらず、イーサネット経由の通信時に150Byteの電文を送信した際に、自動で100Byte程度と50Byte程度の電文に分けれられる現象が発生する。

Windows Server
Windows Server
エンタープライズ レベルの管理、データ ストレージ、アプリケーション、通信をサポートする Microsoft サーバー オペレーティング システムのファミリ。
34 件の質問
{count} 件の投票

3 件の回答

並べ替え方法: 最も役に立つ
  1. Jing Zhou 5,135 評価のポイント Microsoft ベンダー
    2024-05-29T06:01:28.9033333+00:00

    こんにちは

     

    Q&Aフォーラムに投稿していただき、ありがとうございました。

    この問題を解決するには、次の手順に従います。

    1.CMDコマンドを使用して、2台のサーバ上のMTU設定が正しく構成されているかどうかを確認する:

    netsh interface ipv 4サブインタフェースを表示する

    2.CMDコマンドを実行する

    ping IPアドレス-f-l 1472

    このTCPフレームが分割されるかどうかを確認します。

    3.ネットワークインタフェースで受信側スケーリング(RSS)が有効になっているかどうかをチェックします。

    4.ネットワークアダプタ->プロパティ->構成->詳細->RSSを右クリックします。

     

    敬意を表して、

    Jill Zhou

     

    答えが役立つ場合は、「答えを受け入れる」をクリックして賛成票を投じてください。

     


  2. hidaka 81 評価のポイント MVP
    2024-05-30T16:02:00.6033333+00:00

    状況がわかりました。詳細に教えて頂いてありがとうございます。

    TCP を裸でコーディングしているとのことですから、この質問の様なことは、物理的にLANケーブル1本での物理 Peer to Peer 接続でも無い限り、つまり様々な中継装置が通信経路の途中で入る可能性があるTCP のプロトコルでは、データが無くなるので無く、不規則なタイミングで途切れるだけならば、主に通信経路の物理的な理由で、普通に起きます。

    この質問の様な物理パケット分割と、あるいはパケットの再構成があるという前提で使うのがTCPです。というよりもTCPは、様々な装置を介したネットワーク経路で、パケット分割と再構成、通信経路の途中変更を許すために考案されたプロトコルです。従って TCP を使うほぼ全ての人やライブラリーが、その様な仕様に則って使用しています。

    パケット分割を嫌う場合には、その様な上位プロトコルを使用するか、ご自身でその仕組みを実装するしかありません。あるいは前述の通り、LANケーブル1本で通信装置2台を、対抗で物理接続する手もありますし、その上で Ethernet 802.3 を直接コーディングすることも可能です。

    0 件のコメント コメントはありません

  3. jzkey 21 評価のポイント
    2024-06-02T14:12:13.5733333+00:00

    送信側はsend()とかで150バイトを一気に投げているわけですよね。

    自作機器側のWindowSizeが小さいとかはないでしょうか。

    0 件のコメント コメントはありません