概要
ネットワークについて、知識不足を感じたため、学習をし始めました。
業務は、Web系のコーディングがほとんどですが、原点を理解しないと知識が深まらないため、さらに学んでいきます。
TCP/IP
TCP/IPとは
デファクトスタンダードである。
4つのレイヤで構成されている。(OSIは7つだった。)
TCPを使う場合は、トランスポート層のデータ + ヘッダを「TCPセグメント」、インターネット層のもの「IPデータグラム」という。UDPを使う場合は、「UDPセグメント」になる。
インターネット層
【IP】
データの送り元と送り先をつなぐ通信経路全体のこと。(エンドツーエンド)
IPアドレスを通じて、エンドツーエンドの通信を行う。
IPアドレスは一意!
論理アドレスなので、状況によって変化する。MACアドレスは変化しない、物理アドレス。
特徴
コネクションレス型:送信するだけ。届いたかどうかは感知しない。
ベストエフォート型:保証はしない通信タイプ。
データ回復もしない。
→ スピーディーにやり取りを行うことができる
種類
主流はIPv4(32ビット)だが、枯渇してきているので、IPv6(128ビット)が進められている。
ヘッダ
送信元、宛先のIPなどで、20バイトで定義される。
- フラグメンテーション(識別子・フラグ・グラグメントオフセット)
MTU(マキシマム トランスミッション ユニット)を超えている場合、分割してから送信されること。
識別子:もともと同じデータは同じ識別子を持たせる
フラグメ:データがまだあるかという情報を持たせる
オフセット:どのデータなのか
→ 端末に付くごとに、分割して、組み立てを繰り返すので、効率が悪い。そのため、あまり使われていない。
⇨ TCPセグメンテーションが補っている!!
-
サービスタイプ
データの優先度、データの処理の重みを伝えるもの -
TTL
ルータを中継できる回数。
データが転送し続けるのを防ぐもの。 -
プロトコル
プロトコルの番号データ、ドメイン、IPアドレスの取り決めなどをしている
デフォルトゲートウェイ
ノードは世界との入り口で、その外のネットワークの出入り口になるが、デフォルトゲートウェイ。
ネットワークAの中にノード① → ルーター → ネットワークBの中のノード②
ちなみにルーターは複数のポートを持っている。
そのため、複数のIPアドレスを持つができる。
【ARP】
データを送信する際に、宛先のIPアドレスはわかってもMACアドレスがわからない場合がある。
それを助けるのが、ARPの役割。
IPアドレスからMACアドレスを調べる一連の処理は、アドレス解決という。
イメージ
MACアドレスは端末の住所、IPアドレスはネットワークの住所。
ブロードキャスト
同じネットワークにいる全員に対して同じ内容を送り付けること
引用:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
⇨ ARPがブロードキャストで、 MACアドレスを要求するリクエストを送る。該当のMACアドレスをユニキャスト(宛先のノードから送信元へのやり取り 1:1)で送る。
一度送信したことあるMACアドレスは送信元のノードがARPテーブルなるもので保管する。
【ICMP(インターネット コントロール メッセージ プロトコル)】
IPはエラーとかを教えてくれないので、その点を補うプロトコル。
ping
特定のノードと通信できるかを確認する際のコマンド。
エコー要求を送信し、エコー応答が帰ってきたらOK.
$ ping [option] [対象のIPアドレスまたはドメイン名]
traceroute
ノードまでの経路を取得するコマンド。
Windowsだと、trancert。
$ traceroute [対象のIPアドレスまたはドメイン名]
トランスポート層
【ポート番号】
アプリケーションを特定するための番号。
- ウェルノウンポート:予約済みポート番号
ポート番号 | プロトコル | TCP/UDP | 概要 |
---|---|---|---|
20, 21 | FTP | TCP | File Transfer Protocol. データ転送(20)とコントロール(21)用のポートがある。ファイル転送の基本プロトコル。 |
22 | SSH | TCP | Secure Shell. 暗号化された安全なリモートアクセスを提供。Telnetの代替として広く使用。 |
23 | Telnet | TCP | 平文でのリモートアクセス。セキュリティ上の理由から現在は非推奨。 |
25 | SMTP | TCP | Simple Mail Transfer Protocol. メール送信用の標準プロトコル。 |
53 | DNS | TCP/UDP | Domain Name System. ホスト名とIPアドレスの変換を行う。主にUDP使用、大きなパケットはTCP。 |
67, 68 | DHCP | UDP | Dynamic Host Configuration Protocol. IPアドレスなどのネットワーク設定を自動配布。67はサーバー、68はクライアント用。 |
69 | TFTP | UDP | Trivial File Transfer Protocol. 認証なしの簡易ファイル転送。主に初期設定やファームウェア更新に使用。 |
80 | HTTP | TCP | Hypertext Transfer Protocol. Web通信の基本プロトコル。平文での通信。 |
110 | POP3 | TCP | Post Office Protocol version 3. メール受信用。通常、メールをサーバーからダウンロード。 |
123 | NTP | UDP | Network Time Protocol. ネットワーク上の時刻同期に使用。精度の高い時刻同期が可能。 |
143 | IMAP | TCP | Internet Message Access Protocol. メール管理用。メールをサーバー上で管理可能。 |
161, 162 | SNMP | UDP | Simple Network Management Protocol. ネットワーク機器の監視・管理用。161は一般クエリ、162はトラップ(警告)用。 |
443 | HTTPS | TCP | HTTP over SSL/TLS. 暗号化されたWeb通信。現在のWeb標準。 |
520 | RIP | UDP | Routing Information Protocol. 小規模ネットワークでの経路制御に使用。より大規模なネットワークではOSPFやBGPが一般的。 |
- 登録済みポート:サーバー側で決められているポート
- ダイナミックポート:自由に使用可能
トランスポート層は、ポート間で問題なく通信をするために定義されるプロトコルの集まり
【TCP・UDP】
TCP
TCPは確実に!
コネクション型で情報を送り合いながら、通信をする方式を取る。
セグメント単位で分割して、制御、送信する。
(例)SYN:1(接続していい?) → ACK:1(いいよ!)
上記でコネクションを確立できる。
TCPセグメンテーション:データを分割する
MSS一度に運べる量
トランポート層のルールで、あらかじめ小さいデータを送るようMSSを決める。ヘッダーのオプションに書く。
MTU(各ノードで決められている)に引っかからないようにする。
シーケンス番号:送信元から宛先に送信する分割を元に戻すための番号。
ACK番号:宛先から、受信したいシーケンス番号を送る。
TCPには応答タイマーが設定され、送信元は確認が受信できなかったら、失敗と見て、データを送り直す。つまり再送制御を行う。
応答を待たずに、どんどん送信することができるようにウィンドウ制御を行う。
データをバッファに預け、通信速度を早くする。溜めておけるサイズは、ウィンドウサイズという。
サーバーが高負荷状態の時に、バッファがウィンドウサイズを下げて、フロー制御(受信側)する。
ウィンドウサイズ以外に、輻輳ウィンドウがあり、徐々に確認するためにデータを増やしながら送る。これは送信側が判断する。
上記をスロースタートという。輻輳ウィンドウは、ウィンドウサイズを超えない。
UDP
UDPは速度!
UDPは確認とか行わず、ただ送るだけ。単純構造。
データ単位はデータグラム。動画ストリーミングやIP電話などで使われる。
メールとかは向いていない。