Androidネットワークプログラミング(1)ネットワークの階層化とプロトコルの紹介

1概要

OSI / RM

1978年に、国際標準化機構(ISO)は、有名なOSI / RMモデル(オープンシステム相互接続/参照モデル)である「オープンシステム相互接続参照モデル」を提案しました。それ以来、さまざまなメーカーのコンピューターが相互に通信し、コンピューターネットワークを確立できます。OSI / RMは、コンピューターネットワークアーキテクチャの通信プロトコルを、物理層、データリンク層、ネットワーク層、伝送層、セッション層、プレゼンテーション層、アプリケーション層の7つの層に下から上に分割します。

TCP / IP

OSI / RMモデルは複雑すぎて実装が難しいため、TCP / IPモデルは実際に広く使用されています。これは、1977年から1979年までARPAによって導入されたネットワークアーキテクチャおよびプロトコル仕様です。TCP / IPはプロトコルのセットであり、TCPとIPを指すものではありません。多くの場合、これはIPと通信するときに使用する必要があるプロトコルグループの一般用語です。具体的には、IPまたはICMP、TCPまたはUDP、TELNETまたはFTP、HTTPはすべてTCP / IPプロトコルです。TCPまたはIPとの密接な関係は、インターネットの重要な部分です。TCP / IPという用語は一般にこれらのプロトコルを指すため、TCP / IPはインターネットプロトコルグループと呼ばれることもあります。インターネット上で通信する場合、対応するネットワークプロトコルが必要ですTCP / IPは、もともとインターネットを使用するために開発されたプロトコルファミリでした。したがって、インターネットプロトコルはTCP / IPであり、TCP / IPはインターネットプロトコルです。

TCP / IPモデルも、4つの層に分割された階層化モデルです。OSI / RMモデルとTCP / IPモデルの参照階層を図に示します。

アプリケーション層:これは、ネットワークを介して他のプログラムと通信するために、最も一般的なネットワーク関連プログラムによって使用されるです。アプリケーション層では、データはアプリケーションによって内部的に使用される形式で送信され、標準のプロトコル形式にエンコードされます。電子メールを受信するためのHTTPプロトコル、FTPプロトコル、POP3およびIMAPプロトコル、メールを送信するためのSMTPプロトコル、リモートログインのためのSSHおよびTelnetなど。したがって、ユーザーは通常、アプリケーション層と対話します。

トランスポート層:2つのホスト間で透過的なデータ伝送を提供します。通常、エンドツーエンド接続、フロー制御、またはエラー回復に使用されます。この層で最も重要な2つのプロトコルは、TCP(伝送制御プロトコル)とUDP(ユーザーデータグラムプロトコル)です。

ネットワーク層:エンドツーエンドのパケット配信を提供します。送信元から宛先へのパケット送信を担当します。タスクには、ネットワークルーティング、エラー制御、IPアドレス指定などがあります。この層に含まれる重要なプロトコルは、IP(バージョン4およびバージョン6)、ICMP(インターネット制御メッセージプロトコル、インターネット制御メッセージプロトコル)およびIPSec(インターネットプロトコルセキュリティ、インターネットプロトコルセキュリティ)です。

ネットワークインターフェイスレイヤーネットワークを介したIPデータグラムの送受信を担当し、ホストがイーサネット、トークンネットワーク、フレームリレー、ATM、X.25、DDNなどの既製の一般的なテクノロジーを使用できるようにします。 SDH、WDMなど

 

アプリケーション層のアプリケーションは、通常2つの使用輸送層:1つのプロトコル接続指向TCP 伝送制御プロトコルコネクションレスのUDP ユーザーデータグラムプロトコルを以下では、TCP / IPプロトコルスタックで一般的に使用されるHTTP、TCP、UDP、およびIPプロトコルを簡単に紹介します。

2 HTTPプロトコル

HTTP(HyperText Transport Protocol)プロトコルは、インターネットで最も広く使用されているネットワークプロトコル標準です。分散ハイパーメディア情報システムに適したアプリケーション層プロトコルです。1990年に導入され、現在では広く使用されており、継続的に改善および拡張されています。HTTPは、World Wide WebConsortiumとInternet Engineering Task Forceの間の協力の結果であり、その歴史は次のとおりです。

HTTP 0.9:1991年にリリースされた最初のバージョン。GETコマンドは1つだけで、サーバーはHTML形式の文字列にのみ応答できます。

HTTP 1.0:1996年にリリースされたバージョンで、コンテンツの量が大幅に増加しています。GETコマンドに加えて、POSTコマンドとHEADコマンドも導入されています。HTTP要求および応答形式のデータ部分に加えて、各通信には、メタデータを説明するためのヘッダー情報を含める必要があります。

HTTP 1.1:1997年にリリースされたバージョンで、HTTPプロトコルがさらに改良されたもので、現在でも最も人気のあるバージョンです。HTTP1.1は、長い接続(永続的な接続)の使用を規定しているため、同じTCP接続で複数の要求を送信できます。接続を再作成するための各要求をHTTP1.0で補うことで、パフォーマンスの消費と遅延が発生し、パイプラインも提案されます。 (パイプライン処理)対応する応答を待たずに単一のTCP接続で複数の要求を送信するという欠点を最適化しますが、サーバーは受信した要求の順序で応答を送信します。

SPDY:HTTP 1.1の効率が低いという問題を解決するために2009年にGoogleが開発したプロトコル。

HTTP 2:2015年に新しくリリースされたバージョン。SPDYプロトコルの主な機能もこのバージョンにあり、GoogleはSPDYのサポートを削除し、HTTP / 2を採用し、Chrome 51で有効になる計画も発表しました。HTTP 2.0 は、マルチプレキシング(Multiplexing)を提案して、接続で複数の要求を同時に実現し、HTTP1.1のような複数の応答がブロックされるという問題を回避します。

