📝

TCP / IP について理解しやすく解説+カプセル化について

2023/10/01に公開2

TCP/IPについて

今日はTCP/IPについて、まだエンジニア歴浅い人でも理解できるように
でも、表面知識すぎないように
解説を書いてみました。

ことのきっかけは、FTPを使う場面があって、
その仕組みを学ぶうちに、そもそものネットワークの仕組みを
もっと解説できるようでありたいと思ったからです。笑

では今日もやっていきます〜!

< 今回の内容大枠 >
1. TCP/IP概説
2. OSIとTCP/IPの違い、比較
3. TCP/IPの各層について
4.カプセル化、非カプセル化について
5.主なプロトコルの説明
(余談:これ、各見出しのリンクいつの間にか貼れるようになってましたね…!気づかなかったw)

概要: TCP/IPとは

TCP/IPとは、インターネットなどで標準的に用いられる通信プロトコル(通信手順)で、
TCP(Transmission Control Protocol)とIP(Internet Protocol)を組み合わせたもの。
また、TCPとIPを含む、インターネット標準のプロトコル群全体の総称
  - IT用語辞典

TCP/IP(Transmission Control Protocol/Internet Protocol)は、
コンピュータネットワークでデータを送受信するための基本的なプロトコルであり、
世界標準的に利用されている通信プロトコルのこと。

用語補足:プロトコルとは?

プロトコルとは:
通信を行う際のルールのこと. 規約ともいう。
■ 通信プロトコルとは:
通信に関する規格のことである。「通信規約」や「通信手順」ともいう
プロトコルスタックとは:
通信を行う際に必要なプロトコルの集まりのこと.
プロトコルスイート(Protocol suite)も同じ意味で使われることが多い。

一応ここに用語説明入れましたが、ここだけだとしっくりこないかもしれないです。


でも進めていきながら見るうちに、イメージカついてくるかと思います!笑

OSIとTCP/IPの関係性

OSI(Open Systems Interconnection)モデルと、TCP/IPは、
共にコンピューターネットワークおよび通信システムのプロトコルに関連する概念だ。

■ OSIとは

ISO生まれで理論重視のモデルで、TCP/IPよりも細かく階層分けされている。
ただ、実用性は低く、TCP/IPの方が現実的な仕様になっている。

項目 OSIモデル TCP/IPモデル
レイヤー数 7つのレイヤー 4つのレイヤー
アプローチ 各レイヤーが厳密に階層化されており、各レイヤーで異なる役割が定義されている。 よりシンプルで実用的なアプローチで、役割の重複がある。
実用性 理論的なモデルで、実際のネットワークプロトコルとは直接対応しない。 インターネット通信に広く使用されており、実際のプロトコルにマッチしている。

<対応図>

ビジネス+ITより

今回は、TCP/IPについてで書いていくのでそっちを詳しく書いていきたいと思います。

詳細: TCP/IPの階層モデル:4層

ではここからは、TCP/IPについて詳しく書いていきます。


TCP/IPとは?

TCP/IPは、階層モデルという構造を持っている。

※階層モデルとは:
データベースで用いられる構造のモデルのひとつで、データに親子関係を持たせるモデルのこと。

TCP/IP 名称 プロトコル ほか 簡単に...
4層 アプリケーション層 HTTP,FTP,SMTP,
POP3,IMAP4,DNS,
FTP ...
アプリケーションソフトウェアとのインタフェース
Webサイト閲覧、メール、ファイル転送など
人間が利用する
アプリケーションに関係
3層 トランスポート層 TCP,UDP データの転送 アプリケーション通信をする際の補助的な役割
2層 インターネット層 IP ルーティング、エンドツーエンド通信 アプリケーション通信をする際の補助的な役割
1層 ネットワークインターフェース層 Ethernet LAN 電気信号などの物理的な信号に対して送られる暗号

各層について

TCP/IPは上の図のように、4つの階層からなり、各階層は通信の特定の役割を担う
通信が成功するには、これら4つの階層が協力して動作する必要がある。
それぞれがどんな役割なのか、ここからみていきます!

4層. アプリケーション層:"ユーザーとネットワークの窓口"

アプリケーション層の主なプロトコル

