Python学習34ネットワークプログラミング02

 トランスポート層

トランスポート層の起源:ネットワーク層のIPは分子ネットワークを見つけるのに役立ち、イーサネット層のMACはホストを見つけるのに役立ちます。その後、誰もがアプリケーションを使用し、コンピューターがqqやストームビデオなどを開くことがあります。手順、

次に、ipとmacを介して特定のホストを見つけました。このホスト上のアプリケーションを識別する方法です。答えはポートで、ポートはアプリケーションのネットワークカードに関連付けられた番号です。

トランスポート層機能:ポート間通信を確立する

補足:ポート範囲0-65535、0-1023がシステムによって占有されています

tcpプロトコル:

信頼性の高い伝送、TCPデータパケットには長さの制限がありません。理論的には無限に長くなる可能性がありますが、ネットワークの効率を確保するために、通常、TCPデータパケットの長さはIPデータパケットの長さを超えないため、単一のTCPデータパケットを分割する必要はありません。

イーサネットヘッダー IPヘッダー               TCPヘッダー               データ                                                    

 

udpプロトコル:

信頼性の低い伝送、「ヘッダー」部分は合計8バイトのみであり、全長は65,535バイトを超えず、IPデータパケットに入れられます。

イーサネットヘッダー IPヘッダー                      UDPヘッド                            データ                                           

 

tcpメッセージ

tcpハンドシェイク3回、ウェーブ4回

2.3.5アプリケーション層

アプリケーション層の起源:ユーザーがアプリケーションを使用し、すべてがアプリケーション層で動作し、インターネットが開発され、誰もが独自のアプリケーションを開発でき、データは多様であり、データ組織を指定する必要があります 

アプリケーション層関数:アプリケーションのデータ形式を指定します。

例:TCPプロトコルは、電子メール、WWW、FTPなどのさまざまなプログラムのデータを転送できます。次に、電子メール、Webページ、およびFTPデータの形式を規定するさまざまなプロトコルが必要であり、これらのアプリケーションプロトコルが「アプリケーション層」を構成します。

 

 ソケット

2つのプロセスが通信する必要がある場合、最も基本的な前提はプロセスを一意にマークできることです。ローカルプロセス通信では、PIDを使用してプロセスを一意にマークできますが、PIDはローカルでのみ一意であり、ネットワーク内の2つのプロセスPIDの競合が発生する可能性が非常に高いです。現時点では別の方法を見つける必要があります。IP層のIPアドレスはホストを一意に識別でき、TCP層のプロトコルとポート番号はホストのプロセスを一意に識別できるため、IPアドレス+プロトコル+ポート番号は、ネットワーク内のプロセスを一意に識別します。

ネットワーク内のプロセスを一意に識別できた後、ソケットを使用して通信できます。ソケットとは何ですか?私たちはしばしばソケットをソケットに変換します。ソケットは、アプリケーション層とトランスポート層の間の抽象化層です。それは、TCP / IP層の複雑な操作を、供給層がネットワークに実装されたプロセスを呼び出すためのいくつかの単純なインターフェースに抽象化します。中通信。

ソケットはUNIXを起源としています。ソケットはすべてがファイルであるというUnixの哲学のもとで、ソケットは「オープンリード/ライトクローズ」モードの実装です。サーバーとクライアントはそれぞれ「ファイル」を維持します。接続が確立されて開かれた後、相手が相手のコンテンツを読み取ったり読み取ったりできるように、コンテンツを自分のファイルに書き込み、通信が終了したらファイルを閉じます。

まとめ

要約図は次のとおりです。

 

データ転送図は次のとおりです。

3.ネットワーク通信

ネットワーク通信を実現するには、各ホストに4つの要素が必要です

  • このマシンのIPアドレス
  • サブネットマスク
  • ゲートウェイIPアドレス
  • DNS IPアドレス

これらの4つの要素を取得するには2つの方法があります

