python27の弟は、まだネットワークプログラミングの話します:

 

python27day26ネットワークプログラミング----------------------------------------------- --------------------------------------------- 
ネットワークインフラストラクチャ-ポート番号:
ポート番号:プロセス間の区別をマークするために使用
ステーションはホストのIPアドレスを持つには、多くのサービス、提供することができますなHTTP(ウェブなどサービス)、FTP(ファイル伝送の部分)、SMTPを(電気サブメニューの電子メール)など、上の
これらのサービスはできますこれは、IPアドレスによって達成されます。だから、どのように異なるホストを区別するためにネットワークサービス?明らかに、IPアドレスに依存しない
IPアドレスとするので関係のネットワークサービスがある関係、より。実際には、「IPアドレス+エンドを通じて-connectorの異なるサービスを区別するための番号」。?????

-connector数は、0から65535の範囲の整数(よく知られており、動的に)、数ある
周知端-connector端知られ-connector(物事を固定するために使用される)の数を、0からレンジング1023
スルー80側-connector HTTPサービス(ウェブサイト)に割り当てられた
21の端-connectorFTPサービス(ファイルのダウンロード)に割り当てられた
ものとして理解することができより頻繁に使用する機能が作る使用の固定数の
動的な終わり-connectorこれは、動的なエンドと呼ばれている?1024〜65535の範囲を-connectorなぜなら、それは、一般的ではありません固定割り当て特定のサービスは、動的に割り当てられています。
という動的な割り当て手段システム・プロセスまたは必要があります使用してプログラムのプロセスが必要ですホスト?してくださいに適用する際に、ネットワークトラフィックを、エンド-connector
からホスト使用終了-connector割り当て番号可能ドナー使って

ネットワークインフラストラクチャを-プロトコル:
プロトコル:調節するための任命
初期のコンピュータネットワークを、それぞれの工場でサプライヤー自分の条項プロトコルスイート、IBM、AppleとMicrosoftがそれぞれ持っている?オートさんをネットワークプロトコル、
世界中のコンピュータのすべての異なる種類を置くために互換性がない(言語、方言、ARPANETが)?接続されている、
あなたが提供しなければならない⼀の?GSMを設定し、 使用する相互接続を実現するために、プロトコルをこの先の時間、標準をインターネットプロトコルスイート(インターネットプロトコル?スイート)
経由で使用するプロトコル標準を。?インターネットので契約は、プロトコル標準の何百も含まれていますが、最も重要な二つのプロトコルはTCPとIP?プロトコル、です
ので、ズームインターネットに自宅 TCP / IPプロトコルのための契約総称?(私たちは、すべての基本的なネットワークをたどります通信プロトコル)
?処理の完了との間の通信のための仕様である

(TCP / IPプロトコルスイートレベル分割)(強調は覚え)TCP / IPプロトコルスイートの機能は複数のレベルに分割に応じて
、ネットワークインターフェース層(リンク層)
ネットワーク層
、トランスポート層、
アプリケーション層
(4分周ライトコード)

物理層
、データリンク層
、ネットワーク層
、トランスポート層、
セッション層、
プレゼンテーション層
、アプリケーション層
、理論的に7からなる()
略称:対応表は、そのネットワーク番号を渡します

早い段階で、異なる企業が独自のネットワーク・プロトコルを開始している、相互に互換性がありません
、その後、ISO(国際標準化機構)が目立つ:全くそう、私たちは国際的で一般的なネットワーク通信プロトコルを開発しましょう標準
その後、ISO万博家は長く、詳細な、複雑な、面倒で、正確なネットワーク通信プロトコルの「束」を策定、
それはあまりにも簡単に学ぶために、アイデアを明確にするために、プロトコルスタックを複雑になっている、彼らは7で分割されますクラスの異なる機能の異なる層の代表的な(すなわち、層7分割)、
これらは、対応するプロトコル層内部に正規化。国際基準は、次のステップは、達成するためのソフトウェア/ハードウェアベンダーで、出てきました。
しかし、実際にメーカーが実現するにはあまりにも難しい、それはあまりにも複雑になる原因となり、完璧な、オールラウンドの追求ので、完全な7層のプロトコル、レイヤ7プロトコルスタックを実現していなかった
4層(5層非公式部門で割った、その結果を実際の使用を)

