• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

Linuxカーネルの基本機能

第12回 ソケット・インタフェース

ライター 安井 卓 2008/05/26 日経Linux
出典:日経Linux 2004年8月号123ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります)
目次一覧

 前回,Linuxがハードウエアを制御するデバイス・ドライバについて解説しました。そこでは,Linuxがハードウエアを抽象化する3つのデバイス・モデルのうち,ブロック・デバイスとキャラクタ・デバイスについて紹介しました。

 しかし,もう一つのネットワーク・デバイスには触れませんでした。それは,ネットワーク・デバイスは,カーネルのネットワーク機能に密接にかかわっており,他の2つのデバイス・タイプとは異なる部分が多いためです。

 Linuxカーネルは,インターネットなどで使われる通信プロトコルであるIP(Internet Protocol)をはじめ,AppleTalkやIPXといったさまざまなプロトコルに対応したネットワーク機能を持っています。物理的な接続規格についても,一般的に使われているイーサネットのほか,さまざまな規格に対応しています。

 今回から,Linuxのネットワーク機能と,ネットワーク・デバイスの取り扱いについて解説します。なお,前述の通りLinuxは多くのネットワーク・プロトコルに対応していますが,本記事ではTCP/IPを利用する場合を中心に解説していきます。

プロセスはソケットを介して通信

 まずは,Linuxで稼働するユーザー・プロセスがどのように通信を実現するのか,その仕組みを見てみましょう。

 LinuxなどのUNIX系OSは,各種デバイスの入出力インタフェースを「デバイス・ファイル」という形で提供します。これを利用することで,ユーザー・プロセスは,一般のファイルを読み書きするのと変わらない手順で周辺機器をコントロールできます。具体的には,open()システム・コールでデバイス・ファイルに対応する「ファイル記述子」を取得し,それを使って周辺機器を特定してread()やwrite()などのシステム・コールでアクセスします。

 ネットワークでの通信プロトコルも,ファイルと同じように統一的にアクセスできるようにするのが効率的です。

 しかし,通信プロトコルは複雑なため,「ファイル」という概念をそのまま適用するのには無理があります。UNIXにおけるファイルは,固定長のデータが連続して記録されているもの(バイト・ストリーム・データ)と定義されていて,ファイルを操作するシステム・コールもそれを前提に設計されています。しかし,通信プロトコルでは可変長のデータを取り扱うことも多く,ファイル操作用のシステム・コールをそのままでは利用できません。

 また,通信の場合には,データをやり取りする相手がファイルやデバイスではなく,他のプロセスになるのが普通です。しかも,相互のプロセスには親子関係があることを期待できませんし,異なるシステムで動作するプロセスということも考えられます。そのため,データをやり取りする相手を特定する仕組みにも拡張が必要です。

 そこで,UNIX系OSでは従来のファイル・インタフェースを拡張した,「ソケット」(socket)というインタフェースを通信に利用しています。ソケットは「受け口」とか「ろうそく差し」を意味する言葉です。その言葉の通り,ユーザー・プロセスは,お互いのソケットをネットワークを通して接続し,その口を通して通信を実現します(図1)。

図1●ソケットを通した通信
図1●ソケットを通した通信
プロセスはソケットを通して他のプロセスと通信できます。ソケットはネットワーク越しでも同じように利用できます。

 なお,UNIXのプロセス間通信についてはソケット以外にもいくつかの手段があります。それについては,別掲記事「プロセス間通信とソケット」を参照してください。

ここから先はITpro会員(無料)の登録が必要です。

次ページ カーネルのネットワーク機能
  • 1
  • 2
  • 3
  • 4

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

  • 【ニュース解説】

    メルカリの個人情報流出、陥った「no-cache」の罠

     フリーマーケットサービスのメルカリで個人情報が流出する事故が起こった。iOS/Androidアプリ版ではなくWebアプリ版で発生。あるユーザーが自分の情報を表示しようとすると、他のユーザーの情報が表示されてしまうというものだ。いったい何が起こったかを解説する。

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る