こちらでは、CCNAの資格取得へ向けた情報を記載いたします。
【初心者向け】CCNA基礎 13章
1. トランスポート層について
OSI参照モデルやTCP/IPモデルのトランスポート層は、アプリケーション層で利用されているプロトコル間での通信を制御する役割を持っています。
受信したデータを該当のアプリケーションへ渡す、上位層と階層の橋渡し役的な存在です。
今回はこのトランスポート層のプロトコルとして代表的な「TCP」と「UDP」について記載していきます。
2. TCPについて
まず前提として、「TCP(Transmission Control Protocol)」は接続を確立させたり、送信データの順序性の確保、フロー制御などを行います。
「HTTP」「STP」「POP3」などの、データの信頼性を確保する必要があるような、アプリケーションプロトコルで利用されるのがこのTCPです。
TCPは「コネクション型」というプロトコルです。
「コネクション型」とは、データを送信する前に、相手と通信が出来るかを確認した上でコネクションを確立してからデータ送信を行う型のことを指します。
この様に、TCPでは信頼性を確保するため、TCPヘッダ内に様々な情報を格納しています。
2-1. TCPヘッダについて
TCPでは上位層のアプリケーション層から渡されたデータに「TCPヘッダ」というものを付加し、それを下位層のネットワーク層へ「TCPセグメント」として渡していきます。
2-2. TCP主な役割
先程も記述した様に、TCPの主な役割には、接続の確立や送信データの順序性の確保、フロー制御などがあげられます。
まず「接続の確立」についてですが、TCPでは通信開始前にデータの送信元と宛先のホストの間で、通信を確立してあげる必要があります。
この接続の確立には、「3ウェイハンドシェイク」という方法を利用します。
「3ウェイハンドシェイク」とは、送信元が宛先へ通信を開始しても良いかを確認し、それを受けた宛先側が、送信元に通信可能な旨を応答します。
最後に、「その応答を受け取った旨を再度送信する」という3ステップで接続を確立していく方法を指しています。
この方法を更に解説していくと、まず送信元が、TCP接続の開始を要求する際に使用する「SYN(Synchronize)フラグ」を付けて送信し、TCPでやり取りする端末間で同期します。
この際のTCPヘッダ内のSYNビットは「1」の状態で、シーケンス番号は「1000」となります。
次に宛先側が、相手からの要求を承認して応答する「ACK(Acknowledgement)フラグ」を付けて送信します。
この際のTCPヘッダ内のSYNビットは、先程と同様の「1」となっていますが、代わりに今度はACKビットが「1」になっており、シーケンス番号「2000」に変わります。
更に、どこまで受信したかを示す「ACK番号(確認応答番号)」が追加され、「1001」の値が一緒に送信されます。
その後、送信元がそれを受け取りSYSフラグに「0」、ACKフラグに「1」、シーケンス番号「1001」とACK番号「2001」でそれぞれ設定したセグメントを返す流れとなっています。
3. UDPについて
先程のTCPに対し、この「UDP(User Datagram Protocol)」は、通信速度を重視しており、エラーの検出やデータの再送などは行わないものとなっています。
このUDPは、DHCPやネットワーク上の正確な時間を公開する、サーバーから時刻を取得するためのNTP(Network Time Protocol)」音声や動画などのマルチメディアファイルを配信するストリーミングなどで利用されています。
3-1. UDPヘッダについて
UDPでは、上位層であるアプリケーション層から渡されたデータに、「UDPヘッダ」というものを付加して、それを更に「UDPデータグラム」として、下位層であるネットワーク層に渡していきます。
このUDPヘッダには、TCPヘッダとは違って、信頼性を確保するための情報が付与されていないので、UCPヘッダ内に付与されている情報は少なく、処理の負荷は軽い状態になっています。
また、UDPヘッダを除いたデータ部分のことを「UDPペイロード」と言います。
3-2. UDPの主な役割
UDPについては、とにかく速くデータを送信することを目的としているため、TCPの様な3ウェイハンドシェイクを使った接続の確立や、シーケンス番号による順序性の制御、ウィンドウ制御やフロー制御などの機能は持ち合わせておらず、あくまでも上位層と下位層への橋渡し役のみに徹している状態です。
また、ヘッダ自体もTCPと比べると単純な構造になっており、基本的なTCPヘッダは20バイトとなっていますが、一方のUDPヘッダは8バイトとかなり少ない容量で構成されています。
これは、信頼性の確保は行わない「ベストエフォート」な通信となり、これとは反対に、通信サービスを保証する形態を「ギャランティ型」と言います。
4. ポート番号について
ポート番号とは、アプリケーション層にて利用されるプロトコルを識別するための番号を指しています。
ネットワーク上では、IPアドレスでホストを識別し、ホスト上で複数のアプリケーションを利用している場合は、更にポート番号を使用してアプリケーションを識別する流れとなっています。
以下に、よく使われるポート番号を記載します。
・ftp-data
ポート番号は「20」で、プロトコルは「FTP」。
主に、FTPのデータ転送用に使われています。
・ftp
ポート番号は「21」で、プロトコルは「FTP」。
主に、FTPのデータ制御用に使われています。
・ssh
ポート番号は「22」で、プロトコルは「SSH」。
主に、セキュアなリモート接続を行う際に使われています。
・telnet
ポート番号は「23」で、プロトコルは「TELNET」。
主に、暗号化されていないデータのリモート接続の際に使われています。
・smtp
ポート番号は「25」で、プロトコルは「SMTP」。
主に、メールを送信する際に使われています。
・dns
ポート番号は「53」で、プロトコルは「DNS」。
主に、ドメイン名とIPアドレスを紐づける際に使われています。
5. まとめ
お疲れ様でした。 ここまで読んでいただきありがとうございます。
今回はTCP/UDPの比較がメインだったので、しっかりと双方の違いを覚えていただければと思います。
次回は、Ciscoルータについてまとめていきます。