おれ、エンジニアになるよ。

エンジニア志望の大学生だった若造がISUCON7を通して見事就職した後、今度は一人前のエンジニアになることを目指す成長物語

「プロになるためのWeb技術入門」を読んで 〜HTTP〜

先ほどコンサル会社の2dayインターンシップを終えました。

ナメてかかったわけではないですが、予想以上に頭使いました。

ぼくのザコ脳内メモリでは荷が重すぎたみたいですww

 

 

んじゃあ、早速「HTTP」について。

 

HTTPとは通信プロトコルの一つで、「情報の伝達方法」と「情報の意味付け」を規定するものでしたね。

 

では、どうやって情報を届けるのか。

 

IPアドレス

を使うんやと。

192.168.0.1 ←これ

人間世界と同じ、住所ってことですな。

 

このIPアドレスがわかると宛先のホストが特定できて、そいつに情報届けることができるらしい。

その役割は

TCP/IP

っていうプロトコルがやってくれるんやと。

情報をパケットという小さな単位に分割して送受信している。

郵便屋さんみたいなやつやね。

 

ん、待てよ。

URLも住所だよな。

URLとIPアドレス、どっち使えばええねん!

 

 

DNS

Domain Name System

ほうほう、こいつが打ち込んだURLをIPアドレスに変換しているらしい。

 

クライアント:「www.dirty.jpのIPアドレス教えてくれや」

DNSサーバ:「187.149.198.45や。覚えときや。」

 

こんな風に問い合わせることもできるらしい。

 

しかし、ここで終わらないのがインターネットの奥深さ。

 

 

「ポート」

郵便屋さんのTCP/IPは受信した情報がどのようなプロトコルか、どのアプリケーションが処理すべきわからないんだって。(なんだよ、ただ届けるだけかよw)

そこでこの「ポート」、港を使って情報を待つんだと。

Aは第一港、Bは第二港みたいに、その情報がどのプロトコルかを識別しているわけやな。

ちなみにHTTPはポート番号80で、SSHは22らしい。(SSH、22はどこかで使った記憶が....)

 

だから正確な書き方としては

 

www.dirty.jp:80

187.149.198.45:80

 

になるんだけど「:80」は省略されるって。

 

 

最後に

「GET」と「POST」

 

これは情報の渡し方、パラメータの渡し方の違い。

 

ん、「パラメータ」ってなんぞや.....。

 

例えば、

http://www.dirty.jp/unko/brown.php?num1=10&num2=20

がある。(入力欄に10と20を入れている)

 

パラメータはこれで言う、「num1」と「num2」。

 

「10」と「20」は値。

 

「?」以下をクエリ文字列と言って、「パラメータ名=値」の形式で表されている。

 

おっけ、パラメータ分かった!www

 

 

話を戻すと、

http://www.dirty.jp/unko/brown.php?num1=10&num2=20

はGETでの渡し方。

 

POSTはと言うと、

http://www.dirty.jp/unko/brown.php

になる。

 

お、クエリ文字列がないやんけ。

 

なぜか。

 

答えは「セキュリティ」の問題。

アカウント作るときにユーザ情報を入力するでしょ。

それって個人情報やん。

パラメータとしてそれがURLに出てきちゃったらマズいよねって話。

だからGETとPOSTはちゃんと使い分けよう。

 

まとめるとこう。

 

「GETリクエスト」

・メソッド:GETメソッド

・パラメータの格納場所:URL

・セキュリティ:低い(サーバにログが残る)

・パラメータの長さ:制限の可能性あり

・パラメータの保存・再現:しやすい

 

「POSTリクエスト」

・メソッド:POSTメソッド

・パラメータの格納場所:メッセージ・ボディ

・セキュリティ:比較的高い(サーバにログが残らないことが多い)

・パラメータの長さ:制限なし

・パラメータの保存・再現:しにくい

 

 

ざっとこんな感じ。

 

 

 

ではでは、今日はこの辺で。