OSI 7層プロトコルの、略語オープンシステムインターコネクトで、オープンシステムの中国語の翻訳相互接続
TCP / IPをどのように定義するか、電子、インターネットに接続されたデバイス、およびどのようにデータが標準でそれらの間で転送された
4層の階層、各ネットワーク層は、自分のニーズに完了するために提供次の層、それを呼び出している
他の三つの主要なハンドルは、すべての通信の詳細?むしろ、ネットワークのデータ転送活性よりも、アプリケーション層は、アプリケーションの詳細については懸念している、
と無知なアプリケーション、
アプリケーション層:アプリケーション間の通信層、異なるファイルシステムは、異なるファイル命名規則とテキスト表現などの異なるラインを持って
、異なるシステムと様々な非互換性の間でファイルを転送しますアプリケーション層で処理された
トランスポート層:この層は、例えば伝送制御プロトコルとしてノード、(間のデータ転送を提供 TCP)、UDP(User Datagram Protocol)と同じように、
この層は、データを送信するための責任があり、そしてデータを受信し、配信されたと判断し
ネットワーク層:データパケットのすべての部分は、宛先ホストに到達できるように、基本的なデータパケット転送機能を提供する責任。
ネットワーク層は、パケットによって送信され、上位層、逆にパケットを送信する下位レイヤデータを受信し
、また下層にTCP又はUDPレイヤデータパケットから受信したIPレイヤ
実際のネットワーク:ネットワークインタフェース層メディア管理、送信データ(機械加工、電気的インターフェースおよびプロセス)実際のネットワーク使用する方法を定義

ソケット(コンピュータ間の通信のプロセスとは対照的に)プロセス間通信は、ネットワークを介して完成する
英語本来の意味ソケットそれは「ジャック」です。また、一般的に「ソケット」として知られている

ソケットは、基本的なプログラミング・インターフェース(API)である:ソケットは、TCP / IPプロトコルのカプセル化され、ソケット・プログラミング・インタフェースは、単なるプロトコルではありません
ソケットを通じて、我々はTCP / IPプロトコルスイート(プログラマレベルを使用することができます)
、HTTPセダンは、TCP / IPはまた、ソケット・プログラミング・インターフェースであるインターフェースを使用したWeb開発プログラマーを行うために提供し
、ソケットエンジンネットワーク通信する機能を提供、データのパッケージングやディスプレイの特定のフォームを提供し
、最も重要なのソケット指向のクライアント/サーバモデルは、ソケットクライアントとサーバーのプログラムのためのさまざまなシステムコールを提供するように設計されている
ソケットとの間の接続プロセスは3つの段階に分けることができます。サーバーの監視、クライアントの要求は、接続が確認

作成ソケット:
インポートソケット
#インポートソケットモジュール
S = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)
#S場合は、送信ソケットオブジェクトであり、ネットワークデータを受け取る機能を有する
2つのパラメータを(取り書き込む必要があります)
AF_INET(IPv4のプロトコルを使用するインターネットプロセス間通信における)
ソケットタイプ、いずれかSOCK_STREAM(ストリームソケット、使用中?TCPプロトコル)またはSOCK_DGRAM(データグラムソケット、使用 UDPアソシエーションにおける?会議)
遅いTCPしかし、安定性は失うデータない
高速なUDPが、データを失う可能性(ハッキング)
コンピュータ間で、IPアドレスとポート番号(IPv4のプロトコル)を決定した後、TCPやUDPプロトコルが通信することができますか?

ソケットプログラミング-udpとTCP:
UDPを- -ユーザ・データ・プロトコル、ユーザデータグラムプロトコルは、ある A の簡単接続トランスポート層プロトコルデータグラムには。
UDPはそれだけでする必要があり、信頼性を提供していない使用して送信されたIPレイヤのパケットに送信される番組データを、彼らが到達できることを保証するものではありません先のタイム地面を。
UDPは前にいない送信データパケットないので、使用のビルドにクライアントとサーバの間で注目すぐ⼀の接続、およびタイムアウトなし再送メカニズム、そう非常に高速な
UDP 一般的に使用、マルチポイント通信、リアルタイムのデータトラフィックに以下のような:
言語レックワイドは?マルチキャスト
?ビデオ
?QQを
TFTP(簡易ファイル?メンバーの転送が)
???書き込みと理解することができる

