この記事では、ネットワーク プログラミングについて説明します

ネットワークプログラミング

ウェブプログラミングとは:

ネットワーク相互通信を実現するプログラムを実行している異なるコンピューター間でデータを交換するために使用されるプログラミングです。

ネットワーク モデル

OSI (モデル): 7 層プロトコル

アプリケーション層: 例: HTTP プロトコルは主にデータをパッケージ化する方法を解決し、通信に使用されるアプリケーション プログラムとメッセージ伝送に使用される基盤となるネットワークはインターフェイスを提供し、共通のネットワーク アプリケーション サービスを提供します。
プレゼンテーション レイヤー: Linux はパッケージを Windows に送信しますが、2 つのシステムの構文に一貫性がありません. インストール パッケージと同様に、Linux では exe を使用できず、Windows ではシェルを直接実行できません。したがって、異なるシステム間の通信文法の問題を解決するには、プレゼンテーション層が必要です。
セッション層:自動送受信パケット、自動アドレッシング機能を確立する。セッション層の役割は、アプリケーション間の通信を確立および管理し、TCP を自動的に呼び出してパッケージ化することです。
トランスポート層: 例: TCP プロトコルは、多数のファイルを転送する際の精度を保証します。したがって、送信されるデータはカプセル化されます。宅急便と同じように、1通ずつ送ってください。
ネットワーク層: たとえば、IP プロトコルは、ルーター、スイッチ、およびアドレッシング機能を備えたデバイスによって実装される機能です。この層は、IP アドレスによってアドレス指定される IP アドレスを定義します。だからIPプロトコルが生まれた
データリンク層: 電波やその他のメディアを介した伝送。次に、過去に送信されたビット ストリームが正しく、誤り訂正機能を備えていることも確認する必要があります。
物理層:主に、ネットワークケーブルのインターフェースタイプ、光ファイバーのインターフェースタイプ、さまざまな伝送メディアの伝送速度など、物理機器の標準を定義します。その主な機能は、ビットストリームを送信することです。

TCP 5 層モデル

画像

TCP/IP プロトコルのアプリケーション層は、7 層モデルの第 5 層、第 6 層、および第 7 層の機能を処理します。TCP/IP プロトコルのトランスポート層は、トランスポート層でのデータ パケットの信頼できる伝送を常に保証できるわけではありませんが、7 層モデルでは可能です。TCP/IP プロトコルは、UDP (User Datagram Protocol) と呼ばれる代替手段も提供します。UDP は信頼できるパケット配信を保証しません

HTTP (ハイパーテキスト転送プロトコル)

これは、リクエストおよびレスポンス モードに基づくステートレスなアプリケーション レイヤ プロトコルであり、多くの場合、TCP 接続モードに基づいています。

HTTP リクエスト

これは、要求行、メッセージ ヘッダー、および要求本文の 3 つの部分で構成されます。

リクエストライン

Method Request-URI HTTP-Version (スペースで区切られた 3 つの部分)

の:

メソッドはリクエストメソッドを示します
      GET Request-URI で識別されるリソースを取得するためのリクエスト
      POST Request-URI で識別されるリソースの後に新しいデータを追加します (GET リクエストは自作の
                  データを quary_string に入れることが多く、POST リクエストはカスタムデータを body に入れることがよくあります Middle ) 
      HEAD Request-URI によって識別されるリソースの応答メッセージ ヘッダーを取得するための要求 PUT リソースを
      格納し、その識別子として Request-URI を使用するようにサーバーに要求する
      DELETE Request-URI によって識別されるリソースを削除するようにサーバーに要求する
      TRACE サーバーに要求する受信したリクエストを送り返す 情報は主にテストまたは診断に使用される
      CONNECT
      サーバーのパフォーマンスを照会するため、またはリソース関連のオプションと要件を照会するための OPTIONS リクエストの将来の使用のために予約されている
