[ネットワーク] TCP / IP徹底理解

Infrastructure

TCP/IPとは

TCP/IP(Transmission Control Protocol/Internet Protocol)は、現在のインターネット通信およびイントラネット通信において最も利用されている通信プロトコル。TCP/IPは複数のプロトコルから成田、中心的な役割を果たすのがTCPとIPであることからTCP/IPと呼ばれている。
※IP通信で使用するプロトコル郡|IP, ICMP, TCP, UDP, HTTP, SMTP, SSH, TELNETなど

TCP/IPの階層モデル

TCP/IPにおける階層モデルは4階層から構成されている。
アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェイス層からなる。

スクリーンショット 2019-10-09 10.16.01.png

TCP/IPプロトコルスタック各層の役割
アプリケーション層主にアプリケーションごとの固有の規定。この層ではHTTP,FTP,SMTP,SSHなどのアプリケーション層のプロトコルにより、通信アプリケーションの機能が実現される。
トランスポート層主にノード間のデータ転送の信頼性を確保するための規定。この層では、TCPまたはUDPのプロトコルを使用する。TCPを使用する場合、信頼性の高い通信を実現する。UDPを使用する場合、信頼性ではなく効率重視のデータ転送を実現する。
インターネット層主にネットワーク間のEnd-to-Endの通信のための規定。この層では、IPが代表的なプロトコルになる。IPにより、ネットワーク上のノードに対し自分の位置情報となる論理アドレス(IPアドレス)を割り当てられるのでEnd-to-Endの通信を実現する。
ネットワークインターフェイス層主に直接的に接続されたノード間の通信のための規定。この層ではLANプロトコルはイーサネット、WANプロトコルはPPPが代表的なプロトコル。イーサネットでは、セグメント上のノードに対して、自分の位置情報となる物理アドレス(MACアドレス)を割り当てることができるので、ローカルでのノード間通信を実現することができる。

コンピュータ間で通信する場合、以下のように送信側でカプセル化、受信側で非カプセル化を行なっている。また下位層ではアプリケーション側のプロトコルがHTTPであろうと、FTPであろうとただのデータとしてしか認識しない。
※カプセル化/非カプセル化によるメリットがよくわからないので後ほど調べて記載する。


※参照元
各層でのヘッダとは、各層の制御情報のことを指している。

IPとは

IP(Internet Protocol)は、OSI参照モデルではネットワーク層で動作するプロトコルであり、TCP/IPの階層モデルにおいてはインターネット層で動作するプロトコル。
IPは論理アドレス(IPアドレス)を各ノードに割り当てることで、各ノードを識別することができる。このIPアドレスの宛先を確認することで、あるノードから別ノードへデータ送信することができる。IPアドレスの宛先情報についてはIPヘッダに含まれている。

IPヘッダのフォーマット

IPヘッダは20バイトのサイズ。オプションが追加された場合は最大で60バイトのサイズになる。データはIPヘッダではなくIPペイロードと呼ばれる部分となる。

各フィールド英語表記ビット各フィールドの説明
バージョンversion4bitIPヘッダのバージョン番号の情報。IPv4では「4」の値が入る。
ヘッダ長IHL4bitIPヘッダの長さの情報。単位は32ビットであることからオプションを使用しない。IPパケットの場合、「5」の値が入る。32bit×5=160bit=20byte
サービスタイプType of Service8bitIPパケットの優先順位の情報。例えば音声トラフィックとデータトラフィックとでは音声トラフィックのデータを優先して送出することができる。
全長total length16bitIPヘッダを含むパケットの全長。
識別番号identification16bit個々のパケットを識別するための情報。パケットが分割された時に分割されたパケットには同じ識別番号にすることで、受信側で複数の分割されたパケットを受信した場合においても、この識別番号に基づき正しく組み立て処理できる。
フラグFlags3bitパケット分割における制御の情報。
フラグメントオフセットFlagment Offset13bitフラグメントされたパケットが元のパケットのどの位置であったかを示す情報
生存時間time to live(TTL)8bitパケットの生存時間を示す情報。
プロトコルProtocol8bit上位層(トランスポート層)のプロトコルが何であるかを示す情報。
ヘッダチェックサムHeader Checksum16bitIPヘッダのチェックサムを表す情報。IPヘッダにエラーがないかを確認するために利用。
送信元IPアドレスSource Address32bit32bit(4byte)で構成された送信元のIPアドレスの情報
宛先IPアドレスDestination Address32bit32bit(4byte)で構成された宛先のIPアドレスの情報
オプションOptions可変長通常は使用されないが、デバッグやテストを行う際に利用される情報
パティングPadding可変長通常は使用されないが、上記のオプションを使用した場合に、IPヘッダ長が32ビットの整数倍にならない場合がある。32ビットの整数倍にするために詰め物として空のデータの0の値を入れることにより調整する。

IPヘッダのフィールドにある「フラグ」の値には以下の3bitの組み合わせが値として入る

ビット意味
先頭ビット 0未使用0
中央ビット 1パケットのフラグメントを許可する
パケットのフラグメントを許可しない
0
1
最終ビット 1分割された最後のフラグメントである
分割された途中のフラグメントである
0
1

IPヘッダのフィールドにある「プロトコル」の値

プロトコル番号略称プロトコル名
1ICMPInternet Control Message Protocol
6TCPTransmission Control Protocol
17UDPUser Datagram Protocol
88EIGRPEnhanced Interior Gateway Routing Protocol
89OSPFOpen Shortest Path First

IPプロトコルの特徴