TCP(伝送制御プロトコル、伝送制御プロトコル)は、すなわち、送信、接続指向のプロトコルであり、データを受け取ります前に、信頼性の高い接続を確立する必要があり、他の
TCP接続が3「対話」を経なければならないは、これら3つの対話の唯一の簡単な説明で簡単なプロセス、非常に複雑されたプロセス、確立することができます。
ホストは、ホストBへの接続要求データを送信しますパッケージ:「?私はそれは、あなたにデータを送信することができますしたい、」これは最初の対話である
ホストBがホストAの合意接続および同期の要件を(同期は、領収書に送るにコーディネート2つのホストである)の送信しますパケット:これは2番目のダイアログで「はい、あなたが送ったのか?」
、ホストBの確認パケット同期要求を送信したホスト:「!私は今あなたがそれに続く送信は、」これが三度目です対話の
目的は3つの「対話」は正式にホストBにデータを送信し、ホストされた、3「対話」した後、送信し、同期データパケットを受信する
コールとして理解することができます まずチャネルを確立

:されているTCPとUDPの違いを
?1.がコネクションにリンクされているベースの
システムリソース2.コールを(よりTCP、UDP以下)?
3.UDPプログラムの構造が比較的単純である?
4.フローモードとデータグラムモード?
5.TCPデータの正確性を確保、UDPのパケットロスは、TCPは、データ・シーケンスを確保するために、UDPは???保証するものではありませんがあり

