0

私は UDP パケットを使用しており、いくつかの点についてクリアしたいと考えています:
1 - 「recvfrom」は正確に何を返しますか? つまり、450 バイト + 20 バイトの IP ヘッダー + 8 バイトの UDP ヘッダーのサイズのパケットを送信すると、recvfrom は全体として 478 バイトを返すか、次のようなものがある可能性があります:
10 バイト、300 バイト、100 バイト、68 を受信しましたバイト?
2 - 「recvfrom」の戻り値はパケットの断片化に関連していますか?

注 :
* 「recvfrom」が成功したという前提で話しています
* 最小 MTU 未満であることを確認するために 450 バイトを選択しました

4

1 に答える 1

1
  1. UDP ソケットの場合、recvfrom() は UDP データを読み取ります。したがって、少なくとも 450 バイトの大きさのバッファーを指定すると、 450 が返されます。受信したデータよりも小さいバッファーを指定すると、データは切り捨てられ、recvfrom() は、指定したバッファーに収まる限り多くのデータを読み取ります。

  2. IP レイヤーは、UDP パケットをフラグメント化する部分であり、受信側ホストでそれを再構成します。これは、送信/受信アプリケーションに対して透過的です。

于 2014-01-01T15:24:56.333 に答える