ホームページ  >  記事  >  バックエンド開発  >  Python基礎知識2:ネットワーク通信・データ送信

Python基礎知識2:ネットワーク通信・データ送信

coldplay.xixi
coldplay.xixi転載
2021-02-20 09:43:392667ブラウズ

pythonネットワーク通信データ送信の実装(基礎知識(2))

Python基礎知識2:ネットワーク通信・データ送信

##無料学習の推奨事項: #Python ビデオ チュートリアル

    ## 序文
  • # 基礎知識の学習
  • 1. OSI モデル
    • 2. TCP、IP プロトコル ファミリ:
    • 3. Python での文字列のエンコード方法
    • ##結論
  • ##まえがき

第二部はこちら!今日は基礎知識を学びましょう。基礎をしっかりと固めてこそ、深く学ぶことができます。 ! !

# 基礎知識の学習

1. OSI モデル

  • OSI モデル は、ネットワーク通信作業を 7 つの層に分割します。下から順に、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層
    OSI は概念と理論として存在するモデルにすぎませんが、レイヤーが多すぎてネットワーク作業が複雑になるという欠点があるため、大規模には適用されていません。その後、OSI が簡素化され、いくつかの層が統合されました。最終的には 4 つの層だけが残りました。下から上に、インターフェイス層、ネットワーク層、トランスポート層、アプリケーション層です。これは有名な # です。 ##TCP/IP モデル
  • # このネットワーク モデルは具体的に何をするのでしょうか?一言で言えば、データのカプセル化です。
  • データのカプセル化原理: 私たちが通常使用するプログラム (ソフトウェア) は、アプリケーション層を介してネットワークにアクセスし、プログラムが生成するデータは、最後のネットワーク インターフェイス層がネットワーク ケーブルを介してインターネットに送信されるまで、層ごとに送信されます。データが 1 つの層に進むたびに、その層のプロトコルによってパッケージ化され、インターネットに送信されるまでに、元のデータよりも 4 層多くのパッケージ化層が形成されます。データのカプセル化プロセス全体は、ロシアのマトリョーシカ人形のようなものです。他のコンピュータがデータ パケットを受信すると、ネットワーク インターフェイス層から層ごとに送信され、送信の各層が解凍され、最後のアプリケーション層まで、最もオリジナルなデータが取得されます。これはプログラムが送信するデータです。使用します。データをパッケージ化するプロセスでは、実際にはデータの先頭にフラグ (データ ブロック) を追加します。これは、データがこの層を通過し、処理されたことを示します。データをアンパックするプロセスはまったく逆で、データのヘッダーのマークを削除し、徐々に元の形状を明らかにします。 (OSI 7 層ネットワークモデルと TCP/IP 4 層ネットワークモデルの比較)
    Python基礎知識2:ネットワーク通信・データ送信
  • 2 台のコンピュータが通信する場合、
  • 次の原則に準拠する必要があります: (1) 通信は 同じレベルである必要があります たとえば、コンピュータ A のアプリケーション層とコンピュータ B のトランスポート層同じレベルにないため通信できません。データの解凍で問題が発生します。
    (2) 各層の機能は同じである必要があります。つまり、まったく同じネットワーク モデルを持っている必要があります。ネットワークモデルがすべて異なっていると、混乱してしまい、誰も知らないことになります。
    データはレイヤーごとにのみ送信でき、レイヤーホッピングはできません。 (3) 各層は、下位層が提供するサービスを利用したり、上位層にサービスを提供したりすることができます。

2. TCP、IP プロトコル ファミリ:

一般的に使用されるソケット プログラミングは次のとおりです。 TCP および UDP プロトコルに基づく、それらの階層関係は次の図に示されています:


Python基礎知識2:ネットワーク通信・データ送信

3. Python での文字列のエンコード方法

#Python では、文字列のエンコーディングを utf-8 に変換する必要があります。

  • 同じ数値でも、それを表すさまざまな方法を選択できます。どのソリューションを選択しても、Unicode エンコード方式になります (utf-8 は特定の Unicode エンコード方式です。達成されます)。
  • Python は内部で Unicode を使用して文字列を表現するため、中国語の文字を印刷する場合 (英語の文字と数字の Unicode と utf-8 エンコードは同じです)、 Unicode エンコード方式であることが保証されています。「utf-8」エンコード方式 (出力はバイナリ コードの束) の場合、漢字の UTF-8 エンコードは 3 バイト、つまり 1 バイトです。以下に示すように、3 セグメントのバイナリ表現)、.decode("utf-8") を使用してデコードできます。ハードディスクに保存する場合や、インターネットに送信する場合(ソケットなどの通信関連)にはUTF-8に変換する必要があります。
    Python基礎知識2:ネットワーク通信・データ送信
    (Python での utf-8 エンコードの出力結果)
  • 内部的に UTF-8 を使用し続けてみませんか。そうでない場合は、必要ありません。変換された?これには、文字列の長さの計算と部分文字列の検索が非常に非効率であるという UTF-8 の欠点が関係します。 UCS2 を使用する場合、文字列の長さを知りたい場合は、文字列が占めるバイト数を調べて 2 で割ります。UTF-8 の場合は、文字ごとにカウントする必要があります。部分文字列検索を行う場合、次の文字が何バイトを占めるかがわからないため、これらの効率的な検索アルゴリズムは機能しません。

#結論

次回は簡単な例をいくつか考えていきます、誰もがそれを理解し、実践できるようにします。最後に、皆さんも読んだら「いいね!」を押して励ましていただければ幸いです この記事を書いてから2時間以上経ちました これは営利行為ではなく、知識の共有、共に学ぶためのものです、そして一緒に成長していきましょう! ! ! (密かに、他の人の記事を読んだ後は好きではありません。これは良い習慣ではありません。すぐに変更します、ウーウーウー)

関連する無料学習推奨事項: Python チュートリアル #(ビデオ)

以上がPython基礎知識2:ネットワーク通信・データ送信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。