IPプロトコルには特筆すべき3つの特徴がある。IPプロトコル自体には信頼性のあるものではない。信頼性のある通信にするかは上位層に任せてあり、TCPを使用すれば信頼性の高いTCP/IPの通信となる。UDPを使用した場合は、効率性の高いUDP/IPの通信となる。

IPプロトコルの特徴説明
コネクションレス型通信ネットワーク通信に際して、事前にネットワーク間でコネクションを確立しないでいきなりデータ伝送をはじめる通信のこと。ただし、上位層プロトコルにTCPを使用した場合、コンピュータ間の通信で見ればコネクション型の通信となる。
ベストエフォート型通信ネットワーク通信に際して、最善の努力は尽くすが、必ずしも十分な品質は保証しない通信のことを指す。しかし、上位層プロトコルにTCPを使用することで、IPを使用した通信でもパケット損失がないように見せることができる。
階層型アドレッシングIPプロトコルにより割り当てられる論理アドレス(IPアドレス)はコンピュータが所属しているグループ(ネットワーク部)と、そのネットワークに接続されているコンピュータを識別する(ホスト部)のこれら2階層により構成されている。

TCPとは

TCP(Transmission Control Protocol)はトランスポート層で動作するプロトコル。
TCPの特徴は、信頼性の高い通信を実現するために3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能を利用している。

TCPのヘッダのフォーマット

各フィールドビット数各フィールドの説明
送信元ポート番号16bit送信元のポート番号の値
宛先ポート番号16bit宛先のポート番号の値
シーケンス番号32bit送信したデータの順序を示す値
確認応答番号32bit確認応答番号の値
データオフセット4bitTCPヘッダの長さを示す値
予約6bit全ビット「0」が入る
コントロールフラグ6bitURG, ACK, PSH, RST, SYN, FINの6ビットで構成される。これらのビットは「1」の値が入る場合に意味をなす
ウィンドウサイズ16bit受信側が一度に受信することができるデータ量を送信側に通知するために使用される。送信側は、この値のデータ量を超えて送信することはできない
チェックサム16bitTCPヘッダとデータ部分のエラーチェックを行うために使用される値が入る
緊急ポインタ16bitコントロールフラグのURGの値が「1」である場合にのみ使用されるフィールド。緊急データの開始位置を示す情報が入る
オプション可変長TCP通信において、性能を向上させるために利用する。例えば、TCPコネクションの際に、MSSを決定するために使用される。
パディング可変長TCPヘッダの長さを32ビットの整数にするために詰め物として空のデータの「0」の値を入れることにより調整する
  • コントロールフラグの詳細
ビット値が「1」である時の意味
URG(Urgent)緊急に処理すべきデータが含まれていることを意味する
ACK(Acknowledgement)確認応答番号のフィールドが有効であることを意味する。コネクション確立以外は値が「1」
PSH(Push)受信したデータをバッファリングせずに、即座にアプリケーションに渡すことを意味する
RST(Reset)コネクションが強制的に切断されることを意味する。何らかの異常を検出した場合に送信される
SYN(Synchronize)コネクションの確率を要求することを意味する
FIN(Fin)コネクションの正常な終了を要求することを意味する

バッファリングとは?

ポート番号とは

コンピュータが通信を行うために通信先のアプリケーションプロセスを特定するための番号。コンピュータ間の通信で通信する宛先のIPアドレスが分かれば、そのIPアドレスにデータを送信できるが、そのデータを受信したコンピュータが、どのアプリケーションでデータを受信するか判断する上で必要となる。

ポート番号は「0〜65535」の範囲で割り当てられている。このポート番号は3つに分類できる。

ポート番号のタイプポート番号の範囲説明
well-knownポート番号0〜1023IANAで管理。サーバーのアプリケーションに割り当てられるポート番号
登録済みポート番号1024〜49151IANAで管理。独自に作成したアプリケーションに割り当てられるポート番号。
Dynamicポート番号49152〜65535クライアント側のアプリケーションに自動的に割り当てられるポート番号

UDPとは

UDP(User Datagram Protocol)は、トランスポート層で動作するプロトコル。
UDPの特徴は、TCPのように3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能はなく、ほとんど何もしない。何もしないため信頼性は高くないが、速さやリアルタイム性を求める通信に利用される。

UDPのヘッダのフォーマット

各フィールドビット数各フィールドの説明
送信元ポート番号16bit送信元のポート番号の値
宛先ポート番号16bit宛先のポート番号の値
パケット長16bit「UDPヘッダ」の長さと「UDPデータ」の長さの合計サイズ
チェックサム16bitUDPヘッダとデータ部分のエラーチェックを行うために使用される値

UDPの用途

  1. 音声や映像などのリアルタイム性のあるデータを転送する場合
  2. 複数の相手に同じデータを同時に転送する場合
  3. 信頼性が必要なく、少量のデータ転送をしたい場合

など

TCPとUDPの比較

プロトコルTCPUDP
通信方式コネクション型コネクションレス型
信頼性高い低い
転送速度低速高速
上位プロトコルhttp, telnet, ftp, pop...DNS, NTP, DHCP, SNMP...
主な用途Webの閲覧、メールの送受信、ファイル転送、共有音声通話、Videoストリーミング、マルチキャスト通信、ブロードキャスト通信、少量のデータ転送
主な特徴・ポート番号を利用した上位プロトコルへのデータ受け渡し
・コネクションの確率(3way hand shake)、維持、切断
・順序制御、再送制御、ウィンドウ制御、フロー制御
・ポート番号を利用した上位プロトコルへのデータ受け渡し
・オーバーヘッドが少ない(ヘッダが8byte)
・信頼性がない(パケットロスしても再送しない)

コメント

タイトルとURLをコピーしました