3 HTTPSプロトコル

HTTPS は、HTTP SSL(Secure Sockets Layer)暗号化レイヤーを確立し、送信データを暗号化するもので、HTTP プロトコルの安全なバージョンです。HTTPSリクエストは安全であるため、リクエストプロセス中に最初の盗聴、改ざん、またはなりすましはありません。

一般的なSSLの使用シナリオでは、証明書を使用して、公開鍵と一致する秘密鍵でサーバーを構成します。クライアントに、信頼する1つ以上の証明書セットも持たせる。要求されたURLアドレスが証明書がこのセットにないことを検出した場合、サーバーは信頼されず、要求は失敗します。

サーバーは通常、有名な発行者(認証局(CA)と呼ばれる)によって発行された証明書で構成されます。ホストプラットフォームには通常、信頼する有名なCAのリストが含まれています。Android 4.2(Jelly Bean)以降、Androidには現在、各バージョンで更新された100を超えるCAが含まれています。CAには、サーバーと同様の証明書と秘密鍵があります。サーバーの証明書を発行するとき、CAはその秘密鍵を使用してサーバー証明書に署名します。その後、クライアントは、サーバーがプラットフォームに既知のCAによって発行された証明書を持っていることを確認できます。
HTTPS HTTP の違いは、HTTPS は暗号化された伝送プロトコル、HTTP は名前とテキストの伝送プロトコルです。HTTPS SSL 証明書を必要としますが、HTTPは使用されません。HTTPS 標準ポート443 HTTP 標準ポート80 などです。

SSL / TLS

実際、SSLはTLSです。ここに履歴があります。

1994年、NetScapeはSSLプロトコルのバージョン1.0を設計しましたが、リリースされませんでした。

1995年、NetScapeはSSLバージョン2.0をリリースし、すぐに深刻な脆弱性があることを発見しました。

1996年にSSLバージョン3.0がリリースされ、広く使用されました。

1999年、インターネット標準化機構ISOCはNetScapeを継承し、SSLのアップグレードバージョンTLS(Transport Layer Security)1.0をリリースしました。

2006年と2008年に、TLSは2回アップグレードされました。つまり、TLSバージョン1.1とTLSバージョン1.2です。最新の変更は、TLS 1.2の2011年のリビジョンです。

現在、最も広く使用されているのはTLS 1.0で、次にSSL 3.0が続きます。ただし、主流のブラウザーはすでにTLS 1.2サポートを実装しています。TLS 1.0は通常SSL 3.1、TLS 1.1はSSL 3.2、TLS 1.2はSSL 3.3とラベル付けされています。

4 TCPプロトコル

伝送制御プロトコル(TCP)は、バイトストリームに基づく、接続指向で信頼性の高いトランスポート層通信プロトコルです。ストリームとは、中断のないデータ構造を指します。アプリケーションがTCPを使用してメッセージを送信する場合、送信の順序は保証されますが、データストリームの間隔が受信側に送信されないように見えます。信頼性の高い伝送を提供するために、TCPはパケットが失われたときに再送制御を実行でき、順序が狂ったパケットの順次制御メカニズムも実装できます。また、TCPはコネクション型のプロトコルであるため、通信相手を確認した場合にのみデータが送信されるため、「フロー制御」「輻輳制御」などの機能が多く、ネットワークの利用効率が向上します。有名なスリーウェイハンドシェイクは、クライアントとサーバーが接続の確立を確認するために合計3つのパケットを送信する必要があるTCP接続の確立を指しますが、TCP接続の終了は4つのウェーブであり、クライアントとサーバーが確認するために合計4つのパケットを送信する必要があります切断。

5 UDPプロトコル

ユーザーデータグラムプロトコル(ユーザデータグラムプロトコル、UDP)は、TCP / IPモデル指向のコネクションレスのトランスポート層プロトコルは、単に信頼性のないトランザクション指向のメッセージングサービスを提供しています。UDPプロトコルは、基本的にIPプロトコルと上位層プロトコル間のインターフェースです。UDPプロトコルは、ポートが同じデバイスで実行されている複数のアプリケーションに適しています。TCPとは異なり、UDPはIPプロトコル、フロー制御、およびエラー回復機能のための信頼できるメカニズムを提供せず、データ送信前に接続を確立する必要はありません。UDPは比較的単純であるため、UDPヘッダーに含まれるバイト数は非常に少ないため、TCP負荷よりも消費が少なくなります。UDPは、高レベルのプロトコルまたはアプリケーションがエラーおよびフロー制御機能を提供する場合など、信頼できるTCPメカニズムを必要としない状況に適しています。UDPは、ネットワークファイルシステム(NFS)、シンプルネットワーク管理プロトコル(SNMP)、ドメインネームシステム(DNS)、シンプルファイル転送システム(トリビアルファイル)など、多くの有名なアプリケーションレイヤープロトコルに対応しています。転送プロトコル、TFTP)。

6 IPプロトコル

インターネットプロトコル(IP)は、メッセージ交換ネットワークで使用されるデータ指向プロトコルです。IPは、TCP / IPプロトコルのネットワーク層の主要なプロトコルであり、タスクは、送信元ホストと宛先ホストのアドレスに従ってデータを転送することです。これを実現するために、IPはアドレス指定方法とデータグラムのカプセル化構造を定義します。現在IPv4として知られている最初のアーキテクチャのメインバージョンは、依然として最も重要なインターネットプロトコルです。IPv6は現在世界中で積極的に展開されています。

 

元の記事を106件公開 37 件を賞賛 80,000回

おすすめ

転載: blog.csdn.net/lyz_zyx/article/details/96326534