【TCP/IP】基礎知識

IPといえば”コレ!”な、大人気のこちらの書籍を通して学んだ要点をまとめました。

書籍の詳細

書籍名: マスタリングTCP/IP 入門編(第6版)
出版社: オーム社
発売日: 2019/12/6

TCP/IP登場の背景とその歴史

パケット通信に注目が集まった理由
  • ネットワークの一部が攻撃によって破壊されても迂回経路を通してデータが配送され、通信が停止しないため(中央集中的なネットワークでは止まってしまう)
  • 複数ユーザーで同時に1つの回線を共有できる
    →利用効率が上がり、回線コストが下げられる

TCP/IPの標準化

TCP/IPという言葉がもつ意味

TCPとIPという2つのプロトコルだけでなく、IPを利用したり、IPで通信したりするときに必要となるプロトコル群の総称として使われる。

インターネットの基礎知識

「インターネット」という単語の本来の意味

もともと:複数のネットワークを結んで1つのネットワークにすること

現在:全世界を接続しているコンピュータネットワークのこと

インターネットとTCP/IPの関係

インターネットで通信をするためにはプロトコルが必要。

TCP/IPはインターネットのために開発されたプロトコル。

つまり、、

インターネットのプロトコルといえばTCP/IPで、

TCP/IPといえばインターネットのプロトコル。

インターネットの構造

ネットワークとネットワーク間はNOC(Network Operation Center)で接続されている。

異なるネットワーク間はIX(Internet Exchange)で接続されている。

これらによって接続されることで、巨大なネットワークが構築される。

ISPと地域ネット

インターネットに接続するためには、ISP(Internet Service Provider)や地域ネットに接続を依頼する必要がある。

TCP/IPの階層モデル

TCP/IPで登場するプロトコルは、基本的にOSI参照モデルに当てはめることができることができるが、階層モデルの考え方が異なるため、階層モデルが少し異なる。

それぞれの考え方

OSI参照モデル・・・通信プロトコルに必要な機能は何か

TCP/IPの階層モデル・・・プロトコルをコンピュータに実装するためにはどのようにプログラミンしたらよいか

OSI参照モデル TCP/IPの階層モデル

アプリケーション層

アプリケーション層
プレゼンテーション層
セッション層
トランスポート層 トランスポート層
ネットワーク層 インターネット層
データリンク層 ネットワークインタフェース層
物理層 (ハードウェア)

それでは、TCP/IPの階層モデルの各層について詳しく見ていきましょう!

ハードウェア(物理層)

物理的にデータを転送してくれるハードウェア。

これは、イーサネット(LANケーブルなど)や電話回線のこと。

ネットワークインタフェース層(データリンク層)

OSとハードウェアの橋渡しをするソフトウェア。

インターネット層(ネットワーク層)

ここではIPが使われ、IPはIPアドレスをもとにしてパケットを転送する。

トランスポート層

コンピュータの内部で動作している複数のプログラムから、どのプログラムとどのプログラムが通信しているのかを識別し、通信を実現する。

2つの代表的なトランスポートプロトコル
TCP
(Transmission Control Protocol)
コネクション型
両端のホスト間でデータの到達性を保証
データの総量が多い通信に向いている
UDP
(User Datagram Protocol)
コネクションレス型
送信したデータが相手に届いているかのチェックはしない
パケット数が少ない通信に向いている

アプリケーション層(セッション層以上の層)

いくつかのアプリケーションを例に見ていきます。

WWW

ブラウザというソフトウェアを通してネットワークの中を旅できる。

ブラウザとサーバー間の通信で使われるプロトコルがHTTP ←OSI参照モデルのアプリケーション層

送信に使われる主なフォーマットがHTML ←OSI参照モデルのプレゼンテーション層

Email

SMTP(Simple Mail Transfer Protocol)というプロトコルが利用されている。

ファイル転送(FTP)

ファイル転送のプロトコルにはFTP(File Transfer Protocol)が利用される。

ファイル転送時には2つのTCPコネクションを確立

  • 指示をするための制御コネクション
  • データを転送するためのデータコネクション
遠隔ログイン(TELNETとSSH)

遠隔ログインでは、TELNETやSSHプロトコルが用いられる。

ネットワーク管理(SNMP)

ネットワーク管理には、SNMP(Simple Network Management Protocol)というプロトコルが利用される。

機器を管理するプロブラムと管理されるルーター等の通信に使われるプロトコル。

TCP/IP の階層モデルと通信例

データと処理の流れを見ていきます。

データを表す5つの単位

パケット何にでも使えるオールマイティな用語
フレームデータリンクのパケットを表す
データグラムネットワーク層以上でパケット単位のデータ構造を持つプロトコルで使用
セグメントストリームベースのTCPに含まれるデータを表す時に使用
メッセージアプリケーションプロトコルのデータ単位を表す時に使用

パケットの送信処理

電子メールを例にTCP/IPによる通信の例を見ていきます。

①アプリケーションの処理

送信ボタンを押すとTCP/IPによる通信が開始される。

まず、符号化の処理が行われる。これはOSI参照モデルのプレゼンテーション層に相当。

変換後、通信のコネクションをいつ確立していつデータを転送するかを管理。これはOSI参照モデルのセッション層に相当。

②TCPモジュールの処理

アプリケーションから渡されたデータの前にTCPのヘッダが付けられる。そしてこのデータがIPに送られる。

TCPヘッダには以下が含まれる。

  • ポート番号
  • シーケンス番号
  • チェックサム
③IPモジュールの処理

IPではTCPから渡されたTCPヘッダとデータの塊を1つのデータとして扱う。

そして、TCPヘッダの前にIPヘッダを付ける。

④ネットワークインタフェースの処理

IPパケットにイーサネットのヘッダが付けられて送信処理が行われる。

イーサネットに書き込まれる情報

  • 宛先と送信元のMACアドレス
  • イーサネットのヘッダに続くデータのプロトコルを示すイーサネットタイプ

パケットの受信処理

送信ホストでの処理の逆。

⑤ネットワークインタフェースの処理

イーサネットヘッダの宛先MACアドレスが自分宛かどうかを調べる。

自分宛でない場合

そのパケットを捨てる。

自分宛の場合

イーサネットタイプフィールドよりデータの種類を調べ、データを渡す。

⑥IPモジュールの処理

宛先IPアドレスが自分のホストのIPアドレス→そのまま受信して上位層のプロトコルを調べる。

TCPならば、TCPの処理ルーチンにIPヘッダを除いたデータの部分を送る。

⑦TCPモジュールの処理

ヘッダやデータが壊れていないか、データを順番通り受信しているかを確認する。

⑧アプリケーションの処理

送信側が送信したデータをそのまま受信する。

以上、TCP/IPの基礎知識についてでした!

コメント