HTTP
HTTP は、Hyper Text Transfer Protocol の略称です。この開発は、World Wide Web Consortium と Internet Engineering Task Force (IETF) との協力の成果であり、最終的に一連の RFC をリリースしました。RFC 1945 は HTTP/1.0 バージョンを定義しています。これらの中で最も有名なのは RFC 2616 です。 RFC 2616 は、現在一般的に使用されているバージョンである HTTP 1.1 を定義しています。
HTTP プロトコル (HyperText Transfer Protocol、ハイパーテキスト転送プロトコル) は、WWW サーバーからローカル ブラウザにハイパーテキストを転送するために使用される転送プロトコルです。これにより、ブラウザの効率が向上し、ネットワーク送信が削減されます。これにより、コンピュータがハイパーテキスト ドキュメントを正確かつ迅速に送信することが保証されるだけでなく、ドキュメントのどの部分が送信されるか、コンテンツのどの部分が最初に表示されるか (グラフィックの前のテキストなど) なども決定されます。
HTTP は、リクエストとレスポンスで構成されるアプリケーション層プロトコルであり、標準のクライアント/サーバー モデルです。 HTTP はステートレス プロトコルです。
TCP/IP プロトコル スタック内の位置
HTTP プロトコルは通常、TCP プロトコルの上に置かれ、場合によっては TLS または SSL プロトコル層の上に置かれます。 HTTPS と呼ばれることが多いです。次の図に示すように、
デフォルトの HTTP ポート番号は 80、HTTPS ポート番号は 443 です。
HTTP 要求応答モデル
HTTP プロトコルは常にクライアントからの要求を開始し、サーバーは応答を送り返します。以下の図を参照してください。
これにより、HTTP プロトコルの使用が制限され、クライアントが開始しない場合にサーバーがクライアントにメッセージをプッシュすることができなくなります。お願いです。 HTTP プロトコルはステートレス プロトコルであるため、このリクエストと同じクライアントの最後のリクエストの間には対応関係がありません。
HTTP リクエスト
クライアントからサーバーに送信されるリクエスト メッセージには、次の形式が含まれます。
Get リクエストの例
GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8
POST リクエストの例
POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley
パート 1: リクエスト行。最初の行はリクエスト タイプを示し、http1.1バージョン 。 パート 2: リクエスト ヘッダー、2 行目から 6 行目。 3 番目の部分: 空白行、7 行目の空白行。 パート 4: データの要求、8 行目。
HTTP レスポンス
通常の状況では、サーバーはクライアントから送信されたリクエストを受信して処理した後、HTTP レスポンス メッセージを返します。 HTTP レスポンスも 4 つの部分で構成されます
ステータス行
メッセージ ヘッダー
- #空の行と応答本文。
HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<!--body goes here--> ステータス行の最初の部分は、HTTP プロトコルのバージョン番号、ステータス コード、ステータス メッセージの 3 つの部分で構成されます。 メッセージ ヘッダーの 2 番目の部分: クライアントが使用する追加情報を記述するために使用されます。 空白行の 3 番目の部分: メッセージ ヘッダーの後の空白行は必須です。 の 4 番目の部分応答テキスト: サーバーはクライアントのテキスト メッセージを返します。
HTTP ステータス コードステータス コードは 3 桁の数字で構成されます。最初の数字は応答カテゴリを定義し、5 つのカテゴリに分類されます
ステータス | コメント |
##1xx
表示情報 -- リクエストが受信され、処理が継続されていることを示します。 |
|
2xx
成功 -- リクエストが正常に受信され、理解され、受け入れられたことを示します |
|
3xx
リダイレクト- - リクエストを完了するにはさらに操作を実行する必要があります |
|
4xx
クライアント エラー -- リクエストに構文エラーがあるか、リクエストを実行できません満たされました |
|
5xx
サーバー側エラー -- サーバーは法的要求を満たせませんでした |
|
プロセスとスレッド
プロセスの概念は、オペレーティング システムの構造の基礎です。 Multics の設計者がこの専門用語を初めて使用したのは 1960 年代で、宿題よりも一般的な用語です。プロセスの定義は以下の通りです。
プロセスはなぜ設計されるのですか?
さまざまなアクティビティを調整できるシステム ソフトウェアを設計するのは非常に困難です。
常に多数のジョブが実行されており、各ジョブには順番に実行する必要がある多くのステップが含まれているため、時間のシーケンスの組み合わせを分析することはできません。すべてのアクティビティを調整および協力するためのシステムレベルの方法が存在しない場合、プログラマは、オペレーティング システムによって制御される環境の理解に基づいて、独自のその場限りの方法を採用する必要があります。ただし、この方法は、時系列でまれにエラーが発生する場合にのみ発生するため、特にプログラミングにおける小さなエラーに対して非常に脆弱です。
これらのエラーをアプリケーション ソフトウェア エラーやハードウェア エラーと区別する必要があるため、診断が困難になる場合があります。エラーが発生した正確なシナリオを特定することが難しいため、エラーをタイムリーに検出することも原因を特定することも困難です。一般的に、このタイプのエラーの主な理由は次の 4 つです。
不正な同期
相互排除の失敗。
プログラムの動作が不確実である
デッドロック
これらの問題を解決するにはシステムが必要です レベルメソッドプロセッサ内のさまざまなプログラムの実行を監視します。プロセスの概念がその基礎となります。
したがって、このプロセスは 3 つの部分から構成されていると考えることができます。
実行できるプログラム
プログラムとはニーズ 関連データ
プログラムの実行コンテキスト
プロセスの作成
伝統的に、オペレーティング システムがプロセスを作成する方法プロセスはユーザーに悪影響を及ぼし、アプリケーションは透過的ですが、これは現代のオペレーティング システムでも一般的です。ただし、あるプロセスが別のプロセスの作成をトリガーできるようにすると便利です。
たとえば、プログラム プロセスは、アプリケーションによって生成されたデータを受け入れ、後の分析に適した形式にデータを編成する別のプロセスを生成できます。新しいプロセスはアプリケーションと並行して実行され、新しいデータが利用可能になるとアクティブ化されます。
このスキームは、アプリケーションの構築に非常に役立ちます。たとえば、サーバー プロセス (プリント サーバー、ファイル サーバーなど) は、処理するリクエストごとに新しいプロセスを生成できます。オペレーティング システムが別のプロセスからの明示的な要求に応じて新しいプロセスを生成するとき、このアクションはプロセス フォークと呼ばれます。
プロセスが別のプロセスをフォークする場合、前のプロセスは親プロセスと呼ばれ、生成されたプロセスは子プロセスと呼ばれます。一般的な状況では、関連するプロセスにはエージェント間の通信と協力が必要です。プログラマーにとって、コラボレーションは非常に困難な作業です。
スレッドとは
スレッドはプロセスの実行ストリームです。スレッドはシステム リソースを割り当てることはできません。プロセスの一部であり、プロセスよりも小さな独立した実行単位です。
プロセスとスレッドの関係
プロセスは土地 (システム リソース) を持つ家主のようなもので、スレッドはテナント (スレッド、ファーミング プロセスを実行する) のようなものです。各家主 (プロセス) には、動作するテナント (スレッド) が 1 つだけ必要です。
プロセス - リソース割り当ての最小単位で、比較的堅牢であり、クラッシュは通常、他のプロセスに影響を与えませんが、プロセスの切り替えはリソースを消費し、効率が低下します。
スレッド - プログラム実行の最小単位。独立したアドレス空間はありません。1 つのスレッドが停止するとプロセス全体が停止する可能性がありますが、リソースが節約され、スイッチング効率が高くなります。
PHP の一般的なプロセスとスレッド
関連する推奨事項:
AS3 と PHP の間で通信する 5 つの方法 (HTTP プロトコルに基づく)_PHP チュートリアル
## PHP と Linux プロセス間の通信 ##PHP の Http プロトコル ポスト リクエスト パラメーター、php プロトコル ポスト リクエスト_PHP チュートリアル
|