詳解TCP/IP

ネットワークソフトウェア特論の課題の件でとりあえず読んでおくことにする。以下自分用のメモ。
第1章 イントロダクション

  • TCPレイヤ以降はOSのカーネルとして実装される
  • 複数のインターフェースを持つシステムのことをマルチホームとよぶ
  • アプリケーション・データ=アプリケーションヘッダ+ユーザーデータ
  • TCPセグメント=TCPヘッダ+アプリケーション・データ
  • IPデータグラム=IPヘッダ+TCPセグメント
  • Ethernetフレーム=Ethernetヘッダ+IPデータグラム
  • ヘッダに上位プロトコルの識別子が格納され、上位層が決定される。これをデマルチプレクスという。
  • クライアントサーバーモデルには、反復サーバーと並行サーバーがあり、並行サーバーはクライアントからの要求が来ると、新しいプロセスを生成して処理をする。反復サーバーは生成しない。(Oracleでは反復サーバーのことを専用サーバーといっていた。)
  • 1023までがwell-known ports。5000までがephemaral portsとよばれるクライアント用のテンポラリ的に使用するポート番号(Soralisは例外)またReserved portsというものもある(詳細は不明。superuser privilegesで使用するらしい)
  • RFCの記述があるが、古い。Internet Official Protocol StandardsはRFC3700。Assigned NumbersはRFC3232でan On-line DatabaseによってReplaceされている。

第2章 リンク層

  • SLIP(Serial Line IP)とは、Ethernetではなくシリアル回線上で使う簡単なプロトコルで、IPデータグラムの先頭と終端にENDという特別なキャラクタを付加して通信する。タイプがフィールド上に存在しないため、複数の上位プロトコルを同時に使用することができない。
  • CSLIPはSLIPの圧縮版である。IPヘッダの圧縮を行うことができる。
  • PPP(Point to Point Protocol)はSLIPにCRCとタイプを付加している。タイプを持っているので複数の上位プロトコルを同時に使用することができる。
  • IEEE802.3(Ethernet)のMTU(MaxTransmissionUnit)は1492バイト。Hyperchannelは65535、IBMトークンリングは17914など、トークンリング系は長い傾向にある。データ量が大きい場合、このMTUに合わせるために分割することをフラグメンテーションとよぶ。
  • ホスト間の伝送経路上で異なるMTUのリンクが複数使用されていた場合、そのうち最小のMTUがその伝送経路上のMTUになる。このMTUをとくに PathMTUという。コネクションレス通信の場合、経路は常に一定でないためMTUも一定ではないことに注意。

第3章 IP:インターネットプロトコル

  • ネットワーク上のバイトオーダーはビッグエンディアンのように先頭から順番になっている。これをネットワークバイトオーダーという。よって、リトルエンディアンの場合は変換が必要なので、Intel系は変換が必要になる。