Request
-URI は統一リソース識別子です
      。リクエストのアドレス
HTTP-Version は、リクエストされた HTTP プロトコル バージョンを示します。
現在、それらのほとんどは
1.1

メッセージヘッダー (ヘッダー)

いくつかのキーと値のペア。各キーと値のペアは 1 行を占め、各キーと値の間で使用します: 分割

リクエストボディ

通常、GET リクエストには本体がありませんが、POST リクエストには本体があります。

HTTP 応答形式

HTTP 応答も、ステータス行、メッセージ ヘッダー、および応答本文の 3 つの部分で構成されます。

ステータスライン

HTTP-Version は、サーバーの HTTP プロトコルのバージョンを示します。

Status-Code は、サーバーから返された応答ステータス コードを示します。

Reason-Phrase は、ステータス コードのテキストによる説明を表します。

ステータス コード: 1xx: 指示 – 要求が受信され、処理を続行することを示します; 2xx: 成功 – 要求が正常に受信され、理解され、受け入れられたことを示します; 3xx: リダイレクト – 要求を完了するには、さらに操作を実行する必要があります; 4xx: クライアント エラー – 要求に構文エラーがあるか、要求を実行できません; 5xx: サーバー側エラー – サーバーが正当な要求を実行できませんでした。

メッセージヘッダー (ヘッダー)

これもキーと値のペアのセットであり、各キーと値のペアは各キーと値の間で 1 行を占めます。

Content-Type:ボディのデータ形式の種類を記述する Content-Length:ボディのデータ長(Byte)を記述する Host:アクセスしたホスト名(ドメイン名/IP)を記述する Referer:現在のページがどのページかを記述するfrom Jumped over; Cookie: ブラウザのローカル ストレージ機能の 1 つである文字列には、多くの場合、「ID 識別子」(セッション ID) と呼ばれる情報が含まれます; セッション: サーバーによって維持されるデータ構造で、ユーザーの ID 情報を記録します。セッション ID は、セッション オブジェクトの一意の ID, セッション ID はブラウザに保存されます. ブラウザがその後サーバーにアクセスするとき, サーバーは現在のリクエストを送信したユーザーを認識できるように, セッション ID を自動的に保持します.

ユーザー エージェント: ウェブサイト サーバーに、訪問者がリクエストに使用するツール、携帯電話かコンピューターかなどを伝えます。

レスポンスボディ(ボディ)

応答にはさまざまな種類のテキスト形式もあります。たとえば、html、css、javascript、画像データ、json データなどです。

よく使われるコマンド (強調)

ping、ipconfig、telnet

ローカル マシン アドレス (強調)

127.0.0.1 は、自分のコンピューター ホストを表します

localhost はこのマシンを表します

ポート

プロセスを識別するために使用される論理アドレス。異なるプロセス ポートは異なります。

netstat -ano

たとえば、QQ、WeChat は、ip: ポートを介して対応する友人のコンピューターにデータを送信します。

QQ ポート 10.1.1.2:1010

WeChat ポート 10.1.1.2:10080

TCP および UDP (強調)

2 つの一般的なプロトコル:

UDP: データ ソースと宛先をデータ パケットにカプセル化します。接続を確立する必要はありません。

各パケットのサイズには制限があります

接続を確立する必要がないため、セキュリティは劣りますが、速度は高速です

アプリケーション シナリオ:

ゲーム

TCP: データを送信するためのチャネルを形成するための接続を確立し、スリーウェイ ハンドシェイクを介してデータを送信します。高セキュリティ、低効率

ソケット

ソケットはネットワーク プログラミングによって提供されるメカニズムです. 通信の両端にはソケットが必要です. ネットワーク通信は実際にはソケット間の通信です. データはソケット間の io ストリームで通信されます.

TCP通信

サーバ

クライアント

 

おすすめ

転載: blog.csdn.net/m0_71956038/article/details/128141238