おそらく、インターネットを使っている際に「TCP/IP」という言葉を一度は聞いたことがあるかと思います。しかし、それが具体的に何を指すのかについて再度説明する自信がない人も多いかもしれません。
この記事では、インターネットに詳しくない初心者の方でも理解しやすいように、TCP/IPの特徴や概念、考え方について整理して解説します。
TCP/IPとは?
TCP/IP(Transmission Control Protocol/Internet Protocol)は、インターネット上で広く利用されている通信プロトコルです。TCPとIPという2つのプロトコルが組み合わさっており、私たちがパソコンやスマートフォンなどでウェブサイトやホームページを閲覧する際にも使用されています。
プロトコルって何だろう?
プロトコルは簡潔に言えば「通信規約」という意味です。
コンピュータ同士が通信を行う場合、それぞれのコンピュータは「どのように通信を行うか」を理解する必要があります。データの形式や順序、エラー処理の方法など、共通の基準や手順を知っておかなければなりません。
通信を行うコンピュータ同士は同じ方法で接続しなければなりません。このようなコンピュータ間の接続方法や信号の送り方など、通信の取り決めを通信プロトコルと呼びます。通信プロトコルは、ISO(国際標準化機構)によって定められ、誰もが利用できるようになっています。
通信の仕組み
TCP/IPの通信では、コンピュータ同士はIPと呼ばれる位置情報を使用して通信を行います。IPアドレスは、そのコンピュータがインターネット上での住所のような役割を果たします。
送信元のコンピュータは、インターネット上に存在する送信先のIPアドレスを指定してデータを送信します。また、通信に対する返答(レスポンス)には、送信元のコンピュータのIPアドレスが使用されます。つまり、通信を行うためには、互いのコンピュータが相手のIPアドレスを把握している必要があります。
TCP/IPの特徴
TCP/IPは、その名前通りにTCPとIPの2つのプロトコルを組み合わせたものです。データの転送に重点を置き、信頼性の高いネットワークを確保するために非常にシンプルな構造を持っています。また、TCP/IPの仕様はインターネット上で公開されており、誰でも無料で参照や利用が可能です。
TCPとIPそれぞれの特徴
TCPの主な特徴は、通信を行うコンピュータ同士が相互に確認しながらやり取りすることです。データの損失や破損がないか、送信したデータが完全に受信されているかなどを細かく確認しながら通信が行われます。これにより、TCPは信頼性の高い通信を実現します。
一方、IPはIPアドレスを使用して通信先を指定し、データをIPパケットに分割して届けるためのプロトコルです。基本的にTCPと組み合わせて使用されます。
TCP/IPでは、まずIPがネットワークを介してデータを細かく分割したパケットとして受け取ります。その後、TCPがパケットの内容をチェックしながら正しい順序でデータを再構築する仕組みとなっています。
エンドツーエンドって何だろう?
TCP/IPでは、コンピュータ端末で高度な処理を行い、ネットワーク内部には最低限の機能のみを持たせる「エンドツーエンド」の原理を採用しています。これにより、システムの拡張性と柔軟性を向上させ、大規模なインターネットの構築が可能となっています。
したがって、エンドツーエンド通信でデータをやり取りする際には、データが暗号化されていない場合、第三者によるデータの盗み見などの被害が発生する可能性があります。
また、セキュリティやエラー検出などのデータ転送以外の機能は、通信を行うコンピュータ端末間で個別に実装する必要があることに留意してください。
TCPヘッダーについて
TCPプロトコルでは、データを送受信するコンピュータ同士が相互に送信されたデータの内容を確認することで、正確なデータの送受信を行っています。
この機能を実現するため、TCPプロトコルの通信には、パケットごとに「TCPヘッダ」と呼ばれるデータ情報が追加されます。
TCPヘッダーに含まれる情報
TCPヘッダーに含まれる情報は以下の通りです。
- 送信元ポート番号
- 宛先ポート番号
- シーケンス番号:送受信されるパケットの通し番号
- チェックサム:宛先に届いたデータが壊れたり、紛失したりしていないかを確認するための情報
- 確認応答番号
- データオフセット
- 予約
- コントロールフラグ
- ウィンドウサイズ
- 緊急ポインタ
- オプション
- パディング
これらの情報を利用して、通信を行うコンピュータ同士はデータが正しく送られているか、すべてのデータが届いているかなどを相互に確認しています。
TCP/IPの階層とそれらのプロトコル
TCP/IPでは、通信プロトコルを「TCP/IPの4階層モデル」として定義し、それぞれの階層に専用のプロトコルが存在しています。これらの階層を組み合わせることで、様々なインターネット通信が実現されます。
以下では、各階層について見ていきましょう。
1.ネットワークインタフェース層
ネットワークインターフェース層では、同じネットワーク内でデータを送受信するための転送方式が定義されます。
以下は主なプロトコルとその具体的な名称の例です。
- Ethernet(イーサネット)
- 1000Base-X
- 10GBase-W
- 有線LANケーブルを使用した通信回線
- Wi-Fi
- IEEE802.11ac
- IEEE802.11g
- 無線LAN
- PPP(Point to Point Protocol)
- –
- シリアルインターフェースと呼ばれる電話回線などで利用される通信回線
具体的なプロトコルの選択は、データの転送速度、中継せずにデータを転送できる距離、無線LANの場合の転送速度の違いなどによって細かく決定されます。
2.インターネット層
インターネット層は、複数の異なるネットワーク間の通信を可能にするためのプロトコルを定義しています。TCP/IPの4階層モデルでは、IPプロトコルが使用されており、現在では主にIPv4とIPv6の2つのプロトコルが広く利用されています。
複数のネットワークを接続し、相互にデータ転送を行うには、中継器であるルーターが必要です。
ルーターは、送信されてきたパケットのヘッダーから宛先のIPアドレスやポート番号などの情報を参照し、パケットの転送先を判断してデータを転送します。ネットワーク間でのデータ転送処理をルーティングと呼びます。
3.トランスポート層
インターネット上には、膨大な数のデバイスが接続されています。異なるプログラムやネットワーク間の通信において、データを正確に宛先まで届けるために重要な役割を果たすのがトランスポート層です。
トランスポート層では、主に「TCPプロトコル」と「UDPプロトコル」という2つのプロトコルが利用されます。これらのプロトコルの詳しい違いについては後ほど説明します。
4.アプリケーション層
アプリケーション層は、実際の通信を行うアプリケーションが利用するプロトコルを定義しています。
代表的なアプリケーション層プロトコルとしては、Webサイトの閲覧に使用される「HTTP」や「HTTPS」、メールの送信に利用される「SMTP」などがあります。
通常、アプリケーション層で行われる通信では、文字や画像、映像などの人間が認識できるデータが扱われます。これらのデータを転送するために、文字コードや画像の形式、データのフォーマットなどが細かく規定されています。
さらに、データの暗号化やセキュリティに関する仕組みも、アプリケーション層で定義されています。
TCP/IPとOSI参照モデルの比較
コンピュータが通信するための規格は、TCP/IPの4階層モデル以外にも「OSI参照モデル」と呼ばれる7つの階層に分割された通信モデルを使用して表現することができます。
OSI参照モデルはTCP/IPの4階層モデルよりも後に作成された考え方であり、公式には直接の関連性はありません。ただし、範囲の取り扱いが似ているため、次のように対応付けて比較することができます。
OSI参照モデル:
- (7層) アプリケーション層: 具体的な通信サービスの提供(HTTPやFTPなど)
- (6層) プレゼンテーション層: データの表現方法(ファイル変換)
- (5層) セッション層: 通信プログラム間の通信手順の確立と終了
- (4層) トランスポート層: ネットワーク全体での通信管理(エラー訂正や再送制御など)
- (3層) ネットワーク層: 通信経路の選択(ルーティング)
- (2層) データリンク層: 直接接続された通信機器間の通信
- (1層) 物理層: 物理的な接続の規定(コネクタのピン数や形状など)
これらの階層は、データの送信や受信、通信制御などを適切に行うための役割を持っています。
TCPとUDPの違い
TCPと同じトランスポート層で利用されるプロトコルには、「UDP」と呼ばれるものが存在します。TCPとUDPは特徴の違いにより、異なる用途で活用されます。
以下にTCPとUDPの5つの特徴の違いを示します。
TCP:
- 通信方式: コネクション型通信
- 重視されているポイント: 確実性、信頼性(高い)
- 利用速度: 遅い
- 利用例: Webサイトの閲覧、メールの送受信など
UDP:
- 通信方式: コネクションレス型通信(データグラム型通信)
- 重視されているポイント: 即時性
- 信頼性: 低い
- 利用速度: 速い
- 利用例: VoIPによる音声通話、動画配信など
TCPはデータの確実な到達と信頼性を重視する場合に適していますが、通信速度は比較的遅くなります。一方、UDPは即時性が求められる場合や信頼性よりも高速なデータ転送が必要な場合に適しています。
1.通信方法
TCPを利用した通信では、データの正確な転送を確認するために、送信側と受信側のコンピューターが密接に連携する「コネクション型」という通信方式が採用されます。これにより、各コンピューターは事前にタイミングを合わせ、パケットを確実に1つずつ転送します。
一方、UDPの通信は、送信側のコンピューターから受信側のコンピューターへ単方向でデータを送信し続ける方式です。コネクションを事前に確立せず、相手の状況に関係なくデータを送信します。このため、「コネクションレス型」または「データグラム型」と呼ばれます。
2.重視されていること
TCPはデータの確実な到達を重視して設計されています。送受信するコンピューターはコネクションを確立し、データの完全性や欠落の有無を常にチェックすることで信頼性を確保します。
一方、UDPはデータのリアルタイムな配信を重視しています。TCPとは異なり、コネクションの確立やデータのチェックは行いません。送信元のコンピューターから受信側のコンピューターにデータを継続的に送信することが特徴です。
3.信頼性
先述の通り、TCPの通信はコネクションの確立やデータのエラーチェック、再送信などの機能が充実しています。そのため、届いたデータの信頼性は高く、安心して利用できます。
一方、UDPではデータの即時送信と迅速な配信が重視されており、データのチェック機能はありません。そのため、TCPと比較してデータの信頼性は低くなります。
4.利用速度
TCPを利用した通信は、コネクションの確立やデータの確認などの追加通信が頻繁に発生し、データ転送以外の処理が行われる特徴があります。これにより信頼性が高まる一方で、データの転送速度は遅くなる傾向があります。
一方、UDPの通信はデータの送信に重点が置かれており、余分な通信が発生せず、利用速度がTCPに比べて速くなります。データの確認や再送信などの追加処理がないため、データの転送は迅速に行われます。
5.利用例
TCPは、一般的なインターネット通信で使用されるWebサイトの閲覧やメールの送受信などに広く採用されています。
一方、UDPは、リアルタイムにデータを送受信する必要のある場面で多く採用されています。例えば、VoIPを使用した音声通話や動画配信などが挙げられます。音声通話や動画配信では、データの一部が失われたとしても、それが画像や音声のわずかな乱れにつながるだけで大きな問題にはなりません。このようなケースでは、データが完全な状態である必要性よりも、データの即時性が重視されるため、UDPが選択されることがあります。
プロトコルとポート番号の違い
コンピュータ内では、Webサイトの閲覧やメールの送受信など、さまざまなアプリケーションが同時に動作しています。TCP/IPの通信では、コンピュータがこれらの通信を適切に識別する必要があります。そのために、ポート番号という数値が使用され、アプリケーションを識別します。
ポート番号は、特定のアプリケーションが通信に使用するために割り当てられた識別子です。各アプリケーションには、一意のポート番号が割り当てられており、送信元と宛先のコンピュータが正確に通信するために使用されます。
たとえば、Webサイトの閲覧には通常ポート番号80が使用されます。メールの送受信にはポート番号25(SMTP)やポート番号110(POP3)が使用されます。これにより、コンピュータは受信したデータを正しいアプリケーションに送り届けることができます。
ポート番号は、TCP/IPの通信においてアプリケーションを正確に識別するための重要な要素であり、正確なデータの送受信を可能にします。
ポート番号の範囲
ポート番号は、16ビットの2進数で表現されます。このため、10進数で表すと0から65535までの数値を使用することができます。
ポート番号は、トランスポート層のプロトコル(TCPまたはUDP)と組み合わせて使用されます。TCPとUDPでは、異なるポート番号が割り当てられています。したがって、プロトコルを明確にするために、「TCP/80」や「UDP/53」といった形式で表記されることもあります。
ポート番号の中でも、1023以下の番号は「ウェルノウン(well-known)ポート」と呼ばれ、一般的な用途や予約済みのポート番号です。これらのポート番号は、インターネット上で頻繁に使用されるサービスやシステムで予約されています。ただし、新しいプロトコルなどでは、ウェルノウンポート以外のポート番号を使用するケースも増えています。
主なポート番号
以下はウェルノウンポートとして定義された代表的な利用用途の一部です。
プロトコル
ポート番号
利用用途
TCP
80
Webサービスで使用されるHTTP
TCP
443
SSLを使用した安全なWebサービスで使用されるHTTPS
TCP/UDP
25
メールの送信に使用されるSMTP
TCP
110
メールの受信に使用されるPOP3
TCP/UDP
53
ドメイン名の解決に使用されるDNS
TCP/UDP
123
コンピュータの時刻合わせに使用されるNTP
これらのポート番号は、一般的なインターネット通信で広く利用されています。たとえば、HTTPでは通常「TCP/80」と関連付けられて使用されます。
ただし、ウェルノウンポートを必ずしも使用する必要はありません。セキュリティ上の理由などから、意図的にポート番号を変更する場合もあります。
コメント