1.静的取得

手動設定

2.動的な取得

DHCP経由で取得

イーサネットヘッダー IPヘッダー UDPヘッド DHCPパケット

 

 

(1)最初の「イーサネットヘッダー」は、送信者(このマシン)のMACアドレスと受信者(DHCPサーバー)のMACアドレスを設定します。前者はローカルネットワークカードのMACアドレスで、後者は現時点ではわかりません。ブロードキャストアドレスを入力します:FF-FF-FF-FF-FF-FF。

 

(2)背面の「IPヘッダー」は、送信者のIPアドレスと受信者のIPアドレスを設定します。現時点では、マシンは両方を認識していません。したがって、送信者のIPアドレスは0.0.0.0に設定され、受信者のIPアドレスは255.255.255.255に設定されます。

 

(3)最後の「UDPヘッダー」は、送信側のポートと受信側のポートを設定します。この部分はDHCPプロトコルで指定されており、送信者はポート68、受信者はポート67です。

 

データパケットが作成された後、送信できます。イーサネットがブロードキャストされ、同じサブネット上のすべてのコンピューターがこのパケットを受信しました。レシーバーのMACアドレスはFF-FF-FF-FF-FF-FFであるため、誰に送信されたかはわかりません。したがって、このパケットを受信する各コンピューターは、このパケットのIPアドレスを分析して、それが自分のためではありません。送信者のIPアドレスが0.0.0.0で受信者が255.255.255.255の場合、DHCPサーバーは「このパケットが私に送信された」ことを認識しており、他のコンピューターはこのパケットを破棄できます。

 

次に、DHCPサーバーはこのパケットのデータ内容を読み取り、IPアドレスを割り当て、「DHCP応答」パケットを送り返します。この応答パケットの構造は似ています。イーサネットヘッダーのMACアドレスは、双方のネットワークカードアドレスです。IPヘッダーのIPアドレスは、DHCPサーバー(送信者)と255.255.255.255(受信者)のIPアドレスです。UDPヘッダーポートは67(送信側)と68(受信側)で、リクエスタに割り当てられたIPアドレスとこのネットワークの特定のパラメータがデータセクションに含まれています。

 

新しく参加したコンピューターはこの応答パケットを受信するため、IPアドレス、サブネットマスク、ゲートウェイアドレス、DNSサーバー、およびその他のパラメーターを認識しています。

4.ネットワーク通信プロセス

1.現地調達

  • このマシンのIPアドレス:192.168.1.100
  • サブネットマスク:255.255.255.0
  • ゲートウェイIPアドレス:192.168.1.1
  • DNS IPアドレス:8.8.8.8

2.ブラウザを開いてGoogleにアクセスしたい場合は、アドレスバーにURLを入力してください:www.google.com。

3.dnsプロトコル(udpプロトコルに基づく)

 

13ルートDNS:

