パチカンのしったか講座4 | ||
TCPのお仕事
下位プロトコルのIPは64Kバイト以上のデータは重量オーバーとなり送ることができません、
しかし上位プロトコルからTCPが受け取るデータが64Kバイト以上になるケースが当然発生します。
そこでTCP(送信側)はまずデータをパケット(小包)と呼ばれる小さなサイズに分割し、そして一つ一つに
宛先(ポート番号)を書き込み、さらに「通し番号」も書き込んで送信します。すると受信側は受け取ったパケットの
通し番号(受領書)を送り返してきます、送信側は受け取ったという返事(受領書)の無いパケットを再送信します、
送信側は全ての受領書が揃うまで再送信を繰り返します。そして受信側は通し番号をもとにしてパケットに
分割されてしまったデータを結合・復元して上位プロトコルに渡します。
このように受信側は受け取ったパケットの番号を返信し、送信側は返答がないパケットを再送信することで
通信の確実性を高めています。
またTCPはポートを使う事により複数の上位プロトコルを同時に扱う事が出来ます。あるアプリケーションの
ひとつのプロセスにはその都度一つのポートがOSによって割り振られます(ポートを開く)、そしてプロセスは
そのポートのみを使ってデータをやりとりします(同じポートを複数のプロセスが同時に使用することはありません)、
プロセスが終了するとポートは閉じます。
つまりIPアドレスではノード(コンピュータ)を指定していますがポート番号ではそのコンピュータの何という
アプリケーションとの通信かを指定しているのです、このおかげで「ベクター」でソフトをダウンロードしながら
同時にWebブラウズを行ってもそれぞれのデータが混ざってしまうこともありません。
ポート番号
0〜65535のポート番号のうち0〜1023は「Well Known Port」として特定のアプリケーションのために
予約されてます。Webサーバは80番、SMTPサーバは25番などです。
(その他)
Webページのリクエストならば宛名として送信先ポート80とパケットに書き込みます、この時差出人を表す
送信元ポートXXXXXも書き込んでおきます。(この使われたポート番号XXXXXは netstat
-an やツールで調べられます。Windows XPならば
相手のポート、IPアドレスが不明でもどのアプリケーションがそのポートを使っているのかまで調べることが
可能です。)
相手のWebサーバはポート80を常に開けてある(サーバプログラムは常時稼動中なのでポートは閉じません)
のでパケットはWebサーバ・プログラムに届きます、そしてWebサーバは宛先にXXXXXと書き込んだパッケットを
送り返してくれるのです。
図5のようにデータはパケット(小包)に分けられてからヘッダと呼ばれるものを付加されていきます。
TCPヘッダには送信元・送信先(宛先)ポート番号、シーケンス番号(通し番号)、その他(各種フラグ等・説明しません)が
書き込まれています。
IPヘッダには送信元・送信先IPアドレス、その他が書き込まれています。
Ethernetヘッダには送信元・送信先MACアドレス、それとエラーチェックのためのCRC(Cyclic Redundancy Check)が書き込まれます。
各階層では上位プロトコルから受け取ったパケットはデータとして扱い加工(処理)したりしません。
パケットをそのままデータとしてそれにヘッダやトレーラを付加していくだけです。イメージとしては
図6のように自分で作った封筒の中に保存するような感じです。
*なお、受信側では逆の作業となります。封筒を開封して中身を上位プロトコルに渡していきます。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||