KDOC 377: 『一日で読めてわかるTCP/IPのエッセンス』

この文書のステータス

  • 作成
    • 2025-05-11 貴島
  • レビュー
    • <署名>

概要

メモ

  • TCP/IPは実際に通信するネットワーク方式を定めていない。TCP/IPは特定のネットワーク方式に依存するプロトコルではない。ネットワーク方式に依存する要素はプロトコルに含まれていない(位置84)
  • TCP/IPは使用するアプリケーションの動作を定めない。アプリケーションやサービスを自由に実装するための基盤となる(位置84)
  • TCP/IPはイーサネットなどの実際のネットワークシステムとネットワークを使うアプリケーションの間に位置する。アプリケーションとネットワークはどウェアの間を取り持ち、汎用的な通信サービスを提供する(位置106)
    • アプリケーション → TCP/IP → ネットワークデバイスのデバイスドライバ → ネットワークハードウェア → ネットワーク
  • TCP/IPは複数のプロトコルから構成されるプロトコルスイート。IP, UDP, TCPを中心としていくつかの関連プロトコルを含む(位置106)
  • IPの役割は複雑に接続されたインターネット(ネットワークが相互に接続されたもの)において、接続されている個々の機器が任意の相手にデータを送れるようにすること。イーサネットや無線LANは1つのネットワーク内での通信を行えるが、そのままでは多数のネットワークを相互に接続できない(位置119)
  • ルーターは接続しているネットワークの間でデータの中継を行う機器。ルータを使ったインターネットでのデータ転送をサポートするプロトコルがIP。IPを使うことでイーサネットなどで構成されたネットワークどうしをルータで接続しデータを中継できる(位置119)
  • IPアドレスにはその機器が接続されているネットワークを識別する情報と機器そのものを識別する情報が含まれる。インターネットではIPアドレスを使って通信の相手を指定する(位置138)
  • IPはデータを機器に届けられるが、目的のプログラムを示せない。機器間の伝送までしかできない。この識別を行いプログラム間でのデータ転送を実現するのが伝送プロトコルのUDPとTCPの役割である(位置151)
  • UDPはプログラム間でデータをやり取りするためにデータにポート番号を付加するプロトコル(位置151)
  • TCPはポート番号を使って機器上のプログラムを識別する。そして2つのプログラムの間でデータを相互にやり取りする通信路を提供する。最初に通信相手を指定して明示的に接続処理し、以後はその相手とのみデータをやり取りする。明示的な接続関係のことをコネクションという。コネクションによって相手と自分の状態を共有し通信のエラー検出や対処をする(位置168)
  • ネットワークシステムは何段階にも機能を分け、組み合わせた形で構築されている。実際のネットワーク方式、伝送の制御、アプリケーション…。このようにすることでネットワーク方式やアプリケーションの自由度が高くなる(位置206)
  • OSIの7階層モデルは、TCP/IPを使うインターネットのネットワーク構成にはうまくあてはまらない。層の役割がアプリケーションの構造に対応しないため。TCP/IP階層モデルと呼ばれるモデルもある(位置223)
  • イーサネットによる通信は、MACアドレスを使い、各機器のインターフェース間で行われる。イーサネットの通信は1つのイーサネットネットワークの内部でしかできない(位置274)
  • ネットワーク方式ごとのフレーム中のデータサイズの上限値をMTUという(位置333)
  • IPアドレスはインターネットに接続された個々のノードを識別するための一意な32ビットの情報。表記がピリオドつなぎというだけ(位置400)
  • TCP/IPの特徴の1つに、1つのIPアドレスでネットワークとノードをまとめて表すという点がある(位置400)
  • アドレスの上位の、ネットワークを示す部分をネットワーク部、下位の、ノードを示す部分をホスト部という。IPアドレスのネットワーク部とホスト部を示すため、サブネットマスクという情報が使われる。ネットワーク部とマスク部の配分は自由なので必要である。ビットが1の部分がネットワーク部、0の部分がホスト部を表す(位置419)
  • ネットワーク部が異なるノードは別ネットワークに接続していると判断され、ルーターを介して通信する(位置435)
  • ホスト部のビットがすべて0のIPアドレスは、特定のノードを識別するためのアドレスではなく、ネットワークを識別するアドレスとして使われる(位置476)
  • 論理アドレスであるIPアドレスと、物理アドレスであるMACアドレス(位置569)
  • イーサネットでTCP/IPを使う場合、IPのレベルではIPアドレスで宛先や送信元を指定する。実際の通信はイーサネットを使うので、MACアドレスでノードを指定しなければならない。そのため通信を行うにはIPアドレスから対応するMACアドレスを求める作業が必要になる。そこでARP(アドレス解決プロトコル)を使いネットワークを使ってIPアドレスとMACアドレスの対応付けを行っている(位置587)
  • ARPキャッシュはどこに保存されるのだろうか
  • ネットワークの基本的な診断を行うpingコマンドはICMPエコー要求/応答要求機能を使っている(位置660)
  • CIDRはIPアドレスのネットワーク部のビット配分を階層的に扱い、多数のネットワーク宛のルーティングエントリを少数のエントリで代表して扱うというもの。電話番号の国番号や市外局番のように階層化されているようなもの(位置810)
  • IPアドレスはノードを識別するだけで、目的のプログラムを示せない(位置854)
  • UDPとTCPでは、UDPヘッダ、TCPヘッダの中にポート番号という情報が収められており、そのポート番号でコンピュータのプログラムを識別する(位置854)
  • 単純なデータ要求に対し、短い応答が返されて終わりというやり取りの場合、UDPのほうが効率的である。たとえばDNSによる名前解決にはUDPが多用されている(位置854)
  • UDPはTCPと異なり、特定の接続相手を定めない。一度に複数の宛先に伝送する場合はUDPを使う。UDPでデータを転送する場合、データグラムの送信ごとに宛先を指定する(位置854)
  • UDPはデータグラムに送信元ポート番号と宛先ポート番号を付加するプロトコルといえる(位置995)
  • TCPは常に特定の2つのプログラム間でのやりとりとなる(位置1058)
  • TCPの伝送では順序情報をやりとりすることでデータの順序や欠落の有無を確認する(位置1072)
  • あるサーバープログラムが複数のクライアントや同一クライアントの複数のプログラムに同時にサービスを提供する場合、サーバー側のIPアドレスとポート番号は同一である。が、クライアント側のIPアドレスとポート番号は異なるため、それぞれのコネクションを別のものとして区別できる(位置1103)
  • 2つのプログラム間で通信を行う際には伝送するデータの量を加減する処理が求められる。受信側が処理しきれないペースでデータを送ってしまうと受信側のバッファが溢れてデータが失われる。TCPはスロースタートという方法で輻輳の発生を抑えている(位置1252)

関連

なし。