ぽんこつエンジニアのブログ

PHP チョット デキル

GWのうちにWebの基本を復習しておく〜HTTPをざっくり1日目

HTTPってなんですか?

これ、意外とちゃんと答えられない人多いんじゃないですかね?実務の時はあまり気にせず使っていて、通常時はHTTPで個人情報とか送る時はHTTPS使ってやると暗号化されて安全に送れるんだよくらいに説明してるんじゃないですか?分からんことはまずググれとか言っちゃってたりして?

それも間違ってないけど、ビシッと答えられるとカッコいいもんです。新卒が入ってきて1ヶ月そろそろ研修も終わってOJT始まるのでここらで復習しとこうと思います。

HTTPとは

HTTPは、 「Hyper Text Transfer Protocol」の略です。

まずは新人ぽく「HTTP とは」とかぐぐってみたらこんな感じです。さすがGoogle先生、分かりやすいですね。

ようは「ハイパーテキストを転送するためのプロトコル(規約)」なわけです。ハイパーテキストとは何かというとHTMLやXMLなどが該当しますが、実際はそれ以外にも画像ファイルやJavaScriptCSSファイル、動画、PDFなどコンピュータで扱えるデータは大体HTTPで送れます。

Webでは、クライアント(PCやスマホガラケーなど)がこれらのデータが欲しいというリクエストをサーバに送り、それに対してサーバがレスポンス(HTMLや画像など)を返すというやりとりがされており、HTTPはそのやりとりをするためのルールといった感じでしょうか。

HTTPはTCP/IPをベースにしているので、次にそれらについてです。

TCP/IP

TCP/IPもよく聞く単語ですね。

先にTCP/IPにおける階層モデルですが以下のように分かれます。

アプリケーション層(HTTP,NTP,SSH,SMTP,DNS

実際にHTTPを実装するのがこの層の役割です。TCPで実装する場合はソケットというライブラリを使います。ソケットには接続、送信、受信、切断など基本的な通信機能を備えています。ソケット通信ってやつですね。

他にもFTPSMTPなどもこの層にあたります。

トランスポート層UDP,TCP

インターネット層で使用するIPは送信したデータが正しく送り先まで届けられたかは保証されません。そこで接続相手に対してコネクションを張りデータの抜け漏れをチェックするのがこの層の役目です。コネクションで転送するデータがどの層に渡るのか決定するのがポート番号で、HTTPではデフォルトでは80番を使用します。

インターネット層(IP)

ネットワークでデータを実際にやりとりする部分です。指定したIPアドレス宛てにパケット単位でデータのやりとりを行います。

ネットワークインタフェース層(イーサネット

物理的なケーブルやネットワークアダプタに該当します。

層ごとに抽象化して実装していれば別の層がどう実装されているかは気にしなくても良くなります。最も分かりやすいのはネットワークのところで、繋ぐときにWifi、有線、テザリング、どれを使っても同じようにChromeブラウジングが出来ていますよね。

まとめ

  • HTTPとはWeb上でHTMLやXML、画像や音声データなどを転送するためのルール
  • HTTPはTCP/IPをベースにしている
  • TCP/IP階層は4つに分かれ、アプリケーション層にはHTTP、トランスポート層にはTCP、インターネット層にはIPがそれぞれ該当する
  • IPはネットワークを使ってデータ送信するだけ、TCPはIPで送受信したデータの抜け漏れをチェック、HTTPはTCPから渡されたデータを受け取ったり別のリクエストを送信したりする

もう少し書く予定でしたが今日はここまで。明日続き書きます。