Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【NW】TCP/IP

TCP/IPとは

TCP/IPTCP/IPプロトコル・スイート)とは、インターネット上の通信に必要なプロトコルの寄せ集めたプロトコル群(プロトコル・スイート)の総称です。
TCP/IPでは寄せ集めたプロトコルを機能ごとに4つのグループに分類しています。また各グループの関係は階層構造で定義しており、この点においてOSI基本参照モデルと共通しています(階層モデル)。

そもそもプロトコルって何?という方はこちら。

rennnosukesann.hatenablog.com

OSI基本参照モデルって何?という方はこちら。

rennnosukesann.hatenablog.com

TCPの階層モデル

TCP/IPの階層モデルは以下の4つの階層からなります。

f:id:rennnosukesann:20180713134723p:plain

アプリケーション層

アプリケーションレベルの通信について定義します。
OSI基本参照モデルのアプリケーション層、プレゼンテーション層、セッション層がこの層に該当します。 この層に位置するプロトコルとして、Webドキュメントのやり取りを行うHTTPや、メール転送を行うためのSMTP、ファイル転送を行うためのFTPがあります。

OSI同様、アプリケーション内部でやり取りされるデータを中心とした通信について定義されます。したがって、通信そのものの信頼性や、送信元・送信先・通信経路の決定などは下位のプロトコルに任せられます。
一方、OSIと異なりプレゼンテーション層とセッション層に関する責務も持ちます。したがってコンテンツの文字コードや圧縮、通信の接続・切断やデータ送信順序・タイミングなどについてもこの層に位置するプロトコルが定義します。

トランスポート層

二点間通信の信頼性について定義します。
OSI基本参照モデルトランスポート層に該当します。責務に関してはOSIと同様、通信の信頼性に関するものを担保します。代表的なプロトコルにはコネクションの確立と再送制御を行うTCPコネクションレス型で再送制御を行わないUDP等が挙げられます。

通信の信頼性は通信速度とのトレードオフなので、あえて信頼性を捨てて通信速度を優先したプロトコルを採用する・・・といったことも可能です。

インターネット層

二点間の通信について定義します。
OSI基本参照モデルネットワーク層に該当し、ネットワーク上の送信元・送信先情報、経路制御などに関する責務を持ちます。代表的なプロトコルとしてIPがあります(というか通常のインターネットであればIP一強だと思われます)。その他のプロトコルとしてネットワーク上のホストを監視するためのICMPや、パケットに暗号化処理・改竄検出の機構をもたせるIPsecなどが挙げられます。

リンク層

物理的に接続されたホスト間の通信について定義します。
OSI基本参照モデルデータリンク層物理層がこの層に該当し、論理的な通信方法だけでなく物理的な通信に関する定義も行います。代表的なプロトコルとしてMACアドレスIPアドレスを変換するARPや、二点間通信のプロトコルであるPPP等が挙げられます。またプロトコルではありませんが、イーサネットと呼ばれる技術規格に則った有線LANがこのレイヤのプロトコルと組み合わせて使われることが多いです。

OSI基本参照モデルとの違い

階層構造である点はOSI基本参照モデルと共通しているのですが、大きく異なる点もあります。それは、 TCP/IPが実装重視の階層モデルであるということです。

OSI基本参照モデルは「コンピュータ間通信に置いて必要な機能は何か」という考えのもの作成されたのに対し、TCP/IPの階層モデルは「どのように実装されればコンピュータ間通信を実現可能か」を念頭に置いて作成されたと言われています。そのような背景から、TCP/IPでは実際のプロトコル実装を伴って階層モデルを定義しています。

また、TCP/IPではRFC(Request for Comment)と呼ばれるプロトコル仕様のドキュメントがあり、プロトコルの仕様はこのRFC上で決定されます。RFCを策定するメンバーは段階的にプロトコルの策定を行うのですが、このとき提案段階のプロトコルからすでに実装を開始していきます。提案からドラフト入りし、標準化される前に様々な意見を取り込み、仕様をアップデートさせていくのですが、それに合わせて実装もアップデートしながらテストしていくようです。そのため、完全に標準化される頃にはすでに世の中に出回っている状態になっていると言われています。実際、SMTPなどのメール関連のプロトコルは彼らのメーリングリスト内のやり取りに使われ、そのやり取りの中でプロトコル自体もアップデートしていったという逸話もあります。

参考

https://amzn.to/2m8XBV3amzn.to

インターネット・プロトコル・スイート - Wikipedia