ホームページ >バックエンド開発 >Python チュートリアル >高度な Python の概念 - Python を使用したネットワーキング
デバイスがどのようにインターネットに接続されているのか疑問に思ったことはありますか?あるいは、企業はどのようにして地域間で情報をシームレスに共有しているのでしょうか?これらすべては、ビジネス戦略の一環としてコンピュータ ネットワークを使用して達成されます。これにより、インターネット上のネットワーク内のさまざまなアプリケーションやデバイス間で通信を確立し、共同作業し、リソースを共有することができます。ネットワーキングとソフトウェア アプリケーションやその他のさまざまなテクノロジの統合により、ワンクリックで友人や他の人と連絡したり、何かを共有したりできるようになりました。 Python では、ネットワークはデバイスと外部リソース間の対話を可能にする基本的な概念です。 Python には、一般的なネットワーク用の「ソケット」や HTTP 通信用の「リクエスト」などのネットワーク機能をサポートする組み込みモジュールが多数含まれています。
したがって、この記事では、Python の基本概念から高度な概念まで、実践的な例を使用してネットワーキングについて説明します。
ネットワーキングには、有線ケーブルまたは無線ネットワークを介して複数のコンピューターやデバイスを接続し、インターネット上でデータを交換したりリソースを共有したりすることが含まれます。複数のデバイス間の通信が可能になります。ご存知のとおり、分散システムとは、多数のクライアント、ハードウェア デバイス、プロセスが接続されてリソースを共有し、通信するシステムです。したがって、ネットワーキングと分散システムは大幅に相互接続されています。これらは、システムの効率と生産性を向上させるために、ストレージ、リソース共有、電子通信を容易にするインフラストラクチャを提供します。
私たちが日常生活で使用する主要なネットワーキングの概念は次のとおりです。
IP アドレスは、ネットワーク上のデバイスを一意に識別します。インターネットに接続するデバイスがある場合は、IP アドレスが必要です。 IP は インターネット プロトコル の略です。これは、ネットワーク内のコンピュータまたはデバイスの一意の番号または識別子です。すべてのデバイスには固有の番号があり、ネットワーク内の他のデバイスと区別されます。例:
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
注:
IP アドレスは、インターネット プロトコルを使用してネットワーク上で通信する各コンピュータを識別する、ピリオドで区切られた一意の数字の文字列です。
ポートは、ネットワークでデバイス上の特定のサービスまたはプロセスを指定するために使用される数値識別子です。ネットワーク上のデバイスの位置を識別する IP アドレスとは対照的に、ポートを使用すると、同じデバイス上で複数のサービスを同時に動作させることができます。これにより、データが正しいアプリケーションまたはプロセスに確実に送信されます。これらのポートの範囲は 0 ~ 65535 で、特定のプロトコル用に一定のスケールが予約されています。例:
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
ネットワーク プロトコルは、ネットワーク デバイス間の通信のための一連の手順と実践です。データのフォーマット、送信、受信の方法を定義します。例には、HTTP、FTP、SMTP、DNS などがあります。プロトコルは、アプリケーション層 (HTTP)、トランスポート層 (TCP)、ネットワーク層 (IP) など、OSI モデルのさまざまな層で動作できます。
ソケットは、複数のデバイス間でデータを送受信するためのネットワーク エンドポイントです。これには、IP アドレスとポート番号の組み合わせが含まれます。ソケットには主に 2 つのタイプがあります。1 つはコネクション指向の TCP 接続用の SOCK_STREAM、もう 1 つはコネクションレス型の UDP 接続用の SOCK_DGRAM です。ソケットを使用すると、Web サーバーや電子メール サーバーなどのさまざまなネットワーク サービスを実装できます。
デバイスやコンピューターが相互に対話し通信できるように、インターネット経由でデバイスやコンピューターを接続する方法を示す特定のモデルが定義されています。ネットワークを定義するには 2 つの主要なモデルがあります。 OSI モデルまたは TCP/IP スタック。それぞれの概要を簡単に見てみましょう:
TCP/IP スタックは、インターネット上のネットワーク デバイスを相互接続するために使用される一連の通信プロトコルであり、信頼性の高いデータ送信と通信を保証します。これは、コンピュータがどのように対話できるか、またそれらのシステムをどのように設計するかに関する一連の手順です。機能を理解するために5つの層に分かれています。各層にはそれぞれの機能があり、アプリケーション層、トランスポート層、ネットワーク アクセス層、データ リンク層、および物理層です。 TCP/IP スタックは、ネットワーキング通信の理論的な理解を提供する OSI モデルとは対照的に、現実世界におけるネットワーキングの実践的な実装を提供します。さらに、トランスポート層は信頼性の高いデータ送信のための機能を提供し、ネットワーク アクセスは正しい IP アドレスとデータ パケットのルーティングなどを保証します。
TCP/IP と同様に、OSI モデルも複数のデバイスにわたるネットワークの設計に使用されます。これは、7 つの異なる層でネットワーク プロトコルを理解して実装するための一連の手順で構成される概念的なフレームワークです。 TCP/IP と同じレイヤーを共有しますが、追加のレイヤーもあります。これらには、アプリケーション、プレゼンテーション、セッション、トランスポート、ネットワーク アクセス、データ リンク、および物理層が含まれます。具体的には、OSI と TCP/IP の主な違いは、TCP/IP のアプリケーション層に組み込まれた 2 つの追加層です。
ネットワーキングには、2 つ以上のデバイスが接続され、それらのデバイス内で通信が可能になります。 Python では、ソケット プログラミングは基本的かつ中核となるネットワーク作成メカニズムです。ソケットプログラミングの場合、ソケットモジュールをインポートする必要があります。開発者はソケット モジュールを使用して、TCP および UDP 通信用のソケットを生成、構成、管理できます。このモジュールには、ソケットを作成し、ソケットを相互に関連付けるために必要な組み込みメソッドが多数含まれています。使用されるいくつかの重要なメソッドは、ソケットの作成に使用されるsocket.socketです。このソケットはクライアント側とサーバー側の両方で使用されます。また、通信を受け入れるには、socket.accept メソッドを使用します。
注意
TCP は、Transmission Control Protocol(伝送制御プロトコル)の略で、信頼性の高いデータ転送を保証する接続指向のプロトコルです。 UDP はユーザー データグラム プロトコルであり、信頼性よりも速度を優先するコネクションレス型プロトコルです。
ソケットは、データの送受信に使用されるネットワーク エンドポイントです。デフォルトでは、1 つのネットワークに 2 つのソケット (通信デバイスごとに 1 つずつ) があります。これらのソケットは、IP アドレスとポート番号を組み合わせます。さらに、使用されるポート番号に基づいて、1 つのデバイスに N 個のソケットを持つことができます。プロトコルの種類ごとに異なるポートが使用可能です。たとえば、HTTP はポート 80 を使用します。このエンドポイント メカニズムを通じて、開発者はさまざまなネットワーキング シナリオで正確かつ信頼性の高いデータ交換を保証できます。
Python プログラミングの基礎であるソケット プログラミングが何であるかを理解したので、コード エディターに移動して、ソケット プログラミングを作成する方法を見てみましょう。接続を確立するには、クライアント側とサーバー側で 2 つの異なるファイルを作成する必要があります。
server.py
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
client.py
HTTP uses port 80 HTTPS uses port 443
TCP は、伝送制御プロトコルとしても知られ、TCP/IP モデル内のトランスポート層プロトコルです。これは、インターネット上でデータを送信する方法を決定する一連のプロトコルと手順で構成されます。通常、データがファイルとして送信される場合、データは個々のパケットに分割されます。パケットが各パケットに固有の番号を持つ宛先に到着したとき。それを使って組み立てることができます。さらに、一部のパケットが欠落している場合、TCP はそれらのパケットを確実に再送信します。これが、TCP がハンドシェイク プロセスを通じて通信を確立し、受信したデータを確認し、パケットの正しい順序を維持し、データの整合性と配信を保証することによって失われたパケットを再送信するため、TCP を信頼できる通信プロトコルと呼ぶ理由です。
サーバーはクライアントの要求を待つソフトウェアであり、クライアントはサーバーに対してリソースを要求します。ソケット プログラミングは主にクライアント/サーバー アーキテクチャ向けに実装されます。ここでは、クライアントがメッセージを送信し、サーバーがそのメッセージに応答し、TCP のソケット モジュールを使用してその要求に適切な応答を返す、クライアントとサーバーを作成する例について説明します。クライアント モデルとサーバー モデルの両方を設計しましょう。
server.py
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
client.py
HTTP uses port 80 HTTPS uses port 443
TCP ソケットを使用して Python で簡単なチャット アプリケーションを作成してみましょう。サーバーは受信コマンドをリッスンし、クライアントはそのサーバーに接続してメッセージを送受信します。 Python 組み込みモジュール (ソケット) を使用してチャット ルームを構築します。したがって、クライアントとサーバーなどの各側のコードを個別に記述する必要があります。
server.py
import socket #Import library #Create a socket object and then define two arguments first one specifies the IP address #and second indicate the use of a TCP socket. soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Prepare to receive connections by binding it to the IP address and port soc.bind((socket.gethostname(), 1042)) #Listen to the connection soc.listen(5) while True: #Set client socket and address and make a connection clt, addr = soc.accept() print(f"Connection Established to address {addr}") msg = "Message Received and the message is ->" clt.send(bytes(msg + "Socket Programming in Python", "utf-8"))
client.py
import socket #Importing the module #Create a socket object and then define two arguments first one specifies the IP address #and second for indicating the use of a TCP socket. soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Set the connection with the port number and hostname soc.connect((socket.gethostname(), 1042)) #Set the bytes of the message how much you want to receive msg = soc.recv(100) print(msg.decode("utf-8"))
ネットワークは、コンピューターサイエンスとプログラミングにおける重要な概念です。オフィスで仕事をしている場合でも、チームとファイルを共有している場合でも、人間の問題のほとんどは解決されます。あるいは、他国の親戚に連絡してください。要約すると、私たちは Python を使用したネットワーク基盤の確実な導入に焦点を当てました。 ネットワーク制御とモデル、クライアントとサーバーのアーキテクチャ、ソケット ライブラリを使用した実践例などの重要なトピックを学びました。このライブラリは、分散システムの安全で信頼性の高いネットワークの確立を保証します。実験を続けてこれらのスキルを構築し、ネットワーク プログラミングの習熟度をさらに高めてください。このガイドがお役に立てば幸いです。読んでいただきありがとうございます。コーディングを楽しんでください!
Python でのネットワーキング
ソケットライブラリ
以上が高度な Python の概念 - Python を使用したネットワーキングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。