2017-03-25 7 views
-2

クライアントからサーバーにファイルを送信します。ファイルを1000バイトのようなパケットサイズに分割して送信し、それを1つずつ送信したいと思います。今、サーバーがパケットを受信した後、パケットが破損する可能性があります。だから、私はヘッダーを使用し、パケットと一緒にパケットのチェックサムを送信し、それがサーバーがそれを受け取った後に一致するかどうかを確認する必要がありますか?またはUDPにチェックサムを自動的にチェックするデフォルト機能がありますか?UDP接続は送信後にパケットのチェックサムを処理しますか?

+0

https://en.wikipedia.org/wiki/User_Datagram_Protocol#Checksum_computation – Barmar

+0

UDPチェックサムはIPv4ではオプションですが、IPv6では_required_です。 –

答えて

0

はい、UDPにはパケットを自動的にチェックするチェックサムがあります。 Wikipediaでアルゴリズムについて読むことができます。

多くのオペレーティングシステムには、チェックサムの計算が行われるかどうかを制御するオプションがあります。これは、パフォーマンス上の理由から、1990年代までは無効になっていました。私は最近、ほとんどがこれを有効にしていると思います。それは多くのNICによって自動的に行われる可能性が高いです。

0

UDPには16ビットのチェックサムがあり、不一致があると、オペレーティングシステムによってパケットが破棄される可能性があります。ただし、チェックサムをバイパスするには、このチェックサムを0に設定し、独自に実装することができます。

しかし、UDPを最初に使用している場合は、のパケットが欠落または消失すると予想されます。これはファイルを送信するときにうまくいきませんので、TCPを使用することをお勧めします。

+0

ありがとうございます。私はUDPを使って、ACKによって手動でTCPのような接続をしようとしていました。したがって、OSがパケットをドロップすると、サーバはそれを再び送信する必要があります。私はパケット損失を望まないと仮定します。 – Manohar

+0

いいえ、小さなサイズのオブジェクトをプッシュすると、不足しているパーツを要求したサーバークライアントからすばやく送信します。スピードアップと非ブロック通信(ストリームなど)のためのUDPの選択、なぜ '静的ファイル'(www_style)としてプッシュしないのですか? @Manohar – dsgdfg

関連する問題