TCPとUDP
5
TCPとUDPはトランスポート層でのプロトコルであり、データをつぎにどの処理に渡せばよいか識別するための番号があり、これをポート番号という。
ポート番号によってアプリケーションの識別ができるため、コンピュータ上で複数のプログラムを動作させることができます。(Webブラウザや電子メールの送受信など)
ポート番号の最新情報はここ→ http://www.iana.org/assignments/port-numbers
ポート番号には初めから決められているものとそうではないものがある。
HTTPやTELNET、FTPなどは初めから決めてある。このようなポート番号をウェルノンポート番号という。決められていないものはクライアントなどである。
ポートと番号はTCPとUDPのヘッダに含まれる。
TCPとUDPの違いは、TUPはコネクションが確立してから通信を行うので信頼性があるストリーム型のプロトコルといえる。逆にUDPはコネクションレスのプロトコルなので信頼性があまりないデータ型のプロトコルといえる。UDPはアプリケーションに渡してそれまかせなのである。
保証がないために途中でデータを失ったら必要に応じて再送しなければいけない。
UDPにメリットがないわけではなく、TCPと違っていわない情報まで持ってこなく、早いというのがいいところです。
TCPは送信したデータが受信されたときに、送信ホストへ受信ホストからデータが到達したことを知らせる。これを肯定確認応答(ACK)という。言葉でいうと、「うん、うん」と
返事をしたことになる。それと(NACK)というのがあり、「え?なに?」と聞き返す否定確認応答がある。
確認応答を待たずに送信できるデータの大きさをウィンドウサイズという。
それにバッファが使われている。バッファは送受信するパケットを一時的に格納する場所のことである。
トランスポートを郵便物で例えると、郵便配達員(IP)はあて先の住所(あて先のIPアドレス)をみて、目的の家(コンピュータ)に郵便物(データ)を配達する。
着いたら家の人(トランスポートプロトコル)宛名をみて誰宛なのか判断する。
クライアントからの要求を常時受け付けられるように、起動し続けなれるものとして
デーモンが使われる。
TUPには遅れなく途切れたパケットを再送する機能がある。でもすぐに再送するわけではなく確認応答を待つ時間(タイムアウト時間)というものがある。
待ち時間は状況や環境によって異なる。パケットを送信するたびにラウンドトリップ時間をと揺らぎを計算して、それより大きな値を再送タイムアウト時間にする。
ラウンドトリップはパケットの往復にかかる時間。
TCPはセグメント単位で通信を行うときにデータを送っている。
最大セグメント単位MSS (最大転送単位MTU)
フロー制御(流量制御)
パケットを受信しきれず、こぼすのが無駄なのでウィンドウサイズの値を小さく設定して、送信ホストの送信量を制御する。
ふくそう制御(ネットワークの混雑解消)
1セグメントずつ送信して、確認応答されるたび、1セグメント(1MSS)ずつ、ふくそうウィンドウを大きくしていく。
再送時は、ふくそうウィンドウを1にしてから、フロースタートをやり直す。
リアルタイム通信 送信したデータができるだけ早くあて先にホストに届けられる通信
この通信はUDPで適用していたが到着間隔の揺らぎ)(ジッターを調節するのに、バッファを大きくしたり小さくしたりするのは大変なんでUDP上で動作するトランスポートプロトコルとしてRTPが開発された。
RTPにはシーケンス番号とタイムスタンプを付加する。
RTPを補助するためにRTCPというのも利用され通信回線の品質を管理する。
UDP TCP のフォーマットについて
チェックサム
シーケンス番号