、送信データを:
結果は、最初の「ネットワークデバッグアシスタント」をインストールしてご覧ください
ソケット*インポート
S =ソケット(AF_INET、SOCK_DGRAMは)#ソケットを作成
のaddr =( '192.168.1.17'、8080 )# 準備ができて、受信者のアドレス
:データ=入力( "入力")
s.sendto(data.encodeを()、ADDR)
ときバイトに転送される送信データ#、のpython3列ニーズ
(「UTF-8」)#データはバイトオブジェクトの種類を取得するために、UTF-8でエンコードさ#encode
ターン中)(#decode
S。CLOSE ()????

ソケットインポート*から
S =ソケット(AF_INET、SOCK_DGRAM)
ADDR =( "192.168.19.138"、8080)
s.sendto( "こんにちは" .encode( "GB2312")、ADDR)
S.近い()

秋に飛ぶためにデータを送信する:
飛行秋の使用を:2425ポート
通常のデータを送信するために、秋には応答しない飛ぶ、あなたが特定の形式のコンテンツを送信する必要があります?
1:123123:ダニエル:ダニエル・ウー-pc:32:?笑
飛行秋には独自のを持っていますアプリケーション層プロトコル
1は、のバージョンを示している
デジタル送信の背後にある時間を、ちょうど書く
のに代わってメッセージを送信するために32を
飛んで爆弾秋:サイクルは、(スタック可能性があり)メッセージを遅延させることはありませんか?
注意:IPおよびポートが使用されるネットワーク通信プロトコルに不可欠であるTCPプロトコルの送信データを用いてフライ秋のUDPプロトコルを使用して、例えば、一致しなければならない無効である
UDPは、ライト(のみ受信者のアドレス)として理解、TCPはコールとして理解(ダイヤルアップアクセスを確立するために、あなたは安定したパスが必要)????

UDPプロトコル:
インポートモジュール:
ソケットから*インポート
アドレス側受け入れる準備ができて
ノートでは、タプルに配置され
た文字列内のIPアドレス間
ADDR =(「192.168.19.138」、2425 )
ソケットオブジェクトを作成するために、
S1 =ソケット(AF_INET、SOCK_DGRAM)は、
(データの所定のネットワーク伝送であるバイトストリームに変えるために)送信される書き込みデータにメッセージを送信します
レシピエントライトバックアドレスに
s1.sendto( "1:123:張ダ:張ダ-pc :: 32こんにちは" .encode( "GB2312")、ADDR)
s1.close()は

データを受信する
ソケットインポートから*
S =ソケット(AF_INET、SOCK_DGRAM) #ソケットを作成
のaddr =( '192.168.1.17'、8080 )# 準備ができて、受信者アドレス
データ=入力( "入力してください:")
s.sendto(data.encodeを()、ADDR )
データを受信する#待ち
redata =秒。recvfromは(1024)
#1024バイトの最大数は、今回受信表します
印刷(redata)
S。CLOSE()???

ソケットからのインポート*
S =ソケット(AF_INET、SOCK_DGRAM)
ADDR =( "192.168.19.138"、8080)
s.sendto( "こんにちは" .encode( "GB2312" )、ADDR)
redata = s.recvfrom(1024)
印刷(redata)
S。CLOSE()

バインディング情報:?
情報は、情報が送信されるたびにバインドされていない場合、システムがランダムにポートを割り当てます
が、また同じコンピュータを避けるために、 ?同じ問題異なるプロセスのポート番号

バインディングメッセージ:プロセスは、固定ポートを使用することができさせ
、受信機が結合し、送信者がポートに結合しない、通常の状況下で
ソケットインポートから*
S =ソケット(AF_INET、SOCK_DGRAM)#ソケット作成
s.bindを(( ''、8788) )#バインドポート、IPアドレスと終了-connector番号、IP 一般的ではない使用し、書き込み
のaddr =( '192.168.1.17'、8080 )#は、 受信者のアドレスを用意
データ=入力( "入力")
s.sendto(data.encode()、ADDR)
redata = s.recvfrom(1024)#1024を表し、現在受信最もズームバイト
印刷(redata)
S。CLOSE()????

エコーサーバー:エコーサービスは、デバッグやテストのために非常に有用ですツール。この効果はまた、非常に単純なプロトコルであり、
バックそのまま送信したもの受け取っ

-udpプログラミングプログラミングソケット:
ソケットからのインポート*
#1は、ソケット作成
UDPSocket =ソケット(AF_INET、SOCK_DGRAM)
#2バインドローカル情報は、使用しないランダムな割り当てをポート
bindAddr =( ""、7088)
udpSocket.bind(bindAddr)#バインド
NUM = 0

真ながら:
#は、相手によって送信されたデータ受信
recvData = udpSocket.recvfromを(1024)
印刷(recvData)
受信したデータポストバック互いに
udpSocket.sendto(recvData [0]、recvData [1])?
NUM = +。1枚の
プリント( "受信されている。他の側へ%d個のデータバックを、" NUM%)を
udpSocket.close()

IM
からソケットのインポート*
時間インポート
#1は、ソケットを作成するには
UDPSocket =ソケット(AF_INET、SOCK_DGRAM)
bindAddr =( ""、7088)
udpSocket.bind(bindAddr)#バインド
しばらく真:
他のデータを受信する#を送っ
recvData = udpSocket.recvfrom(1024)
印刷(」] [%S%S%S'%(time.ctime()、recvData [1]、recvData [0] .decode( "2312")))
A =入力( "入力してください")
UDPSocket .sendto(a.encode( 'GB2312')、( '192.168.1.17'、8080))
はソケットを閉じます。5
udpSocket。 クローズ()????

)を発現製:(類似のUDPネットワーク通信手順
(こんにちは)、その後、下位層に送信?2を、トランスポート層のデータとポート番号(ポートの前に、書き込みデータへのアプリケーション層は、伝送を含みます宛先ポート)
3、ネットワーク層のIPアドレスに加えて、元のIPおよび宛先IP)を含むフロント(に続く
4は、リンク層プリペンドMACアドレス(MAC:ハードウェアアドレスは、ネットワークデバイス)の位置を定義し
、この時点でデータは次のようになります。データ・コンテンツのMACアドレス、IPアドレスとポート番号
、リンク層の後に別のコンピュータにネットワーク伝送開始相分析決意を通じて

運動:
メイクの使用は、完全なマルチスレッド完全二重チャットプログラム
フルデュプレックス(全二重)通信伝送用語です。通信は同時に両方向のデータ伝送を可能にする(電話)
パーティB、およびBを許可する片面のみ送信情報は、パーティAのに(無線)を送信することができない
(パーティBのみがメッセージを受信することができる場合に行うことができない。半二重トランシーバー)????

文字セット:
ASCII
英語1バイト文字セット
ISO8859-1
西ヨーロッパの文字セットのバイト
BIG5
台湾はBIG-5、伝統のために2バイト文字
GB2312の
使用本土早いと最も広く簡素化中国の文字セット2バイトの
GBK
伝統的な中国の2バイト表現できるGB2312拡張
GB18030
中国語の文字を表すことができ、最新のGBKの拡張、ウイグル、チベットやその他の中華民族の文字2バイト
のUnicode
2つのユニバーサルの国際的な文字セットをバイト

UDPプロトコル:
インポートモジュール:
ソケットインポートから*
のアドレス側受け入れる準備ができて
タプルに配置する音符を
IPアドレスの文字列
ADDR =(「192.168.19.138」、2425 )
ソケットオブジェクトを作成するための
S1ソケット=(AF_INET、SOCK_DGRAM)
データ=入力( "入力してください:")
メッセージを送信し、送信すべき最初のデータを書き込む(あるバイトストリーム、所定のデータ伝送ネットワークにオンにする)
後、書き込み受信者アドレス
s1.sendto(data.encode(「GB2312」)、ADDR)
(s1.sendto "ABC" .encode( "GB2312")、addrが)
()s1.close

おすすめ

転載: www.cnblogs.com/zhang-da/p/11895451.html