プロトコル 用途
HTTP (Hypertext Transfer Protocol) ウェブブラウジング、Webページの取得と表示
HTTPS (HTTP Secure) セキュアなウェブブラウジング
SSH (Secure Shell) セキュアなリモートコンソールアクセス
SMTP (Simple Mail Transfer Protocol) 電子メールの送信
POP3 (Post Office Protocol version 3) 電子メールの受信 (メッセージのダウンロード)
IMAP (Internet Message Access Protocol) 電子メールの受信 (サーバー上でのメッセージ管理)
FTP (File Transfer Protocol) ファイルの転送
DNS (Domain Name System) ドメイン名からIPアドレスへの変換

それぞれのプロトコルの詳細は、最後の方に書きますので、興味ありましたらみてください〜

3層. トランスポート層: "データ輸送の司令塔"


Youtube: 【CCNA講座】「TCP」「UDP」を日本一易しく解説!【インフラエンジニア基礎入門 #6】

"データを適切なアプリケーションに振り分けること"が,
トランスポート層の主な役目だ。
主なプロトコルは,TCPとUDPに分けられます。
どのアプリケーションに渡すのか、の情報をTCPとUDPは共に持っています。そして、
アプリケーションにふり分けるときに指定するための番号を、"Port番号"という。

補足:ポート番号

主なポート番号を、tableにしました。
ポート番号は特定のプロトコルやサービスに関連付けられており、
上記した通り、ネットワーク通信で目的のサービスに接続する際に使用されます。

ポート番号 サービス/プロトコル
20 FTP データ転送
21 FTP 制御
22 SSH
23 Telnet
25 SMTP
53 DNS
80 HTTP
110 POP3
143 IMAP
443 HTTPS

■ プロトコル: TCP / UDPについて

ここは難しいので、簡単に書きますが、
大事なところでもあるので、今後別記事で書きたいと思います。

"3ウェイハンドシェイク"なども,その時に書きたいと思います。

< TCP(Transmission Control Protocol) >

IPと同様にインターネットにおいて標準的に利用されているプロトコル。
TCPは、IPの上位プロトコルでトランスポート層で動作するプロトコル
ネットワーク層のIPとセッション層以上のプロトコル(例:HTTP、FTP、Telnet) の橋渡しをする形で動作.

簡単に一言で言えば、"信頼性のある通信"だ。 コネクション指向のプロトコルです.
宛先ルーターへのデータの配信を保証するため、信頼性が高く、
使用場面としては、以下のような場面だ。
 => メール送信、ファイル転送、ウェブの閲覧
プロトコルは、HTTP、HTTPs、FTP、SMTP 、およびTelnetが使用される。

送信データは"セグメント"という単位で送信される。(下のカプセル化の項目で説明)

< UDP(User Datagram Protocol) >

IPやTCPなどと同様にインターネットにて標準的に利用されているプロトコル。
UDPはIPの上位プロトコルでトランスポート層で動作するプロトコル。
ネットワーク層のIPとセッション層以上のプロトコル( 例:DNS、NTP、DHCP )の橋渡しをするかたちで動作.

簡単に一言で言えば、"効率のいい通信"だ。
データグラム指向のプロトコルで、コネクションレス型の通信。
これにより、通信の開始と終了に関するコネクション確立の手順が不要で、リソースの節約が可能。
よって、 低オーバーヘッドを持ち、速いデータ転送が可能。
そのため、使用場面としては以下のような状況になる。
=> リアルタイム性が重要なアプリケーション (ビデオストリーミング、音声通信など)

データ送信と受信の確認を行わないためデータの到達性や整合性が保証されない
プロトコルは、 DNS、DHCP、 TFTP 、SNMP、RIP、およびVoIPが使用される。

■ TCP / UDP: 比較

