Webフレームワークの基本構造とHTTPプロトコルの仕組み

Webフレームワークの基盤

Webフレームワークの本質

import socket

server = socket.socket()
server.bind(("localhost", 8080))
server.listen(5)

while True:
    client, address = server.accept()
    request = client.recv(4096)
    response = b"HTTP/1.1 200 OK\r\n\r\nHello Web"
    client.send(response)
    client.close()

この基本的なソケット実装がWebサーバーの核心であり、実際のWebフレームワークはこの構造を拡張したものです。

ブラウザリクエストの解析

import socket

web_server = socket.socket()
web_server.bind(("0.0.0.0", 8080))
web_server.listen()

while True:
    conn, addr = web_server.accept()
    http_request = conn.recv(8192)
    print("Received request:\n", http_request.decode())
    conn.send(b"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nRequest received")
    conn.close()

実行結果例:

GET / HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml
Accept-Language: ja-JP
Connection: keep-alive

HTTPプロトコルの詳細

プロトコル概要

HTTPはクライアント-サーバー間の通信規格で、TCP/IP上で動作します。デフォルトポート80番を使用し、リクエスト-レスポンスモデルに基づきます。

HTTP動作フロー

  1. クライアントがサーバーにTCP接続を確立
  2. HTTPリクエストの送信(メソッド、URL、ヘッダを含む)
  3. サーバーがリソースを処理しHTTPレスポンスを生成
  4. 接続終了(Close)または維持(Keep-Alive)
  5. クライアントがレスポンス内容を解釈・表示

主要リクエストメソッド

  • GET:リソース取得
  • POST:データ送信
  • PUT:リソース更新
  • DELETE:リソース削除
  • HEAD:ヘッダ情報のみ取得

HTTPステータスコード分類

  • 1xx:情報処理中
  • 2xx:成功応答
  • 3xx:リダイレクト
  • 4xx:クライアントエラー
  • 5xx:サーバーエラー

URL構成要素

https://example.com:443/path/to/resource?param=value#section
  • スキーム:https
  • ホスト:example.com
  • ポート:443
  • パス:/path/to/resource
  • クエリ:param=value
  • フラグメント:section

HTTPとHTTPSの相違点

特性HTTPHTTPS
暗号化なしTLS/SSL
ポート番号80443
証明書不要必須
パフォーマンス高速オーバーヘッドあり

タグ: Webフレームワーク HTTPプロトコル ソケットプログラミング HTTPS ネットワーク通信

5月23日 03:50 投稿