LoginSignup
6

More than 5 years have passed since last update.

[CCNA ICND1] 03. TCP/IP

Posted at

1. TCP/IP プロトコルスタック

TCP/IPはインターネットの標準プロトコル。

1.1. TCP/IP プロトコルスタック

TCPとIPを中心とするプロトコルの集合。

03.1. TCP:IPプロトコルスタック.png

階層 役割
アプリケーション層 アプリケーションの機能を実現
トランスポート層 通信信頼性を提供
インターネット層 最適経路の決定及びEnd-to-end通信を提供
リンク層 隣接のノードとの通信

1.2. TCP/IPのカプセル化と非カプセル化

TCP/IPは階層構造で構成されている。

送信側で作成されたデータは、階層のヘッダを付加して伝送される。

03.2. カプセル化.png


2. インターネット層

インターネット層は、パケットの伝送経路の決定及びアドレッシング方法などを規定。

中心となるプロトコルにはIP、ARP、ICMPがある。

2.1. IP

  1. コネクションレス型

  2. ベストエフォート型

  3. データの回復機能なし

  4. 階層がたアドレッシング

  5. IPv4とIPv6

2.2. IPv4ヘッダ

ヘッダに含まれている情報は多い。

重要なことだけ説明。

名前 説明
バージョン IPv4 / IPv6
ヘッダ長
ToS QoSを行う
識別子 フラグメンテーションの時、復元に使われる
フラグ フラグメンテーションの制御(可能、不可)
TTL パケットが通過できるルータの数
プロトコル ICMP / TCP / UDP
チョックサム ヘッダのエラーチェック
宛先・送信元アドレス
* ToS:Type of Service
* QoS:Quality of Service
* TTL:Time To Live
QoSはリアルタイム性が要求される通信で必要な技術。
輻輳や遅延から守るための仕組みを意味する。

2.3. ARP(Address Resolution Protocol)

IPアドレスからMACアドレスを取得するためのプロトコル。

2.3.1. ARPの動作

  1. ARPテーブル参照

  2. ARPリクエスト送信

  3. ARPリプライ送信

  4. ARPテーブル更新

03.3. ARPフロー.png

2.3.2. 別ネットワークの相手と通信する場合のARP

ルータはブロードキャストを他のネットワークへ転送しないため、ルータの先にある別のネットワークの宛先ホストのMACアドレスを取得できない。

03.4. 別のネットワークのARP.png

2.3.3. ARPテーブルの表示

  • window : arp -a

  • cisco : show ip arp

2.4. ICMP(Internet Control Message Protocol)

IPプロトコルのエラー通知や制御メッセージを転送するためのプロトコル。

2.4.1. エラー通知

コード タイプ
3 Destination Unreachable
5 Redirect
11 Time Exceeded

2.4.2. 問い合わせ(Query)

コード タイプ
0 Echo Reply
8 Echo Request

2.4.3. ping

pingは、特定のノードトIP通信できるかどうかを確認するためのコマンド。

ICMPでは、エコー要求(Type 8)とエコー応答(Type 0)を利用して行う。

2.4.4. traceroute

tracerouteは、送信元から宛先までの経路情報を取得するためのコマンド。

IPヘッダ内のTTL値を利用して経路情報を取得する。

windowではtraceroute、ciscoではtracertコマンドで実施。


3. トランスポート層

3.1. トランスポート層の機能

トランスポート層の役割はアプリケーションに対して信頼性のある通信を提供すること。

トランスポート層の基本サービスとしてセッションの多重化がある。

セッション多重化を1つのIPアドレスを持つコンピュータで複数のアプリケーションを同時に使用できるようにする機能を意味する。

3.2. TCP(Transmission Control Protocol)

3.2.1. コネクション型

データの送信する前に通信相手とのコネクションを確立する。

3.2.2. セグメンテーション

TCPはアプリケーション層からデータを受け取ると、ネットワーク層のMTUに適したサイズに分割しTCPセグメントを生成する。

3.2.3. TCPヘッダ

3.2.3.1. ヘッダ

名前 説明
送信元・宛先ポート
シーケンス番号 分割されたデータ部の位置を表す。
確認応答番号 受信通知、データのシーケンス番号通知
制御ビット 3.2.3.2を参考
ウィンドウ 受信可能なバッファのサイズ
チェックサム エラーチェック

3.2.3.2. 制御ビット

