TCP を使用して、固定の非標準 MTU (たとえば、1560) でサブネット経由でデータを送信する必要があります。フレームの長さが MTU 未満の場合、このサブネットを介して転送されるすべてのイーサネット フレームは、手動で 0 でパディングする必要があります。
したがって、データ サイズは (1560 - sizeof(IP ヘッダー) - sizeof(TCP ヘッダー)) である必要があります。
これは私がやろうとしている方法です:
TCP_CORK オプションを設定して、データの断片化を減らしました。200 ミリ秒の上限があるため、信頼性は高くありませんが、機能します。
IP ヘッダーのサイズ (20 バイト) はわかっているので、データ長は (1540 - sizeof( TCP ヘッダー )) に等しくなるはずです。
それが問題です。TCP ヘッダーのサイズがわかりません。「オプション」フィールドのサイズは変動します。
問題は、TCP ヘッダーのサイズを取得する方法です。それとも、固定長のヘッダーを持つ TCP フレームを送信する方法があるのでしょうか?