ハートビート機構とは、接続の正当性を確保するために、相手に自分が生きていることを知らせるためにカスタマイズしたハートビートパケットを定期的に送信する仕組みで、いわゆるハートビートパケットとは、クライアントが簡単な情報を定期的にサーバーに送信して、それがまだ残っていることを伝えます。
ハートビート メカニズムは、カスタム構造 (ハートビート パケット) を定期的に送信して、相手がまだ生きていることを知らせ、確実に効果の接続メカニズム。
概念の紹介
ネットワーク内でのデータの送受信は、オペレーティング システムの SOCKET を使用して実装されます。しかし、このソケットが切断されている場合、データの送受信時に間違いなく問題が発生します。しかし、このソケットが引き続き使用できるかどうかを判断するにはどうすればよいでしょうか?これには、システムにハートビート メカニズムを作成する必要があります。実際、TCP はすでにハートビートと呼ばれるメカニズムを実装しています。ハートビートを設定すると、TCP は一定時間 (たとえば、3 秒に設定) 内に設定した数 (たとえば、2 回) のハートビートを送信します。この情報は、定義したプロトコルには影響しません。 . .いわゆる「ハートビート」とは、相手に「オンライン」であることを知らせるために、カスタム構造(ハートビートパケットまたはハートビートフレーム)を定期的に送信することです。リンクの有効性を確認するため。
いわゆるハートビート パケットとは、クライアントが定期的に単純な情報をサーバーに送信し、私がまだそこにいることを伝えるものです。このコードでは、固定メッセージを数分ごとにサーバーに送信し、サーバーは受信後に固定メッセージで応答します。サーバーが数分以内にクライアント メッセージを受信しない場合、クライアントは切断されたとみなされます。例えば、通信ソフトを長期間使用していなかった場合、その状態がオンラインかオフラインかを知りたい場合には、ハートビートパケットが必要となり、定期的にパケットを送受信する必要があります。契約送信者: クライアントまたはサーバーのどちらか、より便利で合理的な方になります。通常はクライアントです。サーバーは定期的にハートビートをポーリングして送信することもできます。ハートビートパケットがハートビートパケットと呼ばれる理由は、クライアントがまだ生きていることをサーバーに伝えるためにハートビートのように一定の時間に送信されるためです。実はこれは接続を長く維持するためであり、このパケットの内容については特に規定はないが、一般的には非常に小さなパケット、あるいはヘッダのみの空のパケットである。
TCP メカニズムには、TCP オプションであるハートビート パケット メカニズムがあります。システムのデフォルト設定は 2 時間のハートビート頻度です。ただし、マシンの停電、ネットワーク ケーブルの抜き差し、ファイアウォールの切断などは検出できません。また、ロジック層は断線への対応がそれほど容易ではない可能性があります。基本的には、生きていくためだけに使うのであれば問題ありません。ハートビート パケットは通常、論理層で空のパケットを送信することによって実装されます。次のタイマーは、一定の時間間隔で空のパケットをクライアントに送信し、クライアントは同じ空のパケットをフィードバックします。サーバーは、クライアントが送信したフィードバック パケットを一定の時間内に受信できない場合、サーバーは判断することしかできません。オフラインだと言いました。送信または受信するだけです。結果がゼロの場合は、オフラインであることを意味します。
ただし、長時間接続すると、長時間データ交換が行われない場合があります。理論上、この接続は常に接続されていますが、実際には、中間ノードに障害があるかどうかを知るのは困難です。さらに悪いことに、一部のノード (ファイアウォール) は、一定期間内にデータのやり取りがない接続を自動的に切断します。現時点では、長い接続を維持し、存続させるためにハートビート パケットが必要です。切断を認識した後、サーバー ロジックは切断後のデータをクリーンアップして再接続するなど、いくつかの作業を実行する必要がある場合がありますが、これは必要に応じてロジック層によって当然行われます。一般に、ハートビート パケットは主にキープアライブや長時間接続の切断処理に使用されます。一般的なアプリケーションの場合、判定時間は 30 ~ 40 秒が比較的適切です。要件が非常に高い場合は、6 ~ 9 秒に設定します。
以上が心拍の仕組みとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。