フラグ 意味
URG 緊急処理が必要なデータが含まれている。
ACK 確認応答番号が有効なのを表す。
PSH データをアプリケーションに渡す。
RST コネクションの強制的な切断を要求する。
SYN コネクションの確立を要求する。
FIN データの受信完了、コネクションの終了を要求する。

3.2.4. コネクションの確立と終了

3.2.4.1. コネクションの確立

3ウェイハンドシェイク

  1. ホストA > ホストB:SYN

  2. ホストB > ホストA:SYN & ACK

  3. ホストA > ホストB:ACK

3.2.4.2. コネクションの終了

4回会話

  1. ホストA > ホストB:ACK & FIN

  2. ホストB > ホストA:ACK

  3. ホストB > ホストA:ACK & FIN

  4. ホストA > ホストB:ACK

3.2.5. 順序制御

3ウェイハンドシェイクでコネクションが確立されると、データ転送の段階になる。

1つのTCPセグメントで運ぶことができるデータの量のことをMSS(Maximum Segment Size)という。

03.5. MSS.png

TCPはアプリケーションから大きなデータを受け取ると、MSSに分割し、複数のTCPセグメントとして送信する。

受信側でシーケンス番号を使って正しい順に再構成する。

この処理を順序制御という。

3.2.6. 再送制御

ネットワーク状態によっては、ある1つのセグメントだけが届かなかったり、壊れていたりすることがある。

TCPではその問題を回避するために再送タイマーを設定して確認応答が来ない場合には再送信する。

これを再送制御という。

3.2.7. ウィンドウ制御(フロー制御)

TCPヘッダには、ウィンドウというフィールドがある。

ウィンドウは、受信したデータを一時的に溜めてバッファ領域のことで、この大きさをウィンドウサイズという。

ウィンドウサイズはコネクションを確立するときのSYNセグメントで相手に通知している。

送信側は受信側の確認応答を待たずにTCPセグメントを連続して送信することができ、ACKが1つでも送られてきたら次のデータを送信できる。

この機能をウィンドウ制御(フロー制御)という。

* TCPではスライディングウィンドウという制御方式を使っている。

3.3. UDP(User Datagram Protocol)

3.3.1. コネクションレス型

UDPには、TCPのようなコネクションの確立、確認応答、シーケンス番号を使った順序制御やフロー制御などの機能はない。

UDPはポート番号でアプリケーションを識別してデータを渡すだけのプロトコル。

TCPではデータの単位をセグメントというが、UDPではデータグラムという。

3.3.2. UDPの用途

コネクション確立するときにはオーバーヘッドが大きくなる。

それでリアルタイムでの通信や高速性が要求される場面にはあまり向いていない。

そのような場合には効率の良いUDPを利用する。

3.4. TCPとUDPの比較

TCP UDP
タイプ コネクション型 コネクションレス型
信頼性
シーケンス
オーバーヘッド 大きい 小さい

4. アプリケーション層プロトコル

TCP/IPアプリケーション層はOSI山椒愛でるの第5〜7層に相当。

4.1. DHCP[67、68/UDP]

* DHCP:Dynamic Host Configuration Protocol

4.1.1. 概要

TCP/IP通信に必要なIPアドレスなどの設定情報を自動的に取得するためのプロトコル。

DHCPはUDPの上で動作し、ポート番号には67(サーバ用)68(クライアント用)を使用する。

* DHCPサーバ:設定情報の管理及びクライアントに情報を配信
* DHCPクライアント:IPアドエスなどの設定情報をサーバに要求

4.1.2. DHCPクライアント

一般的なコンピュータのOSには、DHCPクライアントとして動作するためのプロゴラムが標準搭載されている。

それで起動時、ケーブルの接続時に自動的にTCP/IP通信に必要な設定情報を取得する。

4.1.3. DHCPサーバ

DHCPサーバには、DHCPクライアントに割り当てるための各州の情報を設定する。

クライアントに配布するIPアドレスの範囲は、アドレスプールとして定義しておく。

DHCPサーバが配布する情報

1. IPアドレス
2. サブネットマスク
3. リースの有効期限
4. デフォルトゲートウェイ
5. ドメイン名
6. DNSサーバのIPアドレス
7. NTPサーバのIPアドレスなど

4.1.4. DHCPの仕組み

DHCPサーバとDHCPクライアントが同じサブネット上に接続されている場合、クライアントがサーバの設定情報を取得するときにやり取りされるメッセージがある。

