こんにちは。
ネットワーク通信について用語解説をします。
ネットワーク 「TCP/IP 4層側についてもう少し詳しく」
TCP/IPは基本となるネットワークプロトコルです。
OSI参照モデル第4層 トランスポート層のTCPとUDPについて詳しく解説します。
4層では5層から受け取った通信データをパケットに分割します。
TCP(Transmission Control Protocol)
高信頼データを実現する第4層ネットワークプロトコル
データ欠損なく、相手に確実に送り届けられることを実現させるために、
信頼性が高く確実なデータ通信を保証します。
第5層以上から受け取った通信データをパケットに分割して、そのパケットを
第3層のIPへ渡すことにより、相手機器にデータを送ります。
問題となるのは、これらのパケットを全て順番に送り届けられる保証が無い事です。
多くのネットワーク機器が同時に同じ経路を使って通信をやり取りしているため、
その状況によっては、途中でパケットが消失したり、順番の入れ替わりが発生する
事があります。
TCPでは「信頼性」を担保するための工夫がなされています。
一つ目の工夫は分割したパケットにシーケンス番号を付与して、受信側で並び替え
ができるようにして順序性を確保します。
パケット分割と順序性確保のイメージは以下となります。
第5層 → 第4層(TCP) → 第3層(IP)
┌──────┐ ┌─────┬──────┬────────┐
│通信データ │分割│パケット1│IPヘッダ情報│シーケンス番号#1│
│ │ ├─────┼──────┼────────┤
│ │ │パケット2│IPヘッダ情報│シーケンス番号#2│
│ │ ├─────┼──────┼────────┤
│ │ │ : │ │ │
│ │ ├─────┼──────┼────────┤
│ │ │パケット9│IPヘッダ情報│シーケンス番号#9│
└──────┘ └─────┴──────┴────────┘
このようにシーケンス番号が連番になっていれば、受信側でも並び替えができます。
二つ目の工夫は受信側機器で受信できた場合は、受信側機器が送信側に対して、
通知パケット(Ack:ACKnowledgement)を送り返します。
これによって送信側は送信したパケットが相手に届いたか判断ができるようになり、
規定時間の内に応答がない場合はTimeoutしてパケットを再送して欠損を防ぎます。
送信側 ─ 新規送信or再送 → 受信側 ┐ ↑ │ └──────Ackパケット─────┘
信頼性の高い通信として、TCPとIPを組み合わせたTCP/IPが主流となっています。
UDP(User Datagram Protocol)
信頼性は劣るが高速化を実現する第4層ネットワークプロトコル
TCPと同じく第4層に位置付けられるプロトコルです。
UDPはコネクションレス型の(データグラム型)の通信を提供します。
コネクションレス型は相手に通知せずに送信する方法でとにかく送り続けます。
そのため、途中でパケットが欠損する可能性があり、通信の信頼性は低くなりますが
TCPのように確認作業が無い分、処理は軽くなり高速に通信ができます。
第5層から受け取ったデータをパケットに分割してIPに渡すだけの役割となります。
TCPに比べ信頼性に劣りますが、処理が軽いためUDPが適した通信があります。
例えば小さなパケットだけで完結するアプリケーション(DNS、DHCPなど)や、
リアルタイム性が重要となるアプリケーション(音声通話、動画配信)が該当します。
まとめ
- TCPは信頼性が高く確実なデータ送信が実現できる。TCP/IPが主流となっている。
- UDPは信頼性は劣るが通信速度が速い。
- 小さいパケットだけで完結する通信やリアルタイム性の高い通信に用いられる。
ネットワークサービスによって適宜使い分けると便利
それでは今日はここまで
では~
コメント