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階層から構成されている。
アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェイス層からなる。
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ペイロードと呼ばれる部分となる。
各フィールド | 英語表記 | ビット | 各フィールドの説明 |
---|---|---|---|
バージョン | version | 4bit | IPヘッダのバージョン番号の情報。IPv4では「4」の値が入る。 |
ヘッダ長 | IHL | 4bit | IPヘッダの長さの情報。単位は32ビットであることからオプションを使用しない。IPパケットの場合、「5」の値が入る。32bit×5=160bit=20byte |
サービスタイプ | Type of Service | 8bit | IPパケットの優先順位の情報。例えば音声トラフィックとデータトラフィックとでは音声トラフィックのデータを優先して送出することができる。 |
全長 | total length | 16bit | IPヘッダを含むパケットの全長。 |
識別番号 | identification | 16bit | 個々のパケットを識別するための情報。パケットが分割された時に分割されたパケットには同じ識別番号にすることで、受信側で複数の分割されたパケットを受信した場合においても、この識別番号に基づき正しく組み立て処理できる。 |
フラグ | Flags | 3bit | パケット分割における制御の情報。 |
フラグメントオフセット | Flagment Offset | 13bit | フラグメントされたパケットが元のパケットのどの位置であったかを示す情報 |
生存時間 | time to live(TTL) | 8bit | パケットの生存時間を示す情報。 |
プロトコル | Protocol | 8bit | 上位層(トランスポート層)のプロトコルが何であるかを示す情報。 |
ヘッダチェックサム | Header Checksum | 16bit | IPヘッダのチェックサムを表す情報。IPヘッダにエラーがないかを確認するために利用。 |
送信元IPアドレス | Source Address | 32bit | 32bit(4byte)で構成された送信元のIPアドレスの情報 |
宛先IPアドレス | Destination Address | 32bit | 32bit(4byte)で構成された宛先のIPアドレスの情報 |
オプション | Options | 可変長 | 通常は使用されないが、デバッグやテストを行う際に利用される情報 |
パティング | Padding | 可変長 | 通常は使用されないが、上記のオプションを使用した場合に、IPヘッダ長が32ビットの整数倍にならない場合がある。32ビットの整数倍にするために詰め物として空のデータの0の値を入れることにより調整する。 |
IPヘッダのフィールドにある「フラグ」の値には以下の3bitの組み合わせが値として入る
ビット | 意味 | 値 |
---|---|---|
先頭ビット 0 | 未使用 | 0 |
中央ビット 1 | パケットのフラグメントを許可する パケットのフラグメントを許可しない | 0 1 |
最終ビット 1 | 分割された最後のフラグメントである 分割された途中のフラグメントである | 0 1 |
IPヘッダのフィールドにある「プロトコル」の値
プロトコル番号 | 略称 | プロトコル名 |
---|---|---|
1 | ICMP | Internet Control Message Protocol |
6 | TCP | Transmission Control Protocol |
17 | UDP | User Datagram Protocol |
88 | EIGRP | Enhanced Interior Gateway Routing Protocol |
89 | OSPF | Open 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 | 確認応答番号の値 |
データオフセット | 4bit | TCPヘッダの長さを示す値 |
予約 | 6bit | 全ビット「0」が入る |
コントロールフラグ | 6bit | URG, ACK, PSH, RST, SYN, FINの6ビットで構成される。これらのビットは「1」の値が入る場合に意味をなす |
ウィンドウサイズ | 16bit | 受信側が一度に受信することができるデータ量を送信側に通知するために使用される。送信側は、この値のデータ量を超えて送信することはできない |
チェックサム | 16bit | TCPヘッダとデータ部分のエラーチェックを行うために使用される値が入る |
緊急ポインタ | 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〜1023 | IANAで管理。サーバーのアプリケーションに割り当てられるポート番号 |
登録済みポート番号 | 1024〜49151 | IANAで管理。独自に作成したアプリケーションに割り当てられるポート番号。 |
Dynamicポート番号 | 49152〜65535 | クライアント側のアプリケーションに自動的に割り当てられるポート番号 |
UDPとは
UDP(User Datagram Protocol)は、トランスポート層で動作するプロトコル。
UDPの特徴は、TCPのように3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能はなく、ほとんど何もしない。何もしないため信頼性は高くないが、速さやリアルタイム性を求める通信に利用される。
UDPのヘッダのフォーマット
各フィールド | ビット数 | 各フィールドの説明 |
---|---|---|
送信元ポート番号 | 16bit | 送信元のポート番号の値 |
宛先ポート番号 | 16bit | 宛先のポート番号の値 |
パケット長 | 16bit | 「UDPヘッダ」の長さと「UDPデータ」の長さの合計サイズ |
チェックサム | 16bit | UDPヘッダとデータ部分のエラーチェックを行うために使用される値 |
UDPの用途
- 音声や映像などのリアルタイム性のあるデータを転送する場合
- 複数の相手に同じデータを同時に転送する場合
- 信頼性が必要なく、少量のデータ転送をしたい場合
など
TCPとUDPの比較
プロトコル | TCP | UDP |
---|---|---|
通信方式 | コネクション型 | コネクションレス型 |
信頼性 | 高い | 低い |
転送速度 | 低速 | 高速 |
上位プロトコル | http, telnet, ftp, pop... | DNS, NTP, DHCP, SNMP... |
主な用途 | Webの閲覧、メールの送受信、ファイル転送、共有 | 音声通話、Videoストリーミング、マルチキャスト通信、ブロードキャスト通信、少量のデータ転送 |
主な特徴 | ・ポート番号を利用した上位プロトコルへのデータ受け渡し ・コネクションの確率(3way hand shake)、維持、切断 ・順序制御、再送制御、ウィンドウ制御、フロー制御 | ・ポート番号を利用した上位プロトコルへのデータ受け渡し ・オーバーヘッドが少ない(ヘッダが8byte) ・信頼性がない(パケットロスしても再送しない) |
コメント