A.root-servers.net198.41.0.4米国
B.root-servers.net192.228.79.201米国(IPv6もサポート
C.root-servers.net192.33.4.12フランス
D.root-servers.net128.8.10 .90 US
E.root-servers.net192.203.230.10 US
F.root-servers.net192.5.5.241 US(IPv6もサポート
G.root-servers.net192.112.36.4 US
H.root-servers。 net128.63.2.53 US(IPv6もサポート
I.root-servers.net192.36.148.17スウェーデン
J.root-servers.net192.58.128.30 US
K.root-servers.net193.0.14.129 UK(その他のサポートIPv6)
L.root-servers.net198.32.64.12 US
M.root-servers.net202.12.27.33日本(IPv6もサポート)

 

ドメイン名の定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

トップレベルドメイン名:.com、.net、.org、.cnなどは、国際トップレベルドメイン名に属します。現在の国際インターネットドメイン名システムによれば、国際トップレベルドメイン名は、カテゴリートップレベルドメイン名(gTLD)と地理的トップレベルドメイン名(ccTLD)の2つのカテゴリに分類されます。 )2。カテゴリトップレベルドメイン名は、「COM」、「NET」、「ORG」、「BIZ」、「INFO」などで終わるドメイン名であり、すべて外国企業によって管理されています。地理的トップレベルドメイン名は、国または市外局番で終わるドメイン名です。たとえば、中国の場合は「CN」、英国の場合は「UK」です。地理的なトップレベルドメイン名は、通常、さまざまな国または地域によって管理されています。

第2レベルドメイン名:第2レベルドメイン名は、トップレベルドメイン名に基づく地理的なドメイン名であり、中国の第2レベルドメインに類似しています。親ドメイン名のサブドメイン名は、親ドメイン名はabc.com、サブドメイン名はwww.abc.comまたは* .abc.comに類似しています。
一般的に、第2レベルドメイン名はドメイン名のレコードです。たとえば、alidiedie.comはドメイン名です。 www.alidiedie.comは、最も一般的に使用されるレコードの1つであり、通常はデフォルトで使用されますが、* .alidiedie.comのようなドメイン名はすべて、alidiedie.comの第2レベルと呼ばれます

 

 

4. HTTP部分の内容は次のようになります。

 

GET / HTTP / 1.1
Host:www.google.com
Connection:keep-alive
User-Agent:Mozilla / 5.0(Windows NT 6.1)……
Accept:text / html、application / xhtml + xml、application / xml; q = 0.9 、* / *; q = 0.8
Accept-Encoding:gzip、deflate、sdch
Accept-Language:zh-CN、zh; q = 0.8
Accept-Charset:GBK、utf-8; q = 0.7、*; q = 0.3
Cookie :……

 

この部分の長さは4960バイトであると想定し、TCPパケットに埋め込まれます。

 

5 TCPプロトコル

 

TCPデータパケットはポートを設定する必要があります。受信者(Google)のHTTPポートはデフォルトで80であり、送信者(ローカル)のポートはランダムに生成された1024から65535の整数で、51775と仮定しています。

TCPデータパケットのヘッダー長は20バイトで、HTTPに埋め込まれたデータパケットに加えて、合計長は4980バイトになります。

 

6 IPプロトコル

 

次に、TCPデータパケットがIPデータパケットに埋め込まれます。IPパケットは、双方のIPアドレスを設定する必要があります。これは既知です。送信者は192.168.1.100(ローカル)、受信者は172.1941.72.105(Google)です。

IPデータパケットのヘッダー長は20バイトで、埋め込みTCPデータパケットを加えた長さは5000バイトになります。

 

7イーサネットプロトコル

 

最後に、IPデータパケットはイーサネットデータパケットに埋め込まれます。イーサネットデータパケットは、双方のMACアドレスを設定する必要があります。送信者はローカルネットワークカードのMACアドレスであり、受信者はゲートウェイ192.168.1.1のMACアドレスです(ARPプロトコルを通じて取得)。

イーサネットデータパケットのデータ部分の最大長は1500バイトで、現在のIPデータパケットの長さは5000バイトです。したがって、IPデータパケットは4つのパケットに分割する必要があります。各パケットには独自のIPヘッダー(20バイト)があるため、4つのパケットのIPパケットの長さは、それぞれ1500、1500、1500、および560です。

 

 

8サーバー側の応答

 

複数のゲートウェイによって転送された後、Googleのサーバー172.194.72.105はこれら4つのイーサネットデータパケットを受信しました。

IPヘッダーのシリアル番号に従って、Googleは4つのパケットをまとめ、完全なTCPデータパケットを取り出し、「HTTPリクエスト」を読み取って「HTTPレスポンス」を作成し、TCPプロトコルを使用してそれを送り返します。

マシンはHTTP応答を受信すると、Webページを表示してネットワーク通信を完了できます。

おすすめ

転載: www.cnblogs.com/heirenxilou/p/12723015.html