[コンピュータネットワーク]記事ソケットの概要

ディレクトリ

A、ソケットの紹介

二、ソケット通信の流れ

三、ソケットおよびHTTP

3.1ソケットとHTTPの違い

3.2ソケットとHTTPアプリケーションシナリオいます


A、S OCKETのプロフィール

ポート(ポート)は、トランスポート層の概念の誕生を伴っています。これは、IP通信ネットワーク層は、各通信チャネルに分配されてもよいです。UDPプロトコルとTCPプロトコルの仕事で非常に異なるが、彼らは別のポートへの1つのポートからの通信を確立しています。

我々はトランスポート層に入るように、我々は構築するために、オペレーティングシステムのAPIを呼び出すことができますソケット(ソケット)

 

ソケットは、ネットワーク通信を表すために使用され、オペレーティングシステムへのプログラミング・インターフェースです。コールモジュールへの応用には、ソケットが、ネットワークプロトコル処理システムのカーネルを有効にし、これらのカーネルモジュールは、特定のネットワーク・プロトコルの実装を担当します。このように、我々はネットワークプロトコルの詳細を受信するカーネルをさせることができ、そして我々はそれだけで送信されるコンテンツを提供する必要があり、カーネルは、私たちは一番下のパッケージにフォーマットを制御し、さらに役立ちます。

 

ソケットは、ソケットへの情報のプログラム片、二つのプログラムで通信接続のエンドポイントとして見ることができる、ソケットは、この情報が他のプログラムに伝えることができるように、別のソケットにこの情報を送信します。サーバーとクライアントは、ソケットを介して相互作用など。マシンのポート番号にバインドするサーバーのニーズが、クライアントはそのサーバとクライアントを接続することができ、どのポートに接続されている独自のアドレスを宣言する必要があります。

 

:ソケットを生成し、三つの主要なパラメータがあり、通信の目的のIP アドレストランスポート層プロトコルを使用して(TCP またはUDP)使用するポート番号ソケットに意図される「ソケット。」ソケット結合「ソケット」を用いて、これら3つのパラメータを組み合わせることにより、アプリケーション層およびトランスポート層は、データ送信が同時サービスで、通信処理又はネットワーク接続を区別するため、異なるアプリケーションから、ソケット・インタフェースとすることができます。

 

ソケットを作成するため、実際には、我々はUDPパケットを形成する方法の詳細を知っている必要はありませんが、唯一の(など、送信されるIPアドレス、ポート番号、情報)情報を提供する必要があり、その後、ソケットは、オペレーティングシステムのカーネルを助けます我々が提供する情報に基づいて、送信前に修飾されたUDPパケット(パケットやフレームならびに下層)を構成します。

 

二、ソケット通信フロー

ソケットへの情報の一片にホストA上のプログラムは、コンテンツがソケットホストAのネットワーク管理ソフトウェアにアクセスし、この情報をホストAのネットワークインタフェースカードを介してホストBに送信される、ネットワーク・インターフェース・カードホストBは、受信しますホストBのネットワーク管理ソフトウェア、ネットワーク管理ソフトウェアに送信し、この情報には、この情報には、ソケットのホストBが保存され、その後、プログラムBは、ソケットにこの情報を読み取ることができます。

インターネット、少なくとも介して通信するようにソケットの一対ソケット実行中呼び出されるクライアント側、ClientSocket、別のソケットが実行中呼び出され、サーバのServerSocket。     

:接続の開始方法や対象地域のソケットが接続されるように、ソケット間の接続プロセスは3つの段階に分けることができ、サーバのリスニングクライアント要求接続確認。     

  • :サーバーの監視サーバー側のソケットが特定のクライアントソケットを見つけていないが、接続待ちの状態で、リアルタイムでネットワークの状態を監視します。
  • クライアントの要求は:目標は、サーバーソケットに接続することで、クライアントソケットによって行われた接続要求を指します。このため、クライアントソケットは、サーバー側のソケットのアドレスとポート番号を指摘し、それに接続するためのサーバソケットを記述する必要があり、その後のサーバソケットへの接続要求を行いました。
  • 接続確認:サーバソケットはlistenまたはクライアントソケットからの接続要求を受信したときに、それは新しいスレッドを作成するために、クライアントソケットの要求に応答することを意味し、サーバソケットこの説明を確認するために、クライアントと、クライアントに説明し、良好な接続が確立されています。そしてサーバーソケットがリスニング状態に続く、ソケットに接続された他のクライアントからの要求を受信し続けています。

ソケット通信ステップ:

  1. アドレスタイプ(IPv4のは、ipv6)、ソケットタイプ、プロトコルタイプ(UDP / TCP)を作成するためのソケットサーバ
  2. サーバソケットのIPアドレスとポート番号を結合
  3. 受信クライアント接続に送信する準備ができて、ポート番号の要求を、リスニングサーバーソケットは、この時間は、ソケットサーバーがオープンされていません
  4. クライアントは、ソケットを作成し、
  5. サーバソケットに接続するアドレスとポート番号connexct()メソッドの試みを使用してサーバに応じて、IPのオープンクライアントソケット、
  6. ソケットサーバーは、クライアント要求のソケット、クライアントのリターン接続情報まで、クライアント要求の受信を開始するパッシブオープンを受け取ります。接続情報が返された後、この時間遮断状態にサーバーソケットは、すなわち、いわゆるブロッキング受け入れる()メソッドは、クライアントが開始が次の接続要求を受信し、クライアントに戻されました
  7. クライアント接続は、サーバーの接続状態に情報を送信する、成功しています
  8. サーバー受け入れる()メソッドは、成功した接続を返します
  9. クライアントのsend()メソッドは、ソケットに情報を書き込み、
  10. 情報を読み取るためのサーバーのrecv()メソッド
  11. クライアントが閉じ
  12. サーバー側は閉じられて

