kernek:"Network" (1) ネットワークの基礎中の基礎

Media Access Controlアドレスの略称。NIC(Network Interface Card)に固有に割り当てられている番号。各NICには個別のMACアドレスが割り当てられており、重複することはない(ことになっている)。48bit/6オクテットの2進数で構成されており、前半24bit/3オクテットがNICベンダーに割り当てられており、後半24bit/3オクテットがベンダーにより各NICに対して製造時に個別に割り当てられる。
前半のMACアドレスから製造ベンダーを確認することが可能(http://www.coffer.com/mac_find/)。

Internet Protocolアドレスの略称。ネットワーク機器に割り当てられるアドレス番号。IPv4では32bitの2進数で、IPv6では128bitの2進数でアドレスを表す。本来は2bitで構成されるアドレスだが、人間による管理の簡略化のため、8bitずつのオクテットで切り分けて10進数で表記されることが一般的(11000000101010000000000100000001→11000000.10101000.00000001.00000001→192.168.1.1)。

Internetにおいて標準的に使用されている通信プロトコルTCPはTransmission Control Protocolの略称。TCPとIPの2つの仕様により構成された通信規約(プロトコル)。IPプロトコルはデータの保証を行わない通信規約(=ストリーム型通信)であるが、IP上でTCPを用いることにより、データの欠損や順序の整合性を保証する仕組みを持ち、送信側と受信側がデータの送信と受信の状況を確認し合いながら通信を行う(=データグラム型通信)。

  • ICMP

Internet Control Message Protocolの略称。Pingなどのネットワークにおけるエラー制御や制御メッセージの転送に使用することを目的としたプロトコル。InternetにおいてはIPとICMPが一般的に使用されている。

  • Linux kernelでは、ネットワークを階層別に実装している。階層別に実装することにより、個別の階層における通信規約を変更しても柔軟に対応することが出来るというメリットがある。kernelにおいては、以下の4階層を実装している。
    • ネットワークドライバ:物理的な通信回線に対してデータを流すための仕様。主にNICデバイスドライバが担当する。(driver/net)
    • IP制御:IPプロトコルの制御を行う仕様。通信経路の選択やアドレスの管理を行う。(net/core)
    • TCP制御:TCPプロトコルの制御を行う仕様。経路選択や誤り検出、再送制御などの通信における信頼性の確保を行う。(net/ipv4)
    • VFS(Virtual File System):Linuxにおいてはネットワーク通信もファイルとして扱うため、アプリケーションとkernelの間はVFSファイルシステムが仲立ちする(fs)