最終的にはネットワークプログラミング段階、原則と無知な心の基本的な知識の多くは、新しい世界への気持ちまでライ31日、。
まず、クライアント\サーバーアーキテクチャ
1.ハードウェアC / Sアーキテクチャ(プリンタ)2.ソフトウェアのC / Sアーキテクチャ
2.インターネットはどこでもC / Sの構造であり、
このようなポルノサイトなど、お使いのブラウザは、クライアントサーバーです(Sアーキテクチャはまた、B / C / Sアーキテクチャです)
あなたのビデオを提供するサーバとしてテンセント、あなたがそのビデオを見るために、次のTencentのビデオクライアントを持っている)C / Sの構造とソケットとの間の関係:
ソケットは、C / Sアーキテクチャの開発を完了することで学びます
第二に、インターネット・プロトコル
ソケットベースのプログラミングに、独自のC / Sのソフトウェアアーキテクチャのいずれかを開発する方法1.
2.C /ソフトウェア(アプリケーション層)は、Sに基づいて、通信ネットワークアーキテクチャであります
プロトコルの束である3コア・ネットワーク、標準であるプロトコルは、あなたがこれらの基準に従わなければならない、ソフトウェアベースのネットワーク通信を開発したいです。
これらの規格からの研究4.レッツ・スタート、私たちのソケットプログラミングのツアーを開きます
そして、我々の偉大なソケットは全く何をしますか?下記を参照してください。
二、最後にソケットは、それが何であるのですか?
ソケットは、アプリケーション層となるインターフェイスの集合である抽象化層を、通信する中間ソフトウェアTCP / IPプロトコルスイート。デザインモードでは、ソケットは、実際にファサードパターンであり、それは複雑である隠されたTCP / IPプロトコルスイートユーザーのためのソケットインタフェースの後ろに、シンプルなインタフェースがすべてセットで、聞かせてソケットが指定を遵守するために、データを整理します合意。
だから、私たちはTCP / UDPプロトコルの深い理解を必要としない、ソケットは、私たちのために良いパッケージを持って、私たちはプログラムにソケットの規定に従う必要があり、自然のTCP / UDP規格に準拠するプログラムを書きます
ネスティング単語で第三に、
ソケットは、彼らが言う、BSD Unixのである、カリフォルニア大学、Unixの20 1970年のバークレーバージョンで始まりました。したがって、それはまた時々ソケット「Berkeleyソケット」またはと呼ばれる「BSDソケットを。」まず、ソケットは、同じホスト上の複数のアプリケーション間の通信に使用するために設計されています。これは、プロセス間通信、またはIPCとして知られています。ソケットがあり、2つ(または2つのレースを持っていることが知られている)されているファイルタイプとネットワークベースのタイプに基づいています。
ソケットファミリー名:AF_UNIX
UNIXのすべてがファイルで、ファイルのソケット呼び出しを同じマシン上で実行されている2つのソケットのプロセスは、データへの基本的なファイルシステムへのアクセスに基づいて、通信は、間接同じファイルシステムにアクセスすることによって行うことができます
ソケットファミリー名:AF_INET
(AF_INET6 IPv6用にも使用することがすべてのアドレスは、他のいくつかのアドレス家族が暮らしているが、それらはいずれかのみ、特定のプラットフォーム用に使用されている、または放棄されていないか、ほとんど使用されていること、あるいは単に本当ではありません家族は、AF_INETは、我々は唯一のネットワークプログラミングを気にしているため最も広く使用されている1は、Pythonはそのほとんどの時間、私はそれを使用して、アドレスファミリの様々なサポートしていますが、あるのみAF_INET)
A-人生のシナリオ。あなたは友人を呼びたい、最初のダイヤル電話が電話リングを聞いた後、友人をもたらし、その後、あなたとあなたの友人はあなたが話すことができ、接続を確立しました。そして為替のもう一方の端は、この会話を終了するには電話を切ります。 人生のシナリオは、この作品を説明します。
そのようなプロセスは、おおよそです
四は、簡単な輸送を実現ソケット
クライアント:
インポート ソケット 電話 = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM) phone.connect((' 127.0.1.11 '、8000))#のダイヤル電話 phone.send(' こんにちは' .encode(' UTF-8 ') )#のメッセージ データ= phone.recv(1024 ) 印刷(「サーバ側で送信されたメッセージを受け取る:」、データ)
サーバー:
インポートソケット 電話 = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM) #は、携帯電話を購入し phone.bind((' 127.0.1.11 '、8000)) #拘束電話カード phone.listen(5) #パワー・ 印刷(" - ---> ' ) コネティカット、ADDR = phone.accept() #電話などの MSG = conn.recv(1024) #受信したメッセージの 印刷(' クライアントがメッセージを送信する:" 、MSG) conn.send(MSG。アッパー()) #のメッセージ はconn.close() phone.close()
五、3ウェイハンドシェイクTCP契約、4波
1.スリーウェイハンドシェイク:
まず、クライアントは、良いか悪い戻りリンクSEQ + 1、クライアント戻り確認リンクACK = Y + 1か否かをサーバSYN、SEQ同時送信リンク、サーバ(サーバ)に(クライアント)の要求を送信します
3は、最終的に双方向伝送リンクを確立した後、全体のプロセスは、相互に対応させていただきます
(聞く)パラメータの数を表す聞く限り、何も完全な3段階の仕上げがないので、彼らは半分リンクされ、リンクを後援半SYNを格納するために使用される半のリンクに格納され
TCPプロトコルは、良い面と悪い応答を区別しませんので、しかし、また、(実際には、私は結果的に知っていない、非常に高速なハードウェアを感じる)SYNフラッド攻撃を受けることは容易です
2.データ伝送:
これは、あなたが転送に私に来て、と言って何を持っています
手を振って3つ
あなたは、彼らが切り離さ確認する限り、打ち上げ後にオフに発売したリンク、すべき転送の終了が多い、しかし、双方向伝送を破ると、それは4が必要です
サーバは自動的にリンク、クライアントの承認を切断するデータ転送が完了した後、彼らの正常な動作を確保するためであることが多い、クライアントへのサーバーは、クライアントが切断要求を送信しない、切断されますが、サーバーは持っていますイニシアチブは、TIME_WAIT状態に入りますし、逆もまた同様同じです。
実際には、今日は自分自身少し問題対話型サーバとクライアントが、良い低ああものの、多くは非常に理解していなかったです
二つのタスクバー、
1.無料またはコンピュータの基本的なLinuxのベース部2を見て、再生した仮想マシンサーバに従事する
今日、おっと、私はプログラムが近づく小さな一歩であるサーバ側の配信パラメータの顧客に対処する独自の方法を試して明日消化するために細心の注意を払うためにこれらの、必要と感じています。
~~~~~