OSIは、Open System Interconnectionの略で、オープンシステム相互接続を意味します。
OSIの7層プロトコルモデルは、主に、アプリケーション層(アプリケーション)、プレゼンテーション層(プレゼンテーション)、セッション層(セッション)、トランスポート層(トランスポート)、ネットワーク層(ネットワーク)、データリンク層(データリンク)、物理層(物理的)。
1、 物理層
主に、ネットワークケーブルのインターフェイスタイプ、光ファイバのインターフェイスタイプ、さまざまな伝送メディアの伝送速度などの物理的な機器規格を定義します。その主な機能は、ビットストリーム(つまり、1、0から現在の送信強度まで)を送信することです。,目的地に到着すると、1、0に変換されます。これは、デジタルからアナログへの変換およびアナログからデジタルへの変換と呼ばれることがよくあります。この層のデータはビットと呼ばれます。
2、 データリンクレイヤー
送信用にデータをフォーマットする方法と、物理メディアへのアクセスを制御する方法を定義します。このレイヤーは通常、信頼性の高いデータ送信を保証するためのエラー検出と修正も提供します。
3、 ネットワーク層
地理的に異なる場所にあるネットワーク内の2つのホストシステム間の接続とパスの選択を提供します。インターネットの発達により、世界中のさまざまなサイトから情報にアクセスするユーザーの数が大幅に増加しており、ネットワーク層はこの接続を管理する層です。
4、 トランスポート層
データ送信用のいくつかのプロトコルとポート番号(WWWポート80など)が定義されています。
TCP(伝送制御プロトコル-伝送制御プロトコル、低い伝送効率、高い信頼性、高い信頼性要件と大量のデータを含むデータの伝送に使用されます)
UDP(ユーザーデータグラムプロトコル-TCP特性とは異なり、QQチャットデータなどの信頼性要件が低くデータ量が少ないデータを送信するために使用されるユーザーデータグラムプロトコルは、この方法で送信されます)。これは主に、下位層から受信したデータをセグメント化して送信し、宛先アドレスに到達した後に再編成することです。このデータ層は、しばしばセグメントと呼ばれます。
5、 セッションレイヤー
データ伝送パスは、トランスポート層(ポート番号:伝送ポートと受信ポート)を介して確立されます。主にセッションを開始するか、システム間のセッション要求を受け入れます(デバイスは、IP、MAC、またはホスト名である可能性がある、相互に認識している必要があります)
6、 プレゼンテーションレイヤー
あるシステムのアプリケーション層から送信された情報を、別のシステムのアプリケーション層で確実に読み取ることができます。たとえば、PCプログラムは別のコンピューターと通信し、その1つはExtended Two Decimal Interchange Code(EBCDIC)を使用し、もう1つはAmerican Standard Code for Information Interchange(ASCII)を使用して同じ文字を表します。必要に応じて、プレゼンテーションレイヤーは共通の形式を使用して複数のデータ形式間で変換します。
7、 アプリケーション層
これは、ユーザーに最も近いOSIレイヤーです。このレイヤーは、電子メール、ファイル転送、端末エミュレーションなどのユーザーアプリケーションにネットワークサービスを提供します。
\1. C / Sアーキテクチャとその背景
C / Sアーキテクチャは初期のソフトウェアアーキテクチャであり、主にローカルエリアネットワークで使用されます。これに先立ち、私は集中コンピューティングモデルを経験しました。コンピュータネットワークの進歩と開発、特に視覚化ツールのアプリケーションにより、2層C / Sおよび3層C / Sアーキテクチャがありましたが、私たちは常に非常に人気があり、古典的でした。調査する2層C / Sアーキテクチャ。
C / Sアーキテクチャソフトウェア(つまり、クライアント/サーバーモデル)は、クライアントとサーバーの2つのレイヤーに分かれています。最初のレイヤーはクライアントシステム上のプレゼンテーションとビジネスロジックを組み合わせ、2番目のレイヤーはネットワークを介してデータベースサーバーを組み合わせます。簡単に言えば、最初のレイヤーはユーザープレゼンテーションレイヤーであり、2番目のレイヤーはデータベースレイヤーです。クライアントとサーバーは直接接続されており、これら2つのコンポーネントはどちらも重要な役割を果たします。
2. C/Sアーキテクチャの利点
a.クライアントとサーバーは直接接続されています。ポイントツーポイント接続がより安全になり、ローカルテキストを直接操作できるため、より便利です。
b.クライアントはいくつかの論理トランザクションを処理できます。データ処理とデータストレージを実行でき、特定のヘルプを提供できます。
c.クライアントはインターフェースを直接操作します。
3. C/Sアーキテクチャのデメリット
a> C/Sアーキテクチャは、ローカルエリアネットワークに適しており、比較的高いネットワーク速度を必要とします。
b>クライアントインターフェイスには汎用性がなく、ビジネスが変わると、インターフェイスを変更して書き直す必要があります。
c>ユーザー数が増えると、通信が混雑し、サーバーの応答が遅くなります。
d>システムのメンテナンスも面倒です。
4. C/Sアーキテクチャの適用
C/オフィスオフィス、WPS、WINRARからKingsoft、Ruijinなどのアンチウイルスソフトウェア、プレーヤー、QQ、WeChatなどのエンターテインメントソフトウェアまで、無数のSアーキテクチャソフトウェアがあります。Cはいたるところにあります。/Sアーキテクチャ。
[

コードをコピーする
]( javascript:void(0);)
\1. B / S構造とその背景
インターネットとWWWの人気により、以前のホスト/端末とC / Sは、現在のグローバルネットワークのオープン性、相互接続、あらゆる場所の情報、および新しい要件を共有する情報を満たすことができないため、B / Sモデルが登場しました。ブラウザ/サーバーの構造。これは、3層C / Sアーキテクチャに属すると言えるC / Sアーキテクチャの改良版です。主に成熟したWWWブラウザ技術を使用し、汎用ブラウザを使用して、本来は複雑な特殊ソフトウェアが必要だった強力な機能を実現し、開発コストを節約する、新しいソフトウェアシステム構築技術です。

