読者です 読者をやめる 読者になる 読者になる

kkana's blog

新米コーダーの忘れそうなことメモ

読書メモ:webを支える技術(3)

TCP/IPについて

インターネットのネットワークプロトコルは階層型になっている

  • ネットワークインターフェイス
  • インターネット層
    パケット単位でデータのやりとり。IPが相当する部分。データ送り出すことは保証するが、送り先に辿り着いたかの保証はしない。
  • トランスポート層
    TCPが相当するところ。データの転送の保証をする。接続先の相手にコネクションを貼ってデータの抜け漏れがないかチェックする。 どのアプリケーションにデータが渡るか決めるのがポート番号。
  • アプリケーション層
    メールやDNSやHTTPを実現するところ。

ソケット・・・ネットワークのデータのやりとりを抽象化したAPI


ステートレス

HTTPはステートレスなプロトコル

ステートレス ←→ ステートフル

  • ステートレスでは・・  - アプリケーション状態を保持しない

    • クライアントのリクエストメッセージに必要な情報をすべて含める(自己記述的メッセージ)
    • サーバ側のシステムが単純になる
    • でも毎回必要な情報を送るので送信するデータ量が多くなる
    • ネットワークトラブルが起きたときにリクエストが処理されたかわからないので通信エラーへの対処が必要  
  • ステートフル

    • 代表的なものにFTPがある
    • クライアントの数がふえると同期するサーバも増やさなくてはいけなくて大変

アプリケーション状態・・セッション状態(ログインしてからログアウトするまで)のこと


HTTPのメソッド8個

HTTP入門

POSTとPUT

どっちでもリソースの作成ができる。でも、クライアントがURIを決めたいときはPUTが適しているが そのURIが存在しているか調べたり、クライアントが内部実装を熟知していないといけなかったりするので 特別な理由がない場合はPOSTでリソース生成をしたほうがよい

べき等

冪等 - Wikipedia 「ある操作を1回行っても複数回行っても結果が同じであること」

  • GET HEAD ・・・ べき等 で 安全(通信エラーが起こっても結果がかわらない)
  • PUT DELETE ・・・ べき等
  • POST ・・・べき等ではなく安全でもない

POSTの誤用に注意

GET PUT DELETE で実現できる機能はべき等と安全性が利用できるのでなるべくそれで実現する


ステータスコード

クライアントの挙動を左右するのでステータスコードの選択は重要。

ステータスコードは先頭の数字で分類されている

  • 1** 処理中(クライアントはリクエストを継続するか再送信)
  • 2** 成功
  • 3** リダイレクト(レスポンスメッセージの locationヘッダを見て新しいリソースに接続する)
  • 4** クライアントエラー
  • 5** サーバーエラー

認証

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)