クライアント/サーバアーキテクチャ
1.ハードウェアC / Sアーキテクチャ(プリンタ)
2.ソフトウェアのC / Sアーキテクチャ(どこでもインターネットはC / S構造である):B / Sアーキテクチャは、1種のC / S構造、B / Sブラウザ/サーバであります
関係C / Sアーキテクチャとソケット:私たちは、ソケットを使用してC / Sアーキテクチャの開発を完了することです
OSI 7層のプロトコル(*******)
7またはOSI TCP / IP 5またはTCP / IPの4つに異なる機能に応じてインターネットプロトコル
各実行共通の物理デバイス
はじめに:
注意してください三つの条件、一つのコンピュータシステムは、(例えば地雷除去の再生など)、独自に仕上げることができるとの完全なコンピュータシステムは、ハードウェア、オペレーティングシステム、3で構成されるアプリケーション・ソフトウェアで構成されている。あなたが他の人とプレイするつもりなら、それはインターネットへのアクセスが必要になり、インターネットは何ですか?
プロトコルを構成しているインターネットのコアは、プロトコルは、通信のための世界標準は英語です周囲の人などの標準であり、
人間へのコンピュータは、その後、インターネットプロトコルは英語でコンピュータ業界の場合は、すべてのコンピュータが通信するために、標準的な均一な規則に従ってメッセージを送受信するすべてのコンピュータが行くことができるという、インターネットプロトコルに学んできた、人々のインターネットプロトコルに異なる区分に応じて論理的に独立したレベルに分かれて。
ネットワーク通信の理論を参照してください!
なぜインターネットプロトコルソケットが最初にそれを学ぶ必要があります学びますか?
まず、C / Sアーキテクチャは、ネットワークベースの通信であります
次に、コアネットワークは、標準的なプロトコルであるネットワーク・プロトコルの束です。あなたがソフトウェアベースのネットワーク通信を開発する場合は、これらの基準に従わなければなりません。
ソケット層
何ソケットいますか?
ソケットは、アプリケーション層とインターフェイスのセットであるTCP / IP通信プロトコルミドルウェア抽象化層です。デザインモードでは、ソケットは、実際にファサードパターンであり、それはソケット・インタフェースの背後に隠されたTCP / IPプロトコルの複雑さ、ユーザーのために、シンプルなインタフェースがすべてセットで、ソケットは、指定されたプロトコルに準拠するために、データを整理してみましょう。だから、私は、TCP / UDPプロトコルの深い理解に行く必要がないものを、ソケットが私たちのために良いパッケージを持って、私たちは、プログラムへのソケットの規定に従うプログラムは自然にTCP / UDP基準に従う記述する必要があります。
ソケットTCPプロトコルに基づいて、
ソケットカテゴリー:
ファイルタイプのソケットファミリベース:AF_UNIXは(Unixシステム上で、すべてのアクセスファイルは、ファイルシステムがデータを取得するための基盤となるソケットファイルベースのコールで、2つのソケットの同じマシン上で同時に実行中のプロセス、通信は、システム間で同じファイルにアクセスすることによって行うことができます)
AF_INET(アドレスファミリは、Pythonで、さまざまなをサポートしていますが、我々は唯一のネットワークプログラミングを気なぜなら、我々は唯一のAF_INET時間のほとんどそう):ネットワークソケットファミリのタイプに基づいて、
ソケットのワークフロー:
ここでは、コールを説明するために例を与えます:
あなたが友人に電話を与える場合は、最初のダイヤル電話が電話リングを聞いた後、友人をもたらし、その後、あなたとあなたの友人がリンクを確立し、あなたが話すことができます。そして為替のもう一方の端は、会話の終わりをハングアップ。人生のシナリオは、この動作を説明します。(あなた自身のために、上司はあなたのアドレスを必要としない、あなたは夕食に行くとき、あなたはレストランの住所を知っている必要があり、所有者がサーバーを想定することであり、あなたがクライアントです夕食のためにレストランに行く場合。)
注意:
サーバを再起動するときに問題が発生した可能性がある場合:
サーバーがまだTIME_WAITが存在しているためです理解していない場合は、深研究1.tcpスリーウェイハンドシェイクは、2.syn洪水を振っては、4つの非常に同時サーバ3多数を持っていますしてください(占有アドレスに手を振って4つの状態TIME_WAIT状態最適化法)
上記の方法を解決するには:
1つの#はソケット構成、IPアドレスとポートの再利用を追加 2 。3電話= ソケット(AF_INET、SOCK_STREAM) 。4 phone.setsockopt(SOL_SOCKET、SO_REUSEADDR、1) #は、それが結合する前に添加する 。5 phone.bind((' 127.0.0.1 "、8080))