1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート2)
  4. TCP、UDP、およびICMPの違いや主な機能

LinuC Level1 v10.0 対策コース(パート2)6/29

TCP、UDP、およびICMPの違いや主な機能

こちらではUDPとTCPの違い、およびICMPについて解説します。

プロトコル

プロトコルはコンピュータがネットワーク上で通信をする上でのルールです。

パソコンやサーバーなどには、さまざまなメーカーの機種が存在します。機種ごとに通信のルールが異なれば、同一機種同士でしか通信をすることができません。そこでルールを事前に決めておき、異なる機器同士での通信を可能にします。

OSI参照モデル

OSI参照モデルはコンピュータなどで行う通信方法を統一し、7階層に分割したモデルです。コンピュータ間の通信ではこのOSI参照モデルに従って通信が行われています。

名称主な役割領域関連装置
7層アプリケーション層アプリケーション間でのやり取りソフトウェアゲートウェイ
6層プレゼンテーション層データの表示形式を定義ソフトウェアゲートウェイ
5層セッション層接続の手順ソフトウェアゲートウェイ
4層トランスポート層データ通信の制御ネットワークゲートウェイ
3層ネットワーク層インターネットでの通信ネットワークルータ・L3スイッチ
2層データリンク層同一ネットワークでの通信ネットワークブリッジ・L2スイッチ
1層物理層ケーブルや電気通信などハードウェアLANケーブル・NIC

第7層(アプリケーション層)

アプリケーション層ではユーザが利用するアプリケーション固有のルールを決めています。

第6層(プレゼンテーション層)

データの表現形式を定義する層です。コンピュータがやり取りする「0」「1」のデータを人間が理解できるように変換する文字コードや、画像がこの層で定義されます。

第5層(セッション層)

アプリケーションのデータの振り分けを行う層です。コンピュータ上で複数のアプリケーションを同時に起動してデータを送受信する際に、セッション層のプロトコルが受信したデータを正しくアプリケーションへ振り分けを行ってくれます。

第4層(トランスポート層)

通信の品質をコントロールするための層です。例えばやり取りしているデータが適切に届いたかの受信確認などをこの層のプロトコルが行ってくれます。(UDPは信頼性を担保しないかわりに速度を優先する)

第3層(ネットワーク層)

異なるネットワーク間のデータ転送を行う役割を担っています。この層では通信相手までの経路選択(ルーティング)を行ってくれます。

第2層(データリンク層)

同一ネットワーク内の機器との通信を行う役割を担っています。

第1層(物理層)

コンピュータ間の通信データを物理的に伝えるための役割を担っています。この層のプロトコルがコンピュータ内部で扱っている「0」「1」のデータを電気信号や光信号に変換します。また伝送媒体やケーブルを接続するコネクタの仕様も物理層で決めます。

UDP

UDPとはトランスポート層のプロトコルで動作する通信プロトコルです。

UDPの特徴は相手にデータが届いているかの確認を行わず、一方的にデータを送ることで速度の速い通信を実現しています。そのため信頼性が低いというデメリットがありますが、高速性・リアルタイム性を重視するアプリケーションで使用されています。

TCP

TCPもトランスポート層で動作するプロトコルです。

通信開始時にスリーウェイハンドシェイクを用いてコネクションを張り、通信状況を確認しながら通信を行います。受信側はデータを受信すると受け取ったことを送信側に伝えることで、送信側がデータが相手に届いたことが確認できる仕組みになっています。一定時間経過しても通信相手からの返信がない場合は再送する仕組みもあります。

   TCPUDP
通信方法    コネクション型コネクションレス型
信頼性高い低い
転送速度低速高速
主な用途webの閲覧・メールの送受信・ファイル転送など音声通話・動画ストリーミングなど
特徴コネクションの確立、維持、切断順序制御、再送制御、ウィンドウ制御、フロー制御による高信頼性オーバーヘッドが少ない・信頼性がない

ICMP

ICMP(Internet Control Message Protocol)はネットワークが疎通されているノード(サーバー・PCなど)間で、通信状態を確認するためのプロトコルです。OSI参照モデルのネットワーク層で動作し、IPプロトコルに含まれるプロトコルです。

ICMPは「ping」などの疎通確認を行うプログラムに使われます。

ping

pingはICMPを利用したネットワーク疎通診断プログラムです。

コマンドでping(IPアドレス)もしくはping(ホスト名)と入力すると、指定したIPアドレスにechoリクエストを送信し、応答の有無、送信開始から受信完了までの所要時間を確認することができます。

 % ping envader.plus 
PING envader.plus (34.111.64.3): 56 data bytes
64 bytes from 34.111.64.3: icmp_seq=0 ttl=118 time=8.707 ms #通信ができたので応答が返ってきた
64 bytes from 34.111.64.3: icmp_seq=1 ttl=118 time=17.329 ms
64 bytes from 34.111.64.3: icmp_seq=2 ttl=118 time=8.640 ms
64 bytes from 34.111.64.3: icmp_seq=3 ttl=118 time=8.686 ms
64 bytes from 34.111.64.3: icmp_seq=4 ttl=118 time=16.741 ms
64 bytes from 34.111.64.3: icmp_seq=5 ttl=118 time=8.931 ms
64 bytes from 34.111.64.3: icmp_seq=6 ttl=118 time=8.883 ms
64 bytes from 34.111.64.3: icmp_seq=7 ttl=118 time=16.623 ms

まとめ

OSI参照モデルではコンピュータ間の通信のルールを統一しています。これにより異なるメーカーや機種同士でも通信が可能になります。TCPとUDPは共に通信プロトコルで、TCPは高信頼な、UDPは高速な通信を実現しています。それぞれ一長一短あり、使用目的により使い分けられます。

記事の内容は理解できましたか?