「パケット」という「小さなデータの固まり」でやり取りされるそうなのですが
どのような場合にパケット通信されているのでしょうか?
例えばイメージ例で考えてみると
hotmailなどでメール送信した場合でもパケット通信が、
「送信側」から「受信側」へと行われているのでしょうか?
全ての場合でパケット通信されていると思って構いません。
http://e-words.jp/w/E38391E382B1E38383E38388E9809AE4BFA1.html
大量のデータを小分けにしたモノを「パケット」と読んで、それを送受信することでメールしながらウェブを見ることが出来たり、一つのサイトに大勢の人(パソコン)が接続できたりすることが出来るのです。
(メールの通信の小分けされたパケットの途中にウェブ通信のパケットが割り込むという感じ)
おおざっぱに具体的にいうと、パケットの大きさはよく言われる「MTU」です。
それほど簡単なわけではありませんが、全てのデータはパケットに分解されて送受信されていると考えて問題ありません。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060404/234485/
世の中で一番使われているのはIPパケットと呼ばれるパケットで
http://www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan0...
の図みたいな構造をしています。ここの「以降はデータ部分」って書いてあるところにデータを細切れにして詰め込みます。
また、例にあげられているhotmailの場合でも必ず
送り側:データ送ったよ
受け取ったよ:受け側
送り側:次送ったよ
受け取ったよ:受け側
みたいな双方向の通信が(パケットで)行われているので、特殊な場合を除いて一方通行で送りっぱなしということは少ないですね。
(これらのやりとりはいくつかの階層でそれぞれ「なんやかんや」行われています)
ご回答ありがとうございます。
>それほど簡単なわけではありませんが、全てのデータはパケットに分解されて送受信されていると考えて問題ありません。
勉強の入り口として
十分な参考となるお話をありがとうございます。
大分と頭の中がスッキリしてきた感じがします!
送り側:データ送ったよ
受け取ったよ:受け側
送り側:次送ったよ
受け取ったよ:受け側
このやり取りが何度も行われていき
最終的にデータのやり取りが完了する、ということになるのですね。
「送ったよ」=「送信したよ」で終わるのではなく「送った」という情報に対して「受け取った」という情報を送り元に返しているということですよね。
でないと「送信側は、送信した。だけれども、相手にちゃんと届いたのか?という情報はわからなくなってしまうから」ということですよね。
ちょっと思ったんですが
hotmailでメール送信する場合を例にとると
[OK]
送信者が送信しました → 受信者が受信しました
[NG]
送信者が送信しました → 受信者が受信できません
という結果が返ってきた場合「宛先が存在しません。」のようなエラーが
返って来ることがありました。
これは「受け取った」という信号が返ってこなかったためにこのエラーが
返ってきているということなのでしょうか。
常にパケットでやりとりされています。
というか概念的な話をするとどんな通信でもデータは必ずパケット化されているとも言えます。
1バイト毎データを送ることを考えても1ビットが8個集まった塊をスタートビットとストップビットで挟んだパケットを送っていると考えることができます。
郵便でも封筒や箱に手紙や品物を入れてパケットとして送っています。葉書も一種のパケットですね。
インターネットの通信で(小さなデータの塊の)パケットを使っているのはバイト単位でデータをロスなくやり取りするためにはその前後に色々な仕組みを入れなければなりませんしデータの長さが違うとその都度その扱い方を変えなければなりません。なのでデータを一定の規格に従った取り扱いやすい塊(パケット)にしてやり取りしているのです。
そしてパケットを扱うソフトは規格化されたパケットを単なる荷物として扱い、パケットの中身については一切考えずに済ませます。パケットの中身は単に情報として1文字しか入っていないこともありますし、パケットに入りきらない場合は幾つかのパケットに分けて送ります。
こうすることによって色々な用途に同じ仕組みを使うことができます。さらに別の仕組み(プロトコル)をパケットの荷物として入れて別の仕組みで通信できているように見せること(カプセル化)もできます。
http://www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan0...
ご回答ありがとうございます。
>1バイト毎データを送ることを考えても1ビットが8個集まった塊をスタートビットとストップビットで挟んだパケットを送っていると考えることができます。
ここが少し疑問だったのですが「8ビット+スタートビット+ストップビット」ということは、
1バイト毎データを送る場合は10ビット単位でパケット送信を行っていく、ということになるのでしょうか?
>パケットの中身については一切考えずに済ませます。
データの中身まで考慮していくと、共通した通信プロトコルの実現が難しいからでしょうか。
例えば長さだと、長さが1の時がどうだ、2の時がどうだ、3の時がどうだ、という風に長さが変動する度に
扱い方法を考えなければならない。
その手間を省くために「パケットのある部分の情報が一致していれば、その内容を相手に送りましょう」という風に規定しておくことで「長さについて、一つ一つ扱い分けをしなくても良くなる」ということですよね。
思ったのですけれども
これって他の規約に対しても言えるものなのでしょうか?
勉強を進めていくうちに「プロトコル、規約」という言葉を良く耳にするのですが
プロトコルって、強引に言ってしまえば「何か手段をとる際に、一つ一つ物事を決めていっていたのではラチが空かないので、それなら、予め“その何かをする際にはお互いが認識するための手順を規定しておきましょう”。ということなのでしょうか。(この場合だと通信を行う為に、一つ一つ物事を決めていったのではラチがあかないので、しかも普段から良く使うものでもあるのでルール化しておきましょうと。)
そういういことなのでしょうか?
(すみません、ちょっと色々考えるところがあって長くなってしまいました)
OSI参照モデルの基礎としてはパケットではなく
データ→セグメント→パケット→フレーム→ビット列
とカプセル化して通信していることになります。
ご回答ありがとうございます。
>ttp://e-words.jp/w/MTU.html
通信の流れが分ってきたと思います。
通信の流れとしては
「MTUの数値に従ってデータを分割する。分割したデータが一つ一つ宛先に送られていき、最後までデータが贈られた時点で送信が完了する。」
ということですよね。
[MTU]では
EhterNetでは1500程度
電話回線によるダイヤルアップ接続だと、576程度が最適とされている
ttp://e-words.jp/w/MTU.html
とあったのですが
この1500や576という数値が「データ分割の基準となる数値」ということだと思われるのですが、
ここで出ている"1500"や"576"の数値を表す単位は、バイトになるのでしょうか?
今私の頭にあるイメージとしては、
「1500で設定した場合、1500byte 単位でパケットを送信しましょう。」感じなのですが・・・