ネットワークって。。。#19(TCPとUDP)
今回から、第6章に入ります。
今までは、ネットワークって。。。#4で述べたレイヤでいうところのレイヤ1(物理層)、レイヤ2(データリンク層)、レイヤ3(ネットワーク層)について書いてきましたが、今回からしばらくは、レイヤ4(トランスポート層)の話になります。
トランスポート層の役割
TCP/IPには、TCPとUDPという2つのトランスポートプロトコルがあって、TCPは信頼性のある通信、UDPは信頼性がなく、同報通信などで使われます。
トランスポート層とは
トランスポート層は、下位層(レイヤ3:ネットワーク層)からTCPかUDPか指定されて、送られてきたデータを見て、更に上位層(レイヤ5:セッション層)のどこに送るかを判断し、送るという役割を果たします。
例えば、手紙。。。
届いた手紙を受け取った家の人は、宛名を見て、家族の誰かを判断し、その人に渡しますよね、
そんな感じです。。。
通信の処理
で、上位層のどこに送るかを判断するのが、ポート番号になります。
ポート番号については、ネットワークって。。。#2とネットワークって。。。#5で軽く触れました。
httpが80番で、メール送信が25番で。。。
ってやつです。
TCP/IPのアプリケーションプロトコルは、一般的にクライアント/サーバモデルで作られています。
サーバはサービス提供者、クライアントはサービス利用者(お客さん)を意味します。
サーバ側のアプリケーションはあらかじめ起動されていて、クライアントアプリケーションからの応答を待っていなければいけません。
例えば、今ご覧のこのページ。。。
はてなブログのWebサーバが起動されていないと、このページは見る事ができません。
レストランが開いていないと、お客さんは、レストランに入って食事をできないのと一緒です。。。多分笑
サーバ側のアプリケーションは、UNIXの世界では、デーモンと呼ばれます。
いや、違います。。。笑
いやいや、もっとちゃいます。。。笑
例えば、Webサーバは、httpd(httpデーモンっていいます)というサーバアプリケーションが動いています。
ftp(ファイル転送プロトコルは)はftpd(ftpデーモン)、ssh(セキュアシェル)はsshd(sshデーモン)が動いています。
ただ、ftpdとか、sshdとかが、常に動いていると、サーバに負荷がかかったりするという事もあり、UNIXでは、デーモン起動の為のデーモンとしてinetdっていうのがあります。
inetdは、クライアントから要求があった時にだけ、該当のデーモン(ftpdとかsshdとか)を起動させる事ができます。
例えば、クリスマスツリーとか、鯉のぼりとか、雛人形とか、ずっと出していてもいいんですが。。。あっ、雛人形は早い目に片付けないとダメか笑
必要な時に出して、季節が終わったら片付ける。。。
まあ、そんな感じです。。。ちょっと苦しいけど笑
2つのトランポートプロトコルTCPとUDP
ネットワークって。。。#4で述べた、コネクション型通信とコネクションレス型通信で、コネクション型通信がTCP、コネクションレス型通信がUDPとなります。
ネットワークって。。。#4でも書きましたが、コネクション型がお互いに会話し合う電話(確実に相手に伝わる)、コネクションレス型は、一方通行の手紙みたいなもの(本当に届いたか確認できない)です。
TCPとUDPの使い分け
TCPは信頼性があって、UDPは信頼性がないので、TCPの方が優れている?
これは間違いです。
TCPは、信頼性のある通信を実現する必要がある場合に使われます。
例えば、銀行の通信システム。。。全銀協標準プロトコルという全国銀行協会で、標準化されたものの中に、全銀TCP/IPとかインターネット全銀と呼ばれるものがありますが、これらは全て、TCPでの通信となります。
UDPは、高速性やリアルタイム性を重視する通信で利用されます。
例えば、IP電話とか、今はやりのWeb会議とかに使われています。
IP電話やWeb会議にTCPを使うと、ネットワークの一部データが失われた場合(パケットロスっていいます)に再送したり、リトライしたりするので、スムーズに機能しない可能性が出てきます。なので、UDPが使われています。
一時的に、音声が途切れたり、画像が乱れたりしても、いちいちリトライして、つながりにくくなるよりはマシですよね。
それに、音声や画像が途切れても、人が聞き返したり(リトライ)、言い直したり(再送)できますもんね笑
まとめ
- TCP/IPには、TCPとUDPという2つのトランスポートプロトコルがあって、TCPはコネクション型通信で信頼性のある通信で、UDPはコネクションレス型で信頼性がない通信で使われる。
- トランスポート層は、下位層送られてきたデータを、上位層のどこに送るかをポート番号で判断し、送信する。
- クライアント/サーバモデルのサーバはサービス提供者、クライアントはサービス利用者を意味する。
- サーバ側のアプリケーションは、UNIXの世界では、デーモンと呼ばれる。
- TCPは、信頼性のある通信を実現する必要がある場合に、UDPは、高速性やリアルタイム性を重視する通信で利用。
今回は、以上になります。
最後まで読んで頂き、ありがとうございました。
【参考書籍】