特性 TCP UDP
コネクション指向 あり(通信開始前に相手との間で仮想的な通信路を確保
接続指向
なし(コネクションレス型通信
データグラム指向のプロトコル
概要 相手を確認し接続をしてから通信をするため、確実に送信ができ相手に届く! 通信相手を確認すること無く送信をするため、相手が確実に受信できているとは限らない...
信頼性 高い(データの確実な到達を保証) 低い(データの到達性が保証されない)
ストリームの種類 バイトストリーム メッセージストリーム
順序性 保持(データの送信順序が維持される) 保持されない(データ到達順序が不確定)
フロー制御 あり(過負荷やデータロスを防ぐ) なし
適用分野 ウェブ、電子メール、ファイル転送など信頼性が重要なアプリケーション 音声通信、ビデオストリーミング、ゲームなどリアルタイム性が重要なアプリケーション
プロトコルの例 HTTP、HTTPS、FTP、SMTP、POP3など DNS、DHCP、NTP、VoIPなど
速度 標準的な速度(オーバーヘッドがある) 高速(オーバーヘッドが少ない)
リアルタイム性 低い(信頼性が高いため遅延が発生することがある) 高い(リアルタイム通信に適している)
セキュリティ 高い(セキュアな通信を提供) 低い(セキュリティ機能が限定的)

2層. インターネット層: "異なるネットワーク間のデータ転送を担当"

この層は、異なるネットワーク間でデータを転送し、
ルーティングを担当し、インターネットの基盤となる機能を提供
します。

ルーティングと書いたが、ここでは、ルーターを使用して、
多数のネットワーク同士を接続してデータ転送を行っている。
また、ネットワーク間のデータ転送を指して「エンドツーエンド通信」と呼ぶ。

具体的なプロトコルは、 IP,ICMP,ARPなど。
主に「IP」を使用し、
CMPはエラーレポートや診断機能で、ARPはIPアドレスからMACアドレスを求める為などの
補佐的なプロトコルです。

1層. ネットワークインターフェース層(リンク層): "物理的な接続を管理する基盤"

TCP/IPモデルにおける最下位の層で、
物理的な接続を管理し、データのフレームを物理媒体(通信媒体)に送受信する。
この層は、ネットワーク上のデバイスやノード間の直接的な通信を可能にし、
EthernetやWi-Fiなどのプロトコルが利用される。

ここの話は、以下で解説する"カプセル化・非カプセル"についてをみると、
理解しやすいかもしれないです!! (データのフレームを...とか)

■ 補足: カプセル化・非カプセル

このような通信において、情報の運ばれ方を管理する仕組みの一部として、
"カプセル化"があります。

通信データを階層的な構造に整理し、各レイヤーで必要な情報(ヘッダ情報)を付加することで、
データがネットワークを効率的に移動し、正確に届くようにします。
(以下項目で階層の詳しい話を説明します)

カプセル化・非カプセル化について


"OSI参照モデルとは?"から画像拝借

用語 意味
PDU(Protocol Data Unit)
プロトコルデータユニット
プロトコルで扱うデータの単位
データ+ヘッダのデータ単位ともいう。
どのレイヤーのヘッダが付与されているのかで、呼び名が変わる
カプセル化 上位層のPDUを下位層のPDUに格納すること
非カプセル化 下位層のPDUを上位層のPDUに格納すること

なんだか、この説明だけだとパッとこないので(私はこれじゃわからなかったww)
もっと簡単にすると、


"BIAS.JP のブログ"さんから画像拝借

この画像がわかりやすいですね。

< 各階層でのデータの名称 >

階層 データの呼び方 具体的な情報 一般的なプロトコル
アプリケーション層 メッセージ(Message) アプリケーション固有のデータ HTTP、SMTP、FTP、DNSなど
トランスポート層 セグメント(Segment) ポート番号、シーケンス番号、確認応答番号など TCP、UDP
インターネット層 パケット(Packet) 宛先IPアドレス、送信元IPアドレス、TTLなど IPv4、IPv6
ネットワークインターフェース層 フレーム(Frame) 宛先MACアドレス、送信元MACアドレス、EtherTypeなど Ethernet

データが上位層から下位層に渡る際に、
上位層のデータ(通常はアプリケーションデータ)が下位層のデータに包まれ、
ヘッダ情報が追加される。

各層でデータを「カプセル化」 し、適切なヘッダ情報を追加することで、
データの移動と処理が正確に行われることを保証します。

非カプセル化はデータが上位層に戻る際に、ヘッダ情報を取り除くプロセスを指します。

補足:主なプロトコルとポート番号について

補足: FTP (File Transfer Protocol)

FTP (File Transfer Protocol) とは:

特定のコンピュータ間でファイル転送する時に使用するアプリケーション層のプロトコル。
Telnet/SSHと同様、相手先コンピュータにログインした上でファイル転送を行います。
FTPを利用すればファイルをFTPサーバにアップロードしたり、FTPサーバからダウンロードしたりできる。
FTPでは、ログインする際にやりとりするユーザ名とパスワード情報は、
暗号化されずにそのまま送信されるのでセキュアなFTP通信を行いたい場合、
FTPS(FTP over SSL/TLS)や、SFTP(SSH FTP)を使用する。

FTPが使うのは20番と21番のポートだ。
2つのポートを使用できるため、細かな制御が可能で、大きなデータの転送に適している!!


■ FTPの2つのTCPコネクションとポート

FTPは、ファイル転送に使用されるプロトコルで、上記した通り、
通常、2つの独立したTCP(Transmission Control Protocol)コネクションを使用して通信する。
この2つのコネクションは、
FTPの正常な動作と、データ転送を可能にするために重要な役割を果たす。

< 制御コネクション(Control Connection): ポート21>

制御コネクションは、FTPクライアントとFTPサーバ間で確立される。
このコネクションは、
FTPコマンド(ファイルリストの取得、ファイルのアップロードなど)を
送受信するために使用
される。
通常、ポート21を使用します。
ユーザ認証やコマンドの送信など、FTPセッション全体を制御します。


Youtubeより

< データコネクション(Data Connection): ポート20>

データコネクションは、ファイルの実際のデータ転送のために確立される。
ファイルの転送やリストの取得など、実際のデータ操作のために使用される。
FTPのデータ転送モードに応じて、データコネクションはさらに2つのモードに分かれます
=> アクティブモード(Active Mode)パッシブモード(Passive Mode)
■ アクティブモード: クライアントがデータポートを開き、サーバに接続を要求。
■ パッシブモード: サーバがデータポートを開き、クライアントが接続を要求。


■ アクティブモードとパッシブモードについて

比較表作りました。

モード アクティブモード パッシブモード
データコネクション クライアントがデータポートを開く サーバがデータポートを開く
クライアントの動作 データポートに接続する サーバのデータポートへ接続する
サーバの動作 クライアントのデータポートに接続する データを待ち受ける
ファイアウォール クライアント側でファイアウォールの設定が必要 サーバ側でファイアウォールの設定が必要
利点 クライアントがコントロールできる ファイアウォールの設定が簡単

FTPはクライアントとサーバ間でファイル転送のやり取りを行いますが、
その通信は暗号化されていないため、
悪意がある第三者に介入されると通信内容が外部に漏れてしまう危険性がある。

SSHプロトコルを使って暗号化された通信を利用する「SFTP」であれば、安全性が高く、
最近はSFTPを採用していることが多い。

<わかりやすかったサイトや動画>

補足: DNS (Domain Name System)

DNS(Domain Name System)とは:

インターネット上でホスト名(ウェブサイトのドメイン名など)と,
IPアドレスの相互変換を行うためのシステム。

インターネットの正常な運用に不可欠な役割を果たしており、
ウェブブラウジング、電子メール、ファイル転送などの基本的なインターネットサービスを
可能にしています。

役割 説明
ホスト名からIPアドレスへの解決 ユーザが入力したホスト名(ドメイン名)を
対応するIPアドレスに変換し、
通信先のサーバを特定する。
IPアドレスからホスト名への逆引き IPアドレスから対応するホスト名を検索し、
ネットワーク上のリソースを識別する。
ドメイン名の階層的管理 ドメイン名を階層的な構造で管理し、
一意性を保ちながら新しいドメインの追加を可能にする。
ネットワークトラフィックの最適化 ユーザの地理的な位置に基づいて最適なサーバを提案し、トラフィックを効率化し、負荷分散を行う。
キャッシュと一時的な情報の保持 DNSサーバは解決済みのクエリ情報を一時的に保持し、同じ問い合わせに対する高速な応答を可能にする。

今回はこのようにまとめました!

ここは少し難しい部分でもあり、今回ここに盛り込めなかった
TCP / UDPなどの詳しい内容はまた別記事に、書きたいと思います!

もし間違いなどありましたら、コメントください!ではまた〜🙌

Discussion

Sipadan2k3Sipadan2k3

お疲れ様です。TCUとありますが、TCPの誤記でしょうか?
それともTCPとはまた別の役割を持つものでしょうか?

AirichanAirichan

お疲れ様です‼︎コメントありがとうございます!!
誤字でした...!😭 見つけていただきありがとうございます!