私たちは、ソケットはTCP / IPプロトコルのカプセル化とアプリケーション上で、上記のプロセスから見ることができます。TCP / IPプロトコルでは、TCP 3ウェイハンドシェイクプロトコルは、信頼性の高い接続を確立します。

  1. 最初のハンドシェイク:サーバに接続するクライアントを試み、サーバは、パケットSYN(SEQ ID NO同期シーケンス番号を同期化)、SYN = J、SYN_SEND肯定応答を入力するサーバーに対するクライアント待ちを送信します。
  2. 第ハンドシェーク:クライアントが(SYN = K)SYNパケットを送信し、すなわち、SYN + ACKパケットを、サーバが状態SYN_RECVに入っている間、クライアント・サーバは、SYNパケットと確認応答(ACK = J + 1)を受信します。
  3. 第三のハンドシェーク:クライアントがサーバにSYN + ACKパケットを受信すると、サーバがESTABLISHED状態に確認パケットACK(ACK = K + 1)、このパケットが送信され、クライアントとサーバーを送信し、スリーウェイハンドシェイクを完了する。

ソケットサーバーとクライアントのソケット接続は、実際の一部に確立された「スリーウェイハンドシェイクを。」

 

三、ソケットおよびHTTP

3.1 ソケットHTTPの違い

ソケット接続:

ソケットは、プロトコルの範囲に属していないが、コール・インターフェース(API)は、あるTCP / IPプロトコルカプセル化。サーバとクライアント、およびデータ伝送の間の物理的な接続を行います。ソケットネットワークプロトコルトランスポート層は、TCP / UDPプロトコルの2つ(もちろん、TCP / IPプロトコルスイートの他のプロトコルがある)があります。

ソケット接続は、長い接続、サーバー側またはクライアントホストがダウンしている、ネットワーク:のような、しかし、様々な環境要因による断線を引き起こす可能性があり、接続が確立されると、クライアントとサーバーが切断するためのイニシアチブを取ることはありません、理論的には、データ送信失敗、またはその両方の間に長い時間は、ネットワークファイアウォールは、ネットワークリソースを解放するために、接続を切断することがあります。だから、ときソケット接続は、ハートビートメッセージを送信するために、接続を維持する必要性がデータを送信していません。

データ伝送は、クライアント/サーバ間のリアルタイム対話のためのバイトレベルとして、少量のデータを暗号化することができるカスタムソケット、データセキュリティ、情報であってもよいです。

 

HTTP接続:

HTTPはTCP / IPプロトコルに基づいてあるアプリケーション層プロトコルコンテンツデータ伝送の仕様で定義されています。

HTTPは、要求に基づいている-応答の形である短いコネクタ、すなわち、クライアントがサーバに要求を送信し、サーバーが壊れているの接続に応答します。

HTTPはステートレスなプロトコルである、ない状態特性そのためには、彼らは国家の形を持っている必要があり実用的なアプリケーションでは、セッション/クッキー技術によってこの問題を解決する傾向があります。

HTTP遅い伝送速度、大きなデータパケットは、データ伝送のセキュリティは、このようなリアルタイムの相互作用、サーバーのパフォーマンス圧力として、不良です。

 

3.2 ソケットHTTP アプリケーションシナリオいます

一般的な通信、リアルタイムのためのインスタントソケットを比較してプッシュ、チャット、長いハートビート接続を維持するよう、高いようなものです。

HTTP一般的にリアルタイム要件のために使用されるこのような情報のフィードバック、アップロード画像、アクセスニュース情報など、それほど高くはありません。

 

接続したら、いくつかのケースでソケットを使用せずに、HTTPを使用する理由は、ソケットである、それは常に接続されて、それがこの相対的なだけでなく、非ブロックIOで、IOを遮断する原因となります。

  • ブロッキングIOは、クライアントの要求にクライアントにサーバ側、サーバー側の処理が完了すると、戻り値を参照します。この場合、クライアントはブロックされた状態でした。ときに、クライアントは、あまりにも、同時要求は、サーバー側の処理は、しかし、サーバーは、ユーザーエクスペリエンスに影響を与え、待ってそこを立ち往生されていたであろう。したがって、IO非ブロッキング提案しました。
  • ノンブロッキングIOのクライアントがサーバに要求した直後に戻すための手段を、サーバーが要求をいくつかのリスナーに責任を受け入れるされ、クライアント要求は、クライアントが広く受け入れられてい伝えること送ら受けて、返されるデータの完了後、他の治療サービス中のデータを処理し、クライアント側では、クライアントは、障害物を待つ必要はありません。

ブロッキングとのコール(メッセージ、戻り値)の結果を待っている間に、非ブロッキングの懸念は、プログラムの状態です。

呼をブロッキング呼び出しが戻る前に結果を参照し、現在のスレッドは中断されます。唯一の呼び出し元のスレッドが結果後まで戻りません。

非ブロッキング・コールがすぐに結果を得ることはありませいう前に、コールは、現在のスレッドをブロックしません。


 参考:https://www.linuxidc.com/Linux/2018-09/154366.htm
                   https://blog.csdn.net/weixin_36691991/article/details/104963784?fps=1&locationNum=2

公開された54元の記事 ウォン称賛47 ビュー10000 +

おすすめ

転載: blog.csdn.net/cy973071263/article/details/105128839