記事のタイプが翻訳になるように再作成しました。
はじめに
ブータンでは、人々がお互いを知ると、通常、「あなたの体は良いと感じていますか?」という言葉で挨拶します。 日本では、状況に応じてお辞儀をすることができます。 オマーンでは、男性は通常、握手の後、鼻でお互いにキスします。 カンボジアとタイでは、祈りのように彼らは通常手をつないでいます。 これらはすべて通信プロトコルであり、情報の交換のために意味を持ち、両当事者を準備するコードの単純なシーケンスです。
インターネットには、情報交換のためにコンピューターを準備する非常に効果的なアプリケーション層プロトコルがあります: Hypertext Transfer ProtocolまたはHTTP。 HTTPは、 TCP / IP通信プロトコル上のアプリケーション層プロトコルです。 HTTPはWebデザインとWeb開発を研究するときに見落とされることがよくありますが、これは間違いです。HTTPを理解すると、ユーザーとやり取りする最適な方法を決定し、Webサイトのパフォーマンスを向上させ、インターネット上の情報を管理するための効果的なツールを作成できます。
これは、HTTPの基礎とそれを効果的に使用する方法を教えることを目的とした一連の記事の最初の記事です。 この記事では、インターネットエンジンでHTTPがどの段階で機能するかを説明します。
通信プロトコルとは何ですか?
詳細を掘り下げる前に、基本的な通信シナリオを見てみましょう。 情報を交換するには、双方(ソフトウェア、デバイス、人など)が以下を確立する必要があります。
- 構文(データおよびプログラムコード形式)
- セマンティクス(情報管理とエラー処理)
- タイミング(タイミングとシーケンスの一致)

2人が会うとき、彼らは通信プロトコルを使用します。たとえば、日本では、誰かと会うとき、人は身体に対して特定の行動をとります。 そのようなアクションの1つに、相互作用に使用される構文であるお辞儀があります 。 日本の伝統では、弓のジェスチャー(および他の多くのジェスチャー)は、誰かに挨拶する意味に関連付けられています。 その結果、ある人が別の人に頭を下げたとき、特定のタイミングでこれらの2人の間で一連のイベントが確立されます。
オンライン通信プロトコルは、同じ要素で構成されています。 構文は、プロトコルの記述に使用するキーワードのような一連の文字です。 セマンティクスはこれらの各単語に関連付けられた意味であり、結論として、タイミングは2つ以上のエンティティがこれらの単語を交換する順序です。
HTTPはメカニズムのどこに侵入しますか?
HTTP自体は他のプロトコルの上で動作します。 www.example.orgなどのWebサイトに接続する場合、ユーザーエージェントはTCP / IPプロトコルファミリを使用します。 1970年に設計されたTCP / IPモデルは、 4つの層で構成されています 。
- 物理デバイスへのアクセスを記述するネットワークアクセス層 (つまり、ネットワークカードを使用)
- データグラム内のデータの配置とデータのルーティングを記述するゲートウェイ -どのようにパックされるか(IP)
- データが発信元から最終宛先に配信される方法を記述するトランスポート層(TCP、UDP)
- 送信されたメッセージの意味または形式を記述するアプリケーション層(HTTP)
HTTPは、通信プロトコルの上にあるアプリケーション層プロトコルです。 これは覚えておくことが重要です。 モデルを独立したレベルに分割すると、すべてを書き直すことなく、プラットフォームの一部を開発するのに役立ちます。 たとえば、トランスポート層プロトコルであるTCPは、アプリケーション層プロトコルであるHTTPを変更することなく開発できます。 HTTPに関する最初の記事では、TCP / IPモデルで行われているように、レイヤーの分離に注意を払います。 HTTPは、HTTPメッセージを介して2つのソフトウェア間で情報を交換するように設計されています。 これらのメッセージを作成および設計する方法は、クライアント(ブラウザなど)とサーバー(Webサイト)および仲介者(プロキシサーバー)の両方にとって重要です。
サーバーに行きましょう
ポート80は、Webサーバーに接続するためのデフォルトのポートです。 コマンドラインを使用して、自分でWebサーバーに接続することができます。 コマンドプロンプトを開き、次のコマンドを使用してポート80でwww.opera.comへの接続を開きます。
telnet www.opera.com 80
次のような出力が得られるはずです。
Trying 195.189.143.147...
Connected to front.opera.com.
Escape character is '^]'.
Connection closed by foreign host.
端末が195.189.143.147にあるサーバーとの接続を確立しようとしていることがわかります。 他に何もしないと、サーバー自体が接続を閉じます。 他のポートや別の通信プロトコルを使用することもできますが、これらが最も一般的です。
HTTPについて少し話しましょう
もう一度サーバーに接続してみましょう。 コマンドプロンプトで次のメッセージを入力します。
telnet www.opera.com 80
接続が確立されたら、次のHTTPメッセージをすばやく入力して(接続が自動的に閉じる前に)、Enterキーを2回押します。
GET / HTTP/1.1
Host: www.opera.com
このメッセージの意味は次のとおりです。
- GET:情報が必要であること。
- /:取得したい情報がサイトのルートにあること。
- HTTP / 1.1:HTTPバージョン1.1を使用するもの。
- ホスト:特定のサイトにアクセスしようとしています。
- www.opera.com :サイト名はwww.opera.comです。
これで、サーバーが応答する番です。 次の行から開始して、ターミナルウィンドウにサイトのコンテンツが表示されます。
HTTP/1.1 200 OK
Date: Wed, 23 Nov 2011 19:41:37 GMT
Server: Apache
Content-Type: text/html; charset=utf-8
Set-Cookie: language=none; path=/; domain=www.opera.com; expires=Thu, 25-Aug-2011 19:41:38 GMT
Set-Cookie: language=en; path=/; domain=.opera.com; expires=Sat, 20-Nov-2021 19:41:38 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked
<!DOCTYPE html>
<html lang="en">
…
HTTP/1.1 200 OK
Date: Wed, 23 Nov 2011 19:41:37 GMT
Server: Apache
Content-Type: text/html; charset=utf-8
Set-Cookie: language=none; path=/; domain=www.opera.com; expires=Thu, 25-Aug-2011 19:41:38 GMT
Set-Cookie: language=en; path=/; domain=.opera.com; expires=Sat, 20-Nov-2021 19:41:38 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked
<!DOCTYPE html>
<html lang="en">
…
サーバーは次のように応答します。「HTTPバージョン1.1を使用しています。 リクエストは成功したため、200のコードで返信します。」 文字列Okはオプションであり、このコードが人々にとって意味があることを人々に説明するために存在します-この場合、すべてが正常であり、リクエストが正常に処理されたことを示します。 次に、一連のHTTPヘッダーが送信され、メッセージとは何か、どのように理解されるべきかを説明します。 その結果、サイトのルートにあるページのコンテンツが、行<!DOCTYPE html>で始まる応答に追加されます。 HTTPキーワードと応答コードのリストについては、次の記事で説明します。

まとめ
HTTPプロトコルを使用してWebサーバーと通信しました-可能な限り簡単です! 私たちはメッセージを(まさに手紙を書いたかのように)送信し、メッセージが理解されたという返信を受け取りました。 次回は、これらの見出しの一部が何を意味し、どのように使用できるかを詳しく見ていきます。