メッセージ名 送信者 種類 説明
DHCP DISCOVER クライアント Broadcast DHCPサーバの検索
DHCP OFFER サーバ Unicast DISCOVERの応答、情報の通知
DHCP REQUEST クライアント Broadcast 通知された情報の取得のための要求
DHCP ACK サーバ Unicast 情報の提供

4.1.5. 補足

DHCP DISCOVERはブロードキャストで送信されるため、ルータを超えて転送されない。

DHCPサーバがブロードキャストドメインに存在しない時はDHCPリレーエージェントの設定が必要。

4.2. DNS[53/UDP、TCP]

* DNS:Domain Name Server

4.2.1. 概要

人間にとって理解しやすいホスト名(ドメイン名)からIPアドレスを検索する仕組み。

ホスト名とIPアドレスの対応付けを行うことを名前解決という。

4.2.2. 名前解決の仕組み

03.6. 名前解決.jpg

4.2.3. 別:hostsファイルによる名前解決

hosts(拡張子なし)というファイルにIPアドレスとドメイン名を1行で記述しておくだけで、DNSよりも優先的な参照が行われる。

例) 198.133.219.25 cisco.com

* windows8では「C:/Windows/System32/drivers/etc/hosts」にhostsファイルがある。

4.3. HTTP[80/TCP]、HTTPS[443/TCP]

* HTTP:Hyper Text Transfer Protocol
* HTTPS:Hyper Text Transfer Protocol Secure

4.3.1. 概要

ウェブバラウザとウェブサーバの間でデータをやりとりするためのプロトコル。

HTTPで転送されるウェブページは、HTML(Hyper Text Markup Language)言語に技術されたHyper Text

4.3.2. ウェブアクセスの流れ

  1. ユーザがURLを通じてウェブアクセス開始
  2. ブラウザは、サーバに必要なデータをHTTPリクエストで要求
  3. サーバはリクエストの処理&返信
  4. ブラウザは、受け取ったデータを処理してブラウザの画面上に表す

4.3.3. HTTPリクエストの主なメッセージ

Msg. 意味
GET データの要求
HEAD データに関する情報要求
POST サーバにデータ送信
PUT サーバにファイルをアップロード
DELETE サーバにデータの削除要求

4.3.4. HTTPレスポンスの主なメッセージ

コード 意味
100番台 続きの情報がある
200番台 成功
300番台 リダイレクト
400番台 クライアントエラー
500番台 サーバエラー

4.3.5 HTTPS

HTTPにSSLに夜データの暗号化機能を付加したプロトコル。

4.4. FTP[20、21/TCP]、TFTP[69/UDP]

* FTP:File Transfer Protocol
* TFTP:Trivial File Transfer Protocol

4.4.1. FTP

特定のコンピュータ間でファイル転送を行うためのプロトコル。

TCP上で動作し、信頼性のあるファイル転送を実現する。

FTPでは2つのコネクションを使用して通信を行う。

  1. データ転送用コネクション[20]

  2. 制御用コネクション [21]

FTPでは、FTP通信の最初にIDとパスワードを使って相手を人すきする認証プロセスが必要であり、通信にはデータ用と制御用のコネクションを確立する。

4.4.1.1. FTPの2つのモード

FTP通信には「アクティブモード」と「パッシブモード」の2つのタイプがある。

* アクティブモード:サーバ側からコネクション要求
* パッシブモード:クライアント側からコネクション要求
* 制御用のコネクションは、どちらのモードでもクライアント側から要求

4.4.1.2. 2つのモードの理由

企業内の情報が企業外部に流出することを防ぐためには一般的にファイアウォールがある。

アクティブモードの場合、サーバからのデータ転送はファイアウォールによって防ぐことができる。

パッシブモードの場合は通信できるようになる。

4.4.2. TFTP

UDP上で動作する。

信頼性を提供するためのコネクションの確立や認証を行わず、効率の良いファイル転送を実現するが、データを受け取るとTFTP地震で確認応答を返す機能は持っている。

4.5. SMTP[25/TCP]、POP3[110/TCP]

SMTPとPOP3は電子メールのやり取りのためのプロトコル。

* SMTP:Simple Mail Transfer Protocol
* POP3:Post Office Protocol version3

4.6. Telnet[23/TCP]、SSH[22/TCP]

TelnetとSSHは離れた場所にあるルータやサーバを遠隔操作するためのプロトコル。

* SSH:Secure SHell

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6