- TCP
- すべてのアプリケーションが,自前で信頼性を確保するしくみを実装することは効率的ではありません.ほとんどのアプリケーションでは,送ったデータがきちんと相手に届くことが求められます.
信頼性を確保するしくみは,TCPというプロトコルとして決められています.インターネットで信頼性が必要な通信を行う場合は,このTCPが使われます.
図7は,アプリケーションソフトウェアがTCPソフトウェアを使って通信する様子です.まず,
- アプリケーションソフトウェアが通信を開始するときには,TCPソフトウェアに対して
「これからIPアドレス10.0.0.1,ポート番号1000で待機しているソフトと通信したいんだけど」
と要求を出します.
- するとTCPソフトウェアは,IPネットワークを使って通信相手のTCPソフトウェアに通信をしたいことを伝えます.
- 通信相手のTCPソフトウェアは,指定されたポート番号で待機しているソフトウェアがいなければ,通信を拒否します.
- 拒否されなかった場合は,信頼性を確保するための通信の準備を行います.このときデータに割り振る一連の番号の準備をします.
- 送信元とあて先で,最初に送られるデータに割り振られる番号の同期をとります.準備が完了したら,送りたいデータを実際に転送します.
- データには,前述した一連の番号が振られて,もし番号が抜けたり重複したら,エラーとみなして再送信の処理を行います.データが送り終わると,最後に通信の終了を送り先に通知します.
この一連の作業は,ちょうど人が電話をかけて用件を伝える作業に似ています.まず,1. 電話機に電話番号を入力して,2. 相手を呼び出し,3. 相手がいなければ電話を中止,4. 相手が出たらまずあいさつ,5. 用件を伝えて,6. 終わったら電話を切る,とあてはめることができます.
TCPによる通信は,相手に電話をつないで会話をする形と似ているため,接続型(コネクション型)通信と呼ばれます.また,電話番号を入力して相手を呼び出す作業を「接続する」(コネクションを張る)ともいいます.
〔図7〕TCPソフトウェアを使った通信の様子
|