私はタップから読んでいるプログラムに取り組んでいます。唯一の問題は、タップへの 1 つの送信の終了と別の送信の開始を検出する方法がわからないことです。
タップからの読み取りは SOCK_STREAM と同じように機能しますか?
Tun/tap は通常のイーサネット コントローラのように見えますが、tap デバイス自体は他のファイル記述子と同じようにアクセスされます。
これはイーサネット コントローラのふりをするため、送信されたイーサネット フレーム自体の大きさを事前に知っておく必要があります。これは、tap デバイスが接続されたソフトウェア ブリッジか、未加工のイーサネットの「長さ」フィールドのいずれかによるものです。フレーム。
もちろん、これはタップ デバイスの MTU サイズの最大値にすぎません。通常、デフォルトは 1500 バイトです。
したがって、tap デバイスのファイル記述子で read() を実行する前に、イーサネット フレームが実際にどれくらいの大きさかを把握する必要があります。