こんにちは。
プログラミングの勉強のために筑波大の講義「システムプログラミング」をやってみようと思います。
このエントリは完全な個人のメモです。
筑波大の講義ページはこちら。
お勉強のためにこの本を読んでいるので、内容を覚えるために内容を要約して説明するSummarizing(サマライジング)を行います。
正直、講義ページがすでにかなり簡潔にまとまっているのでほぼコピペになってしまう気もしています。
第5回の講義内容は以下。
TCP/IP
もっともメジャーな通信プロトコル。
インターネットで標準的に使用されている。
信頼性の高い双方向のストリームを提供するコネクション型プロトコル。
信頼性が高い
パケットが送信中に喪失した場合、受け手側が再送要求を送ることで送信側は喪失したパケットを再度送信する。
双方向
TCPで接続されたプロセスはどちらからでもデータを送受信できる。
UNIXのパイプなどは短方向。
コネクション型プロトコル
データを送信する前に送信先に接続要求を出して、応答があった場合にストリームを繋ぐ。
クライアントとサーバ
通信要求を出す方がクライアント、受ける方がサーバ。
IPアドレスとポート番号
TCP/IPで通信する先を特定するためにはIPアドレスとポート番号が必要。
IPアドレスで接続する機器を特定し、ポート番号で接続するアプリケーションを特定する。
クライアント・サーバ モデル
プロセス間通信のデザインパターンの1つ。
通信する2つのプロセスをクライアントとサーバに分ける。
クライアントはサーバに対して何かしらの要求を出す。
サーバはクライアントから要求を待ち、要求が届いたら応答を返す。
クライアントとサーバを分けることにより、プログラムが下の図のようにシンプルになる。
構造化
昔は「構造化」=「制御構造」だった。
最初期のプログラミングではgoto文やjump命令が多用されていたが、わかりやすい構造化されたgoto文やjump命令に対してifやreturn、continue、breakなどの特別な名前が割り当てられた。
TCP/IP通信するためのAPI
・socket()
・connect()
・getaddrinfo()
※筑波大講義では上記とは別の独自のAPIを使用するっぽい。
HTTP
TCP/IPより上位レイヤのプロトコル。
クライアントが出す要求やサーバからの応答のデータ形式を定めたもの。
HTTPの要求
要求メッセージは開始行、ヘッダ、ボディで構成される。
ヘッダ部とボディ部は空白行で分けられる。
ボディ部は省略可能。
HTTPの応答
応答メッセージはステータス行、ヘッダ、ボディで構成される。
ヘッダ部とボディ部は空白行で分けられる。
ボディ部は省略可能。
HTTPのメソッド
よく使われるメソッド。
・GET(データの要求)
・HEAD(ヘッダのみ要求)
・POST(データを渡す)
HTTPのステータス
大まかに200番台がOK、400番台、500番台がエラー。
DNS
IPアドレスとホスト名を変換するサービス。
まとめ
第6回の講義内容は以上です。
演習問題は別途やります。
正直私のメモ見るよりも講義ページを見るのが良いと思います。
非常に簡潔にまとまっていてわかりやすいです。
第7回の講義の内容はまた今度。
おわり。