ソケットの意味が全然理解出来ません

[上に] [前に] [次に]
テポドン富士丸 1999/12/28(火) 01:33:08
ソケットの意味が分かりません。
どなたかご教授下さい。

アスキーの辞典で検索すると

・一般にTCP/IPにおいて利用するネットワーク用のAPIを指す
と出ました。
APIが解らなかったので検索しました

・APIはosがアプリケーションに対して公開しているプログラムインターフェイスで
アプリケーションは基本的に全ての処理をこのAPIを経由して行う

ラウンジでも検索してみました
・TCP/IPでエンド・ポイントを与えるシステム・コール
と出ました。
エンドポイントもシステムコールも解らなかったので検索して・・・
っと本末転倒な方向になってしまいました。

どなたかソケットについてご教授下さい

テポドン富士丸 1999/12/28(火) 01:34:16
ちなみに赤ラクダ本には、意味の説明になるような
項目が見あたりませんでした(涙) ・ソケット

[E-Mail] [HomePage] 1999/12/28(火) 02:32:18
インターネット上のコンピュータは TCP/IP という言葉でお喋りを
します。その TCP/IP を聞いたり話したりする耳や口に相当する
のが Socket と考えたらどうでしょう。

B-Cus 1999/12/28(火) 02:35:19
ところで僕も API の意味がわからないんですけど、
これってライブラリルーチンのことですか? それともシステムコール?

使用例から推測するにシステムコールに近い概念だと思うんですが、
ライブラリルーチンを指してAPI と表現していることもあります。
どっちなんでしょうか。

> ・TCP/IPでエンド・ポイントを与えるシステム・コール
これは socket 関数の説明なので、概念としてのソケットとは別です。
# まぁ socket 関数で得られるのが、いわゆる「ソケット」なんですけど。

テポドン富士丸 1999/12/28(火) 02:42:01
>インターネット上のコンピュータは TCP/IP という言葉でお喋りを
>します。その TCP/IP を聞いたり話したりする耳や口に相当する
>のが Socket と考えたらどうでしょう。

なるほど、結構解りやすく取っつきやすい説明ですね。
これを足がかりに、もちょとあちらこちら検索してきます。

>これは socket 関数の説明なので、概念としてのソケットとは別です。
こういうのがPC用語? には多くて把握するまでの道のりが
長いんですよ。。 僕みたいなブームでPC始めた人間には
かなりきついです。

soketは関数でもあるのですね。 なるほど。。

B-Cus 1999/12/28(火) 03:05:21
要はネットワーク経由で、相手先とデータを
やりとりしたいわけです。ソケットはその手段。

> 耳や口に相当する
他の例えとして よく言われるのが、ソケットは電話機であると。

1. socket 関数で電話機 (ソケット) を与えられる。
2. connect 関数で相手側に電話をかける。
3. 繋がったら相手とお話しする
4. 終わったら close 関数で受話器をおろす。

# ほんとは2 と 3 の間に、bind で電話番号の割り当てを
# 受ける、ってのがある。

Syn [E-Mail] 1999/12/28(火) 10:04:45
API ってのはシステムコールとゆうよりはその実装ですね。
hoge.dll とゆうライブラリには foobar() とゆー API が
用意されている、ってな使いかたかなぁ。

# やや不安(^_^;

きたむら 1999/12/28(火) 13:31:19
そーいやAPIって言葉、あまり意味を考えずに使ってました。
Windowsだと、Win32APIがシステムコールに相当して、MAPIとかはライブラリなのかな?
#かなり自信なし

ソケットの意味は、利用者側とサーバー側でわけて考えるといいかもしれません。
サーバー側は、相手がいなくても、とりあえずソケットを開いて待機状態になれます。
利用者側は、待機中のサーバーのソケットがあれば、いつでも好きなときに接続できます。
それぞれ別個に動いているサーバー側と利用者側のプログラムを、上手に仲立ちする仕組みがソケットです。
……うーん、ますますわかりにくいかしらん。やっぱまず実際に使ってみるのがいちばんかも。

Joga 1999/12/28(火) 14:27:22
> ところで僕も API の意味がわからないんですけど、
> これってライブラリルーチンのことですか? それともシステムコール?

APIはOSが提供するとは限らないので、ASCIIの説明は正確でないです。
意味的には「システムコール」に近いと思いますが、もっと広い意味で使われ、
「アプリに対して、ある機能を提供するプログラム(のつなぎ目の仕様)」という感じでしょうか。
「システムコール」はOSが提供するものですね。

ソケットについては・・
電話機のたとえが一番わかりやすいかと。

B-Cus 1999/12/29(水) 05:23:28
元来「システムコール」と「ライブラリルーチン」と
いう用語が存在し、前者は
 「直接 OS に命令を出すための関数=OSへのインタフェイス」
後者は
 「それ以外の関数」
であると。

ここで Java の API 群を何て呼べばいいのかを考える。
これらは OS が提供しているわけではないので、
「システムコール」ではない。

じゃあ「ライブラリルーチン」と呼ぶのはどうかと言うと、
こっちは「インタフェイス」という意味合いが薄い。
# 例えば sprintf もライブラリルーチンなわけだが、
# これはインタフェイスとは呼び難い。

というわけで、どちらを使ってもしっくりこないので、
OS が提供しているかどうかに関わらず、
 「あるシステム (OS を含む) へのインタフェイス」
を指す「API」という用語が誕生した。

…と考えることにしました。

[上に] [前に] [次に]