img
最初の層は、ブラウザー(つまり、クライアント)には単純な入力および出力機能しかなく、トランザクションロジックのごく一部を処理することです。クライアントをインストールする必要がないため、ブラウザさえあればインターネットを閲覧でき、幅広いユーザーを対象としており、インターフェースのデザインは比較的シンプルで普遍的です。
2番目の層はWEBサーバーであり、情報送信の役割を果たします。ユーザーがデータベースにアクセスしたい場合は、最初にWEBサーバーにリクエストを送信します。統合リクエストの後、WEBサーバーはデータベースサーバーにリクエストを送信してデータベースにアクセスします。このリクエストはSQLステートメントで実装されます。
3番目の層は、大量のデータを格納するデータベースサーバーです。データベースサーバーは、WEBサーバーからの要求を受信すると、SQLステートメントを処理し、返された結果をWEBサーバーに送信します。次に、WEBサーバーは受信したデータ結果をHTMLテキストに変換し、ブラウザーに送信します。
[

コードをコピーする
]( javascript:void(0);)
2. B/Sアーキテクチャの利点
a>ブラウザとデータベースサーバーは、多対多の方法で接続されています。したがって、広域ネットワーク、さらには強力な情報共有を備えたグローバルネットワークで巨大なインターネットを実現するのに適しています。
b>ブラウザはいくつかの単純な論理トランザクションのみを処理し、負担は小さいです。
c>データはデータベースサーバーに一元的に保存されるため、データの不整合はありません。
d>サーバーの負荷が増加すると、サーバーの数をスムーズに増やしてクラスターサーバーシステムを確立し、サーバー間の負荷を分散できます。
e> B/Sは広域ネットワーク上に構築されているため、必要なネットワーク速度は高くありません。
f>クライアントをインストールする必要はありません。インターネットに接続できれば、いつでもどこでもページを閲覧できます。
g>データプラットフォームを効果的に保護し、アクセス権を管理し、サーバーデータベースのデータセキュリティを確保できます。
3. B/Sアーキテクチャのデメリット
a>サーバーは重要な責任を負い、データの負荷は重いです。サーバーの「クラッシュ」やその他の問題が発生すると、その結果は悲惨なものになります。
b>ページは常に動的に更新する必要があります。ユーザー数が増えると、ネットワーク速度が低下します。
4. B/Sアーキテクチャの適用
たとえば、WEBQQは、WEBQQという名前のWEBから、Bに属していることを確認するのは難しくありません。/Sアーキテクチャはブラウザサーバー構造です。実際、WEBQQはクライアントをインストールする必要がまったくないため、チャットの対話に使用できるのはブラウザーのみであるため、同じことが当てはまります。
[

コードをコピーする
]( javascript:void(0);)
初期状態:クライアントAとサーバーBの両方がCLOSED状態になり、サーバーBがソケットを作成し、リスニングインターフェイスを呼び出してサーバーをLISTEN状態にし、クライアントが接続するのを待ちます。 (以下の内容はA、Bに置き換えてください)
1、 最初にBへの接続を開始します。このとき、TCPヘッダーのSYNフラグの値は1で、最初のシーケンス番号seq = x(通常はランダム)が選択されます。メッセージが送信された後、AはSYN = 1でSYN_SENT状態になります。メッセージセグメントはデータを伝送できませんが、シーケンス番号を消費します。
2、 Aの接続要求を受信した後、Bは接続の確立に同意し、確認データをAに送信します。この時点で、TCPヘッダーのSYNフラグとACKフラグは両方とも1であり、確認シーケンス番号はack = x + 1であり、独自のフラグを選択します。初期シーケンス番号seq = y(通常はランダム)確認メッセージが送信された後、BはSYN_RCVD状態になります。接続メッセージと同様に、このメッセージはデータを伝送できず、シーケンス番号を消費します。
3、 AはBから確認メッセージを受信した後、確認データをBに返信する必要があります。このとき、TCPヘッダーのACKフラグの値は1で、確認シーケンス番号はack = y + 1であり、接続要求のシーケンス番号に独自のシーケンス番号が追加されます。 、つまり、seq = x + 1の場合、この時点でAはESTABLISHED状態になり、BがAから確認応答を受信すると、BもESTABLISHED状態になります。これまでのところ、TCPは接続を正常に確立しており、AとBはこの接続を介して相互に送信できます。データ。
初期状態:クライアントAとサーバーBの間にTCP接続が確立され、データ送信が完了し、接続が切断されます。この時点で、クライアントAとサーバーBは同等であり、両方の当事者が切断要求を送信できます。クライアントAがアクティブに切断要求を開始している例を見てください。 (以下の内容はA、Bに置き換えてください)
1、 最初に切断メッセージをBに送信します。このとき、TCPヘッダーのFIN識別ビットの値は1、シーケンス番号はseq = m、mはメッセージ送信後のAプラス1の前に送信された通常データの最後のバイトのシーケンス番号です。 AはFNI_WAIT_1状態になります。FIN= 1のセグメントはデータを伝送できませんが、シーケンス番号を消費します。
2、 BはAの切断要求を受信し、確認メッセージを送信する必要があります。この時点で、TCPヘッダーのACKフラグは1、確認番号はack = m + 1、自身のシーケンス番号はseq = n、nはBの前です。通常送信されるデータの最後のバイトのシーケンス番号が1増加すると、BはCLOSE_WAIT状態になります。このとき、AとBの間の接続は閉じられます。AはBにデータを送信できなくなりますが、BはAにデータを送信できます(質問はここにあります) )同時に、B側は上位のアプリケーション層に通知し、処理が完了した後、受動的に接続を閉じます。次に、AはBの確認メッセージを受信した後、FIN_WAIT_2状態に入ります。
3、 B側のアプリケーション層は、データの処理が終了すると、接続を閉じるように通知し、Bは接続を閉じるようにメッセージを送信します。このとき、TCPヘッダーのFINフラグとACKフラグは両方とも1であり、確認番号ack = m + 1、それ自体のシリアル番号です。 seq = kの場合(Bは確認メッセージの送信後にデータを送信します。これは疑いです)、Bはメッセージの送信後にLACK_ACK状態になります。
4、 AはBの切断メッセージを受信した後、確認メッセージを送信する必要があります。これは、TCPヘッダーのACKフラグ値が1、確認番号ack = k + 1、およびシーケンス番号m + 1の場合です(Aが切断されたメッセージを送信するときにBがメッセージ番号を消費した後、AはTIME_WAIT状態になります。待機時間が2MSLを過ぎてもBからの再送信要求が受信されない場合は、Bが自身の確認を受信したことを示し、AはCLOSED状態になります。 、Bは、Aの確認メッセージを受信した直後にCLOSED状態になります。これまでのところ、TCPは正常に切断されています。
ARP(アドレス解決プロトコル)は、IPアドレスからMACアドレスへのマッピングを実装するため、つまり、ターゲットIPに対応するMACアドレスを照会するために使用されるアドレス解決プロトコルです。
詳細については、[https://www.cnblogs.com/csguo/p/7527303.html](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.cnblogs.com%2Fcsguo%2Fp%2F7527303.html)を参照してください。
[

コードをコピーする
]( javascript:void(0);)
TCP:
TCPプログラミングのサーバー側の一般的な手順は次のとおりです。
1.ソケットを作成し、関数ソケットを使用します();
2.ソケット属性を設定し、関数setsockoptを使用します();*オプション
3. IPアドレス、ポート、およびその他の情報をソケットにバインドし、関数bindを使用します();4.監視をオンにし、リッスン機能を使用します();
5.クライアントから接続を受信するには、関数acceptを使用します();
6.データを送受信するには、send関数を使用します()そしてrecv()、または読む()そして書く();7.ネットワーク接続を閉じます。
8.監視をオフにします。
[

コードをコピーする
]( javascript:void(0);)
[

コードをコピーする
]( javascript:void(0);)
UDP:
対応するUDPプログラミング手順は、次のようにはるかに簡単です。
UDPプログラミングのサーバー側の一般的な手順は次のとおりです。
1.ソケットを作成し、関数ソケットを使用します();
2.ソケット属性を設定し、関数setsockoptを使用します();*オプション
3. IPアドレス、ポート、およびその他の情報をソケットにバインドし、関数bindを使用します();4.データを周期的に受信するには、関数recvfromを使用します();5.ネットワーク接続を閉じます。
[

コードをコピーする
]( javascript:void(0);)
TCPとUDPの基本的な違い
特定のプログラミングの違い
Recommended Posts