ネットワークメモ
HTTPのバージョン推移
1990:HTTP/0.9
1996:HTTP/1.0
1997:HTTP/1.1
2015:HTTP/2
2018:HTTP/3
keep-Alive
少しだけセッションを残しておく機能
HTTPは一度リクエスト/レスポンスの関係が終わるとセッションは終了
↓
1画面にたくさん画像が埋め込まれていると、何度もセッションを張り、クローズすることになる
↓
TCPの3ウェイハンドシェイクなどのオーバーヘッドがかかってしまい、1画面全体のレスポンスに影響が出る
↓
1画面を表示するぐらいセッションを残しておくと、オーバーヘッドが軽減される
これがkeep-Alive
Session・Cookie・Cache
Session
一連の処理の始まりから終わりまでを表す概念の事
Cookie
正式には、HTTP Cookie
クライアントに保存された情報の事。Webサービスのログインに関する情報などを含む。
Webブラウザが持っているデータを保存できる領域。
Cache
Webページの情報を一時的に保存しておく仕組みの事
TCPでデータを喪失しない仕組み
確認応答と再送によって実現している。
受信側にTCPセグメントが到着すると、受信側は送信側に届いた事を伝えるための返事を返す。
この返事が ACK acknowledge
:認める
TCPヘッダーのACKに関する情報が入ったTCPセグメント
を返す
送信側はセグメントが無事到着したと判断
データの順番を保証する仕組み:
各TCPセグメントに、シーケンス番号
と呼ばれる数字をつけることで実現。
受信側にACKを返す時、次に欲しいTCPセグメントのシーケンス番号をACK番号として伝える
上記のように、同期して通信していると効率が悪い。
ACKを待たずに送信を行うウィンドゥという概念を持っている。
送信可能なサイズ = ウィンドウサイズ
受け取りが追いつかなくなると、受信ウィンドウを小さくしてそのことを伝える
このようにして、TCPフロー制御を行う
IPの役割
指定された宛先ホストまで渡されたデータを届ける
・IPアドレスによる最終宛先へのデータ転送
・ルーティング
サブネットマスク
IPアドレスの32ビットのうち、「どこからどこまでがネットワーク部でどこからどこまでがホスト部であるか」
を示すもの
サブネット:ネットワークを複数の小さなネットワークに分割したもの
マスク:覆い隠す物という意味
一般的に以下のような場合に利用される
- 会社の部署間でデータの参照を制限する場合
- パソコンやサーバの台数が多く分割して管理する場合
- 開発環境と本番環境を分けるなど、環境を切り離す場合
192.168.0.0 /24 ←CIRD形式ではこれ
IPアドレス: 172.20.100.52
サブネットマスク: 255.255.255.192
↑の表記もあり
ネットワークアドレスの算出
IPアドレスとサブネットマスクをAND演算すると、ホストアドレスの部分だけがゼロクリアされて、
ネットワークアドレス(厳密にはネットワークアドレスとサブネットアドレスを合わせたアドレス)が
得られるようになる
ネットワークアドレスの算出
- IPアドレス:192.168.10.25
- サブネットマスク:255.255.255.240
サブネットは1111111.11111111.1111111.11110000
マスクされてない部分 = 4つ
32bit -4 = 28 マスクされてる部分
192.168.10.16/28 ←
256 -240 = 16
256/16 = 16
↓
192.168.10.16・28がネットワークアドレス
参考:https://www.ipvx.info/ip_cal/cal_netip_hand/
資料: https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6#:~:text=サブネットマスクはIPアドレス,マスクの指定は必須)。
ブロードキャストアドレス
ホスト部のビットがすべて1のアドレスは、ブロードキャストアドレスと呼ばれる特殊なアドレス。
ネットワーク内のすべての機器にデータを一斉配信
するために使われる特殊なアドレス。
プロトコルごとに形式が決まっている。
ネットワークに接続したばかりの未設定の端末が、設定情報を教えてくれるサーバを探索するといった特殊な用途に用いられる
ユニキャスト
コンピュータネットワークにおいて、
単一の送信相手を指定してデータを送信
すること。
IPアドレスはなぜ192.168で始まるアドレスをよく使うのか???
プライベートネットワークで自由に使ってよいアドレスは、RFC1918
で定められている
10.0.0.0/8 (10.0.0.0 〜 10.255.255.255の範囲)
172.16.0.0 (172.16.0.0〜172.31.255.255の範囲)
192.168.0.0/16 (192.168.0.0〜192.168.255.255の範囲)
インターネットで通信可能なアドレス:パブリックアドレスと呼ぶ
ルーティング
IPは途中経路でも様々な処理が行われる
↓
宛先ホストが同じネットワーク内にいるとは限らない
↓
異なるネットワークにいる場合、最終宛先に届くまで宛先を知ってそうなルーターに転送をお願い
する
ルーティングテーブル(経路表)を使う
ルーティングテーブル
宛先のホストまでパケットを送るため、ホストやルーターは経路制御表をもっている
Ethernet
リンク層プロトコル
の事。通信回線。
TCP/IPプロトコルのネットワークインターフェース層に対応する有線の規格
※データリンクは通信回路の事を指す。
同一ネットワーク内のネットワーク機器まで、渡されたデータを届ける。
ケーブル上の通信で使われ、電気信号で転送される。
データ転送にはMACアドレス
が使われる
Medium Access Control
ネットワーク通信を行うハードウェアに割り振られたアドレス
。
原則として、世界中でその機器を一意に特定できる物理アドレス
とされている。
VLAN
仮想的にネットワークを分ける仕組み
ネットワークの配線を変えずにネットワークの構造を変更できる
スイッチのポートごとにセグメントを分ける
↓
ブロードキャストのトラフィックが流れる範囲を区切る
↓
ネットワークの負荷を軽減
セキュリティの向上
コネクションプーリング
プログラムがDB管理システム(DBMS)へアクセスする際、アクセス要求のたびに
接続や切断を繰り返すのではなく、
一度形成した接続窓口(コネクション)を維持し続けて使い回す手法。
障害が発生したら、
コネクションが一旦切断され、再接続される
↓
全て使用中の場合、設定最大値まで接続数が増える
↓
それ以上の接続要求が来た場合には一定時間待機する
↓
待機の閾値を超えるとエラーを返す
・最小値と最大値は同じにしておく
・ファイアウォールの有無を確認しておく
Nat (Network Address Translation)
IPアドレスを変換する技術
一般的にはプライベートIPアドレスをグローバルIPアドレスに変換
する技術
企業ネットワーク内のクライアントPCがインターネットに接続する場合、
プライベートIPアドレスをグローバルIPアドレスに変換
(NAT)する必要がある。
一般的にIPパケットのヘッダ内にある送信元IPアドレスを変換
する
FPM
FastCGI Process Manager
FastCGI
Webサーバー上でユーザプログラムを動作させるためのインターフェース仕様の一つ
nginx と PHP-FPM の通信
TCP か UNIX ドメインソケットのどちらかで通信するのがメジャー
TCP と UNIX ドメインソケットの違い
ソケット
通信するアプリケーション同士の出入り口の事。
IPアドレスとポート番号の組み合わせで表現できる。
INETドメイン
概要
ネットワーク上でマシンを越えてのプロセス間通信
特定方法
IPアドレス+ポート番号
通信箇所
他マシンと通信可
UNIXドメイン
概要
同じマシン上で動いているプロセスが通信を行うためのソケット
アドレス・名前空間としてファイルシステムを使用
している。
ファイルシステム内のinodeとしてプロセスから参照される
特定方法
ファイル名で一致
通信箇所
自マシンのみ
UNIXドメインソケットは、TCPソケット(INETドメインソケット)よりも遥かにスループットが優れてるらしい
ミドルウェア概要
OSとアプリケーションの間に入ってサーバやDBとのやり取りを行うソフトウェア
アプリ
ミドルウェア
OS
ハードウェア
種類
Webサーバ
ブラウザからのリクエストに応じてWebページを送信するミドルウェア
アプリケーションサーバ
Webサーバからのリクエストに応じて、動的コンテンツを生み出すミドルウェア
PHPなどの言語で作成される
DBサーバ
MySQL, Postgres等
IPアドレス概要
個々のノード(機器)を識別
するための一意の32ビット(ipv4)情報
マルチキャストアドレスとブロードキャストアドレスは複数のノードを同じアドレスで指定できる
IPv6は128ビット
CIDR概要
classless inter-domain routing
クラスを使わないIPの割り当てと経路情報の集成を行う技術
インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減
させるための機構
クラスを使わないCIDRでは、任意のブロック単位で区切る
ことができるため、
IPアドレス空間を効率的に利用
することができる
分かりやすい資料:
macアドレス
media access control
ネットワークに割り当てられる一意のアドレス
ネットワークごとに規定されている通信媒体へのアクセスを制御
するためのアドレス
ARP
address resolution protocol
イーサネットでTCP/IPを使う場合、IPのレベルではIPアドレスで宛先や送信元を指定する
実際の通信ではイーサネットを使うので、macアドレスでノードを指定しなくてはならない
↓
実際に通信する際、IPアドレスから対応するmacアドレスを求めるという作業が必要になる
ARPというプロトコルを使い、ネットワークを使ってIPアドレスとMACアドレスの対応付けを行う
ARPは、ARP要求
とARP応答
という2種類のデータを送信しあって、MACアドレスを取得する
ARP要求の送信
IPアドレスに対する宛先MACアドレスが不明
対象の端末がわからない
↓
イーサネットヘッダの宛先MACアドレスをブロードキャストアドレス
(FF-FF-FF-FF-FF-FF)にして全体に問い合わせする
ARP応答の送信
対象でない端末→何も応答しない
対象端末→00-00-00-00-00-BB
MAC AddressをARPパケット内に含めて送信
(ユニキャスト通信)
↓
ARPテーブルに保存する
↓
次回からARPテーブルに登録された情報に従って宛先MAC Addressを指定
デフォルトゲートウェイ
LANなどのネットワークから外部ネットワークに接続する際、通信の出入り口
になるもの
接続に必要なルーターを中継ルーターとしてIPアドレスを指定
する方式
送信相手までの経路がわからない場合に、とりあえずデータを送信する中継機器のIPアドレス
ゲートウェイとは?
ネットワークの境界に置かれ、ネットワーク間のデータの流れを中継するルータなどの装置のこと
デフォルトゲートウェイは送信元と同じネットワークにあるゲートウェイの中から選択され、送信元自身には宛先までの経路がわからない場合にデータを送信し、経路選択と中継を依頼する
インターネット上のルータは自らの持つ経路情報を元に経路選択を行い、隣接する他の機器から次の中継先を選んで転送する。
が、末端のパソコンなどの機器は外部ネットワークとの間に一台しかルータがない(家庭内LANのブロードバンドルータなど)ことが多いため、デフォルトゲートウェイに設定したルータなどに常にデータを転送する。
UDP
user data protocol
TCPに比べて送受信されるデータの誤りや順序の違いを検出する機能はない
コネクションが確立しているかどうか、
確認する状態(ステート)がないため、ステートレスのプロトコル
と言われている
通信の処理にかかるコストが少ない
ので、DNSやDHCP (dynamic host configuration protocol) NTP (network time protocol) SNMP (simple network management protocol)のような、
応答性の良さを優先したい通信
や、リアルタイム性が重要視される通信
で使われる。
well-known ports
TCPやUDPのポート番号のうち、著名なサービスが利用するために予約されている0〜1023番
のこと
例:
HTTPの80番やFTPの20・21番、SMTPの25番、POP3の110番、DNSの53番
一時ポート:ephemeral ports
特定の用途や固定的に使用されることを想定しておらず、どのようなソフトウェアやプロトコル からも自由に利用することができる
もの
3ウェイハンドシェイク
TCPにおけるコネクションの確立
のこと
3回のやりとり
によって確立される
SYN synchronize 同期
コネクションを確立する際に相手に送信する
ACK acknowledge 確認の応答
TCPセグメントが何らかの確認応答があり、TCPヘッダ中の確認応答番号が有効な値である事を示す
①SYN=1 ACK=0 シーケンス番号0
接続確認
②SYN=1 ACK=1 シーケンス番号0 確認応答番号1
③SYN=0 ACK=1 シーケンス番号1 確認応答番号1
NIC
Network Interface Card
LANに接続するためのカード型の拡張装置
単にNICといった場合は、Ethernetに接続するためのコネクタ
や通信用ICなどを
内臓した拡張カード
のことを指す。
SPFレコード
Sender Policy Framework
メール送信ドメイン認証
メールが、正規のサーバから送信されているかどうかを判断
する
- 期待通りの相手からメールが送られた保証がとれる
- 送信者はなりすましやブランド名を騙ったフィッシングメールが送信されない
仕組み
①送信サーバと受信サーバの間でTCPコネクションが開かれる
②コネクションが確立したのち、HELOコマンドによってメールの送信元ドメインを受信サーバに伝える
③MAIL FROMコマンドによって送信元メールアドレスを伝える
④MAIL FROMコマンドで入力されたドメインがSPFレコードのチェックに使用されるドメインで、メールのエンベロープFromとReturn-Pathヘッダに設定される
⑤受信サーバは、送信サーバのIPアドレスがSPFに含まれているかどうかをチェックする
ポートフォワーディング
IPネットワーク上にある機器が、自らのIPアドレスのTCPやUDPの特定のポート番号への通信
を、別のアドレスの特定のポートへ自動的に転送
すること
引用元:
リバースプロキシ
- クライアントとサーバの通信の間に入る
- サーバの応答を代理(proxy)する
- 通信を中継する
機能
- 性能向上(スループット)
- 負荷分散
- キャッシュ、圧縮による高速化
- 異なるアプリ、フレームワーク、プラットフォームの統合
- セキュリティの強化
- SSL/TLSの強化
- オープンソースとして、nginx/apacheが有名
FQDN
fully qualified domain name
完全修飾ドメイン名
ドメイン名とホスト名を繋げた文字列のこと
ドメイン名:http://www.mihon.com
ホスト名:http://www.mihon.com
FQDN:http://www.mihon.com
PGP
Pretty Good Orivacy
たいへんよいプライバシー
- ファイルやメールの暗号化に使われる
- 通信の暗号化は行わない
- ファイルはセッション鍵と呼ばれる乱数の値を鍵として、対称暗号により暗号化される
- セッション鍵は、受信者の公開鍵で暗号化される
- 必ずしも安全でない通信経路やサーバを介しても、メッセージの秘密を守る仕組み
- 復号は受信者の秘密鍵を利用する
無線LAN チャネルとは
データの送受信に必要な周波数の幅
無線LAN機器同士でデータを送受信するには、同じチャネルを使用する必要がある
↓
無線LAN機器同士 = 無線LANクライアントとアクセスポイント同士
TXT(テキスト)レコードについて
DNSで定義されるそのドメインについての情報の種類の一つ
DNSサーバのゾーンファイルの中身
DNSサーバには、
- フルサービスリゾルバ (DNSキャッシュサーバ)
- 権威DNSサーバ (DNSコンテンツサーバ)
の2種類がある。
PCからの問い合わせ→フルサービスリゾルバが受付
↓
対応しきれない場合、権威DNSサーバに問い合わせ
↓
権威DNSサーバは自分の管理エリアの情報が書かれているファイル
(ゾーンファイル)をみて、問い合わせに答える
好きにコメントを書ける行 = TXTレコード
参考:
SSHのわかりやすい解説記事
OAuthの解説
①ユーザーのデータ
②ユーザーのデータを管理するリソースサーバ
③ユーザーのデータを利用したいクライアントアプリケーション
④ユーザーのデータをやりとりする口 API
例:
APIからユーザーのデータが吐き出されるが、何も対策がないと悪意のあるアプリにも
ユーザーのデータが渡ってしまう
APIを守る仕組みが必要
↓
クライアントアプリケーションにアクセストークン
を持たせる
↓
ユーザーデータを要求する際、アクセストークンを掲示
↓
リソースサーバはアクセストークンを取り出してデータを利用する権限があるかどうかを調べる
↓
ユーザーのデータをクライアントアプリに渡す
アクセストークンを発行するのは誰??
↓
認可サーバー
認可サーバはアクセストークンをクライアントアプリに渡すかどうか、ユーザーに確認する
↓
ユーザーが許可すれば認可サーバはアクセストークンを生成して渡す
アクセストークンの要求と応答を標準化したもの
↓
OAuth 2.0
参考記事:
SNMPとは
UDP/IPベースのネットワーク監視、ネットワーク管理を行うためのプロトコル
ルーター、スイッチなどのネットワーク機器、WindowsやUNIXサーバーなどの状態監視、
リソース監視、パフォーマンス監視、トラフィック監視を行うために使用する。
一般的に、サーバーに対しては、CPU使用率、メモリ使用率、ディスク使用率、プロセス監視、
Windowsイベントログ監視、Syslog監視を行う。
ネットワーク機器に対しては、各ポート上で送受信されたパケット数、エラーパケット数、
ポートの状態(up/down)、およびCPU使用率、メモリ使用率などを監視する。
ポーリング
ソフトウェアを連携させる制御方式
トラップ
障害や通信量の急増などの変化が発生した際に、
そのことを回線を通じて管理コンピュータに通報する仕組み
AWS関連のドメイン関連用語まとめ
全体の大まかな流れ
- webサーバでwebサイトを公開
- webサーバのIPアドレスを確認
- ドメインを取得
- ドメインを取得したサービスで、使用するDNSサーバを設定
- 設定が反映されるのを待つ
- 完了
IPアドレスのおさらい:
webを通じて何かを見るには、見たいものがある場所をPCに対して指定する必要がある
↓
荷物を送るための住所のようなイメージ
↓
その住所 = IPアドレス
ドメイン名のおさらい:
googleならgoogle.comのように、IPアドレスを文字で表現したもの
ドメイン名を使う理由:
国立競技場に行きたい→今から東京都新宿区霞ヶ丘町10番2号に行くんだーとは普通言わない
↓
今から国立競技場行くんだー
分かりやすくするため
DNSのおさらい:
国立競技場の住所 = 東京都新宿区霞ヶ丘町10番2号
google.com = 173.194.117.128
のようにそれぞれを一致させてくれるもの
台帳
DNSサーバのおさらい:
住所と名前を繋ぐ台帳はあるが、どこを見に行くか問題
(世界中に情報があるため)
↓
台帳はDNSサーバで管理されている
サーバ自体もそれぞれ住所を持っている
ドメインを取った時のネームサーバの設定 = 住所を確かめるための役所を設定する
POP3とIMAP4の違い
おさらい
メールの送信:SMTP Simple Mail Transfer Protocol
送信者が送信したメールが受信者のメールボックスに届くまでを担当
メールの受信:
POP3 Post Office Protocol Version3
IMAP4 Internet Message Access Protocol Version4
受信者が自身のメールボックスのメールを読む部分を担当
違い
双方メールの受信プロトコルだが、最終的に届いたメールの保存先が異なる
POP3:
- メールソフトによってメールボックスの中のメールがローカルのコンピュータに取り込まれる
- ローカルのコンピュータのHDD容量があれば保存できる
IMAP4:
- ブラウザなどを使って直接メールボックスの中のメールを読む
- メールボックスの上限サイズまで保存できる
図解で分かりやすいhttpsの仕組み解説
メモ
webページがブラウザに表示されるまでの分かりやすい説明記事
ブラウザのアドレスバーにURLを打ちこんで、Enterを押したとき何が起こるのか?
の流れ
前提:https://client.sharefull.com/を利用する想定
↓
URLを解読
プロトコル、ドメイン名、パス名を調べる
HTSTリストを調べる
※HTST (HTTP Strict Transport Security)
ユーザーがhttpでアクセスしようとしたとき、ブラウザ側で自動的にhttpsに置き換える機能
DNSでIPアドレスを取得
ブラウザのキャッシュを調べる
hostsファイルを調べる
※hostsファイル
OSの設定ファイル
TCP/IPネットワーク上のIPアドレスとホスト名の対応を記述するテキストファイルの事
見本
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
スタブリゾルバを呼び出す
※スタブリゾルバ
クライアントPCの中にOSとして備わっている機能の事
キャッシュDNSサーバにキャッシュがあったら
キャッシュDNSサーバは、名問い合わせの結果を一定期間キャッシュに保存する
↓
同じ問い合わせが来た場合、結果を再利用して渡す
問い合わせ結果をスタブリゾルバに返す
キャッシュDNSサーバにキャッシュがなかったら
スタブリゾルバの代わりに
ルートネームサーバ
↓
.comのネームサーバ
↓
sharefull.comのネームサーバへと順に問い合わせを行う
Route53
それでも見つからない場合はエラーを返す
ポート番号
のようにポート番号が割り振られる
HTTPリクエストの送信
中身の見本
GET / HTTP/○ ← リクエストライン
Host: client.sharefull.com ← ヘッダー
User-Agent: curl/7.64.1
Accept: */*
ロードバランサー
ヘルスチェック
セッション維持
同一ユーザーからのアクセスは同じサーバに振り分ける
HTTPレスポンスの送信
ステータスライン
ヘッダー
空行
メッセージボディ
HTMLのレンダリング
Loading (リソースの読み込み)
↓
Scripting(JS実行)
※読み込みの途中で部分的に後続のフェーズが走り、
一部が表示されている間に残りのコンテンツが届く
↓
Rendering(レイアウトツリー)
↓
Painting(レンダリング結果の描画)
jsonデータの取得
DNSSEC
定義
DNS応答に添付された署名を受信側で検証することにより、
正しい相手から届いた正しいデータであることを確認できるようにするための技術
効果
DNS応答の偽造によるフィッシング詐欺サイトへの誘導や情報の詐取を図る
「DNSキャッシュポイズニング」を検知し、攻撃を防ぐことができる
引用元:
日本ネットワークインフォメーションセンターの記事:
イーサネットとは
プロトコルの事
LANやWANにおいてリンク層(データリンク層と物理層)のプロトコル
データの形式や物理ケーブルの仕様などを規定している
リンク層では、IPパケットにイーサネットヘッダとトレーラを付加してフレーム
に変換する
ヘッダには宛先と送信元のMACアドレスなどが含まれている
トレーラ:
フレームの誤りチェックを行うための情報が含まれている
↓
フレームを電気信号に変換して物理ケーブルを介して宛先に送る
↓
送信先では電気信号をフレームに変換
↓
フレームからヘッダとトレーラを取り除いたIPパケットをインターネット層に渡す
イーサネットLANのケーブルと規格
ケーブルの種類
同軸ケーブル
伝送用の1本の同線を絶縁体で囲んだケーブル
テレビのアンテナ用に使用される
ツイストペアケーブル
銅線を2本ずつペアにしてより合わせたケーブル
一般的なLANケーブル
光ファイバーケーブル
石英などで作られたコアという芯が同心円状に覆う構造
光信号を反射させて利用するケーブル
FTTx、ギガビットイーサネットなどの光通信に用いる
ケーブルの種類として、
・ストレートケーブル
→ケーブル内で8本の銅線がストレートに配線されている
・クロスケーブル
→8本の銅線の一部がクロスして配線されている
とある。
MDIとMDI-X
ケーブルの差し込むポートの事
・MDI(Medium Dependent Inrerface)
→8本のうち、1番目と2番目を送信、3番目と6番目を受信に使用する
ルータ、PC
・MDI-X
→8本のうち、1番目と2番目を受信、3番目と6番目を送信に使用する
ハブ、スイッチ
イーサネットの規格一覧
伝送速度と伝送媒体の特徴を組み合わせた規格名称で構成される
「1000BASE-T」
1000 = Mbps単位
「伝送速度」は物理的な信号にデータを変換して伝える最大の速度。
実際にアプリケーションのデータを送信する際の通信速度とは異なる。
実際のアプリケーションのデータの通信速度は「スループット」や「実効速度」
BASE-T = ベースバンド方式という意味
ベースバンド方式以外にアナログ信号のブロードバンド方式。
ブロードバンド方式の場合は「BROAD」。
アナログ信号は連続的に変化する信号。
デジタル信号は不連続(離散的)に変化する信号。
「-」のあとは、伝送媒体(ケーブル)や物理信号の変換の特徴を表している
「T」があると伝送媒体にUTPケーブルを利用している
UTPケーブルはLANケーブルの事で、最もよく利用される伝送媒体
引用資料:
イーサネットのアドレス (MACアドレス)
物理アドレス、ハードウェアアドレス
48ビット(6バイト)で、12桁の16進数を2桁ごとにハイフン - またはコロン:
で区切って表記する
前半の24ビット:NICのベンダーを識別するID
↓
OUI(Organizationally Unique Identifier)
後半の24ビット:各ベンダー独自の割り当て(ベンダーごとに重複しないように割り当て)
MACアドレスの種類
ユニキャストアドレス
単一の機器を識別
マルチキャストアドレス
ネットワーク上の特定のグループを識別するためのMACアドレス
最初の24ビットが
・0x01
・0x00
・0x5E
25ビット目が0
残りのビットはIPアドレスから導出される
ブロードキャストアドレス
ネットワーク上のすべての機器を指定するためのMACアドレス
48ビットがすべて1となったFF-FF-FF-FF-FF-FF
がブロードキャストアドレスとなる
イーサネットフレームのフィールド
プリアンブル
1と0のビット列の信号
イーサネットフレームでの通信時に同期を取るために利用される
フレームの開始位置を知らせる
役目がある
IEEE 802.3形式では、7バイトのプリアンブルと1バイトのSFD(Start Frame Delimiter)で構成される
タイプ
上位層のプロトコルを表す値
データ
最小46バイト、最大1500バイトのデータを格納
FCS (Frame Check Sequence)
受信したデータに誤りがないかどうかチェックするフィールド
解説
データ部=パケットが格納される
パケット=プリアンブル
+ イーサネットヘッダとFCSを付加する
↓
イーサネットフレームとなる
最大サイズは1518バイト
半二重通信と全二重通信
半二重通信
データの送信と受信を行わず、交互にデータ送信する通信方式
もし同時にデータ送信してしまうと衝突(コリジョン)が発生するため、アクセス制御する
全二重通信
データ送信、受信を同時に行える方式
CSMA/CD方式とは
Carrier Sense Multiple Access/Collision Detection
直訳すると「衝突検出のある搬送波感知・多重アクセス方式」
通信ルート上にデータが流れていないことを確認してからデータを送信
↓
衝突が起きていないか監視する
衝突が発生した場合、検知して知らせるためのジャム信号を送信する
※全二重の通信が多く、リピータハブも使わない為CSMA/CD方式でのアクセス制御を行うことはない
トークンパッシング方式
トークン(検証用データ)を通信ルート上で巡回させて、端末はトークンを取得したときに
データを送信できる
ネットワークのトポロジがリング型→トークンリング方式
ネットワークのトポロジがバス型→トークンバス方式
イーサネットLAN内の機器について
レイヤ3 ネットワーク層 ルータ、レイヤ3スイッチ
レイヤ2 データリンク層 ブリッジ、レイヤ2スイッチ
レイヤ1 物理層 リピータハブ
リピータハブ
受信した電気信号を中継する機器
・端末から届いた電気信号を増幅
・中継するだけで宛先を決定する機能はない
・受信したポート以外のすべてのポートからデータを送信する
・半二重通信しかできない
・スイッチングハブ、スイッチを使用することが多く利用されない
スイッチ
接続したコンピュータなどの機器同士の相互通信を可能にする
L3,L2スイッチなど
フィルタリング、MACアドレスの学習フロー制御機能を備える
フィルタリング
受信したフレームの宛先MACアドレスを基に識別する
↓
スイッチは内部にスイッチのポートと、ポートに接続されている端末のMACアドレスを紐づけた
MACアドレステーブル
をもっている
スイッチはデータを転送しながらMACアドレスを学習
初回など、情報がない場合受信したポート以外のすべてのポートからフレームを送信する
↓
フラッディング
↓
学習したMACアドレスは、一定時間が経過するとMACアドレステーブルから削除される
↓
MACアドレスのエージング
フロー制御
データの通信を制御する機能
バッファメモリがあり、すべてのポートで受信したフレームが蓄積される
↓
受信処理が追い付かなくなり、バッファメモリがあふれそうになると、各ポートに接続している
機器に信号を送りフレームの送信を抑制する
バックプレッシャ制御
CSMA/方式のアクセス制御を応用して輻輳(ふくそう)制御を行う
半二重通信で使用する
IEEE 802.3x フロー制御
データの送信を抑制するためにPAUSEフレームを送信する
↓
PAUSEフレームの情報を基に指定時間だけデータの送信を停止する
スイッチのフレーム転送方式
ストアアンドフォワード方式を採用している
その他は以下のとおり
・カットスルー
・フラグメントフリー
1つのフレーム全体を受信した後メモリが蓄積し、FCSによりエラーをチェックして
問題がなければ転送する
ブリッジについて
L2で動作する通信機器
スイッチとの違い
処理体系:ソフトウェア主体 (スイッチはハードウェア主体の処理)専用のASIC (ICチップ)
処理速度:遅い (スイッチはASICに機能を分担できるため、CPUの負荷が減り転送速度が速くなる)
ポート密度:2ポートのみ (スイッチは数百もあり)
コリジョンドメインとブロードキャストドメイン
コリジョンドメイン
衝突が起きる範囲のこと
ジャム信号を各ノードに送信する
↓
ジャム信号が届く範囲
物理層で動作するリピータハブでは、すべてのポートにデータが流れる
↓
接続した端末で構成されるネットワークが1つのコリジョンドメインになる
↓
リピータハブのポートすべてが同じコリジョンドメインに含まれる
↓
コリジョンの影響範囲が大きく、通信効率が悪い
データリンク層のスイッチ、ブリッジでは、、、
他の端末に影響が出ないよう、機器に接続している端末が個別のコリジョンドメインとして
分割される
↓
コリジョン内で1台の端末だけが帯域を占有できるような構成にする
→マイクロセグメンテーション
ブロードキャストドメイン
ブロードキャスト通信が届く範囲のこと
オートネゴシエーション
接続する相手によって自分の通信速度や通信モード(半二重、全二重)を自動で切り替える機能
ノード間でFLP(Fast Link Pulse)バーストというパルス信号を交換
↓
相手の通信速度、通信モードを検出
↓
あらかじめ決められた優先順位に従って決定する
※通信速度と通信モードを固定に設定されていると、通信が不安定になる恐れあり
IANA アイアナ (Internet Assigned Numbers Authority)
ドメイン名、IPアドレス及びAS番号、各プロトコルで使われるプロトコル名及び番号といった
インターネット資源を管理する機能
引用資料:
ベースバンド伝送方式について
ネットワークでデータを送る方法の一つ。
信号を変調せずに送出する方式
信号を変調して送出するのがブロードバンド伝送
引用資料:
プライベートIPアドレスとグローバルIPアドレス おさらい
グローバルIPアドレス
インターネットで一意となるIPアドレス
重複はNG
プライベートIPアドレス
家庭内、社内などの限られたネットワーク内で利用できるIPアドレス
決められた範囲のIPアドレスは、同一LAN内で重複しなければ自由に割り当てできる
インターネットでは使えない為、利用する際はNATを用いてグローバルIPに変換する
プライベートIPアドレスを導入するメリット
他のLANと重複してもいい
↓
グローバルIPアドレスを全ての端末につけなくてよい
↓
IPアドレスの数を節約できる
ストレートケーブルとクロステーブルの使い分け
ストレートケーブル:
別々の種類の機器を接続する際に用いる
ルータとスイッチ
PCとスイッチ
クロスケーブル:
同じ種類の機器を接続する際に用いる
ルータとルータ
PCとPC
スイッチとスイッチ
特殊なアドレス
予約済みでホストには割り当てられないアドレス
0: デフォルトルートなどに利用される
127: ローカルループバックアドレスなどに利用される
224~239: IPマルチキャストアドレスとして利用される(クラスDのアドレス)
240~255: 実験などに利用される(クラスEのアドレス)
プライベートアドレス
インターネットに接続しない企業内や家庭内でホストに自由に割り当てられるアドレス
クラスA:10.0.0.0 ~ 10.255.255.255
クラスB:172.16.0.0 ~ 172.31.255.255
クラスC:192.168.0.0 ~ 192.168.255.255
ローカルループバックアドレス
ネットワーク機器自身を示すアドレス。localとして参照。
127.0.0.1がよく使われる。
127.0.0.1 ~ 127.255.255.254
リンクローカルアドレス
DHCPを利用する環境で、DHCPが機能せずにIPアドレスが割り当てられないときに
仮に割り当てられるアドレス
169.254.0.0 ~ 169.254.255.255
ネットワークアドレス
ホスト部のビットがすべて0のアドレス
ネットワーク部自体を指す。
ネットワークの先頭のアドレス。
ブロードキャストアドレス
ホスト部のビットがすべて1のアドレス
同一ネットワーク上に接続されているすべてのホストにパケットを送信するためのアドレス
ネットワークの一番後ろのアドレス
サブネット概要
サブネット化とは?
↓
1つのネットワークを複数の小さなネットワーク(サブネット、サブネットワーク)に分割すること
目的:
ネットワークを分割することで、以下のメリットがある
①セキュリティの向上
②ブロードキャストの制御
③IPアドレスの節約
①
同一のネットワークに所属している端末
↓
スイッチングハブなどを介して直接通信ができてしまう
見られたくないデータがみられてしまう恐れ
↓
ネットワークを分けてルータを中継させることで、アクセスを制御できる
(ルータでパケットのフィルタリングを行う)
②
1つのネットワーク内に端末が多く存在すると・・
↓
ブロードキャストのパケットが通信に影響する恐れあり
↓
ネットワーク分割で減らせる
ルータはブロードバンドキャストを通さないため、ブロードバンドの届く範囲を制限できる
③
例:クラスCのIPアドレスが割り当てられる
↓
254個のホストを接続できるが、機器が6個しかない場合多くのアドレスが使われない状態
↓
192.168.0.0/28と分割すると、14個割り当てられるのでリソースを節約できる
ベンダーコードの調べ方
ipconfig /all
で情報を表示
物理アドレスの前半24bit(ベンダーコード)を取得
macアドレス検索のサイトで入力
↓
Vendor name: CyberTAN Technology Inc.
MAC Prefix: 60:14:B3
MAC Range: 60:14:B3:00:00:00 - 60:14:B3:FF:FF:FF
Type: MA-L
Address: 99 Park Ave III, Hsinchu Science Park
Hsinchu 308
台湾 (TW) TW
VLSM,FLSMとは
Fixed Length Subnet Mask:固定長サブネットマスク
サブネット化する際に、すべてのネットワークに同じプレフィックス長のネットワークを使うこと
すべてのサブネットで最大ホスト数が同じになる
Variable Length Subnet Mask:可変長サブネットマスク
1つのネットワークを異なるプレフィックス長を持つ複数のサブネットに分割する
ICMPとは
Internet Control Message Protocol
ネットワーク上での通信状況の確認や通信エラー時のメッセージの送信を用途とするプロトコルの事
IPv4用とIPv6用がある
pingコマンドは、ICMPのエコー要求(Echo Request)とエコー応答(Echo Reply)を利用して通信の可否を確認する
エコー要求をしてから2秒以内にエコーを受信すれば通信可能
2秒以内に応答を受信できなければ失敗と判断
エコー要求に対して宛先まで到達できなかった場合、
エラーを示す宛先到達不能メッセージを返す
ICMPヘッダー
タイプ コード チェックサム
1byte 1byte 2byte
MTU・MSS
MTU
Maximum Transmission Unit
ネットワークで一回に送信できる最大のデータサイズ
IPデータグラムの最大値
イーサネットのMTUは1500バイトで、光ファイバ(FDDI)は4352バイト
MTUの値を超えたパケットを送信する場合、MTUに合わせてパケットを分割する
この分割作業を「IPフラグメンテーション」と呼び、ルータを経由する際に自動的に行われる
送信側であらかじめサイズを設定できるが、
受信側のサイズが小さいと受信できず、エラーが返される
その場合は、受信側のMTUに合わせて再分割され、改めて送信される
あて先ではすべてのフラグメント化されたパケットが揃うまで再構成を実行しない
↓
IPフラグメンテーションによる再分割と再送信の手順の分だけ時間がかかってしまう
TCP/IPのMTUの最小サイズは576バイト
と、Ethernetよりも遥かに小さいサイズが設定されており、IPフラグメンテーションが発生する可能性は高い
↓
pingコマンドなどでMTUサイズを事前に確認し、MTUの値を適切なサイズに設定すること
引用資料:
MSS
Maximum Segment Size
TCPセグメントで1回に送信できるデータには上限がある
↓
TCPが格納するデータで受信可能なセグメントサイズの上限のこと
をMSSと呼ぶ
MSSは3ウェイハンドシェイクの段階でTCPヘッダのオプションのところに格納され、相手に通知される
↓
上限があるので、大容量データは分割して複数回で送信
↓
データを受け取った側は順序がわからないので復元できるよう目印をつける
↓
その目印がシーケンス番号
という
これから送信するデータの先頭に割り当てられた番号
重複チェックにも使える
Ethernetフレームが最大 1518byte なので、
Ethernetヘッダ ( 14byte )
FCS( 4byte )
TCPヘッダ( 20byte )
IPヘッダ( 20byte )
を除く1460byteがMSSサイズ
参考:
ペイロード
送受信されるデータの伝送単位のうち、宛先などの制御情報を除いた
相手に届けようとしているデータ本体の事
ペイロードをデータ自体とする場合は、
長さを「ペイロード長」(payload length)、
最大長を「最大ペイロード長」(maximum payload length)のように言う
システム開発では、画像やデータのアップロードエラーでペイロードの指摘が
よく出てくる。
引用資料:
LLCとは
Logical Link Control
副層 :リンクに非依存
LANで使用される共通のサービスを上位層に対して提供する
OSI参照モデルのデータリンク層を2つに分けた上のほうの副層
IEEE 802.2によって定められている
LLCはイーサネットやトークンリング、WLANといった物理メディアを統一する役を負っている
機能
・送信時にMAC副層を通じてプロトコルを多重化し、受信時には非多重化する
・必要に応じてフロー制御と破棄パケットの検知と再送を行う
引用資料:
https://ja.wikipedia.org/wiki/論理リンク制御#:~:text=論理リンク制御(Logical%20Link,%E5%BD%B9%E3%82%92%E8%B2%A0%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82
End to Endの原理
エラー検知など高度な処理はなるべくシステムの末端(エンドシステム)で行い、ネットワーク経路上はなるべく単純な処理のみを行うというもの
端末(PC)が複雑な通信を制御する
↓
トランスポート層 ( TCP ): コネクション型
→通信経路の途中のRouterが転送処理
インターネット層 ( IP ):コネクションレス型
→端末とNW機器の役割を分けることによってインターネット通信が実現する
引用資料:
IPフラグメンテーションとは
MTU(=1500B)より大きなパケットを送信する場合、
MTUサイズに合わせて送信時に端末orRouterが自動的に分割する機能
経路途中・宛先NWのMTUサイズに合わせて、IPパケットのサイズを自動的に調整する機能
分割されたそれぞれのIPパケットをフラグメント(fragment;断片)という
主な流れ
OSがシステム起動時に各インタフェース(NIC)のMTUを調べる
↓
データ送信要求に従い、OSはMTUサイズに収まるパケットを構築
↓
NICに送る
IPパケットを受信したRouter
↓
パケットのサイズを調べる
↓
宛先インターフェイスのMTUサイズを超えていないか確認する
↓
MTUサイズよりも大きければ、2つ以上のMTUサイズにIPパケットを分割して順次送信する
フラグメントオフセット
フラグメントオフセット:フラグメントの順序 (0ビット目)
DF(Don’t Fragment)ビット:0:分割可 1:分割禁止(1ビット目)
MF(More Fragment)ビット:0:最後のフラグメント 1:途中のフラグメント(2ビット目)
PPPoEについて
PPP over Ethernet
PPP = Point-to-Point 1対1でコンピュータを接続する
PPPはデータリンク層に該当する
電話回線やISDN、専用回線、ATM回線に利用されている
PPPのプロトコル機能を、Ethernet上で利用できるようにしたプロトコル
Ethernet上でPPPをカプセル化して伝送する
PPPoEでは、
①Ethernet上においてホストとアクセス集約装置の間でPPPoEセッションを確立
② その二つのノード間でPPPセッションをトンネルする
③ PPPを用いてユーザーの認証やIPアドレスの割り当て等の機能を実現する
引用資料:
ポート番号の概要
そもそもポート番号とは?
ノード内で動作しているプロセスを識別する番号
プロセスとは?
メモリー上で実行中のプログラムをOSがPID(Process番号)で管理する単位
(プログラムの開始〜終了まで)
流れ
IP Addressによって宛先のノードにデータが届けられる
↓
ポート番号に応じてノード内で動作しているプロセスに届けられる
TCPヘッダフィールド フラグの種類
こちらのサイトより引用:
値が「1」である(フラグが立っている)時の意味
URG (Urgent) :緊急に処理すべきデータ含まれていることを意味する
ACK (Acknowledgement):
確認応答番号のフィールドが有効であることを意味する。コネクション確立時以外は値が「1」
PSH ( Push ):
受信したデータをバッファリングせずに、即座にアプリケーション(上位)に渡すことを意味する
RST ( Reset ):
コネクションが強制的に切断されることを意味する。何らかの異常を検出した場合に送信される。
SYN ( Synchronize ):
コネクションの確立を要求することを意味する
FIN ( Fin ):
コネクションの正常な終了を要求することを意味する
シーケンス番号について
TCPセグメントを正しい順序に並べるために使用される32ビットのフィールド
送信端末はAPPデータの各バイト(1バイトごとに)に対し、
初期シーケンス番号(ISN: Initial Sequence Number)から順に
“シーケンス番号”を付与する
受信端末は、受信したTCPセグメントのシーケンス番号を確認して
番号順に並べ替えてAPPに渡す
OSはアプリケーションから通信の命令を受けると、
ランダムな値である初期シーケンス番号(ISN)をシーケンス番号として設定する
TCPセグメントを送信するたびに、送信したバイト数分だけシーケンス番号は加算されていく
32ビット( 2 32乗 ~ 4Gバイト)を超えたら再び “0” に戻って加算される
DHCP概要
Dynamic Host Configuration Protocol
IPアドレスやサブネットなどの情報を自動的に割り当てるためのプロトコル
大量の機器は、手動でIPアドレスを設定するのが手間
↓
DHCPを利用してネットワークに必要な情報を自動で割り当てる
構成
DHCPサーバ、DHCPクライアントから成り立つ
トランスポート層にUDPを使用
DHCPサーバ:67番ポート
DHCPクライアント:68番ポート
DHCPクライアントから要求があると、DHCPサーバから
・IPアドレス
・サブネットマスク
・デフォルトゲートウェイ
・DNS
などに関する情報が送信されている
流れ
①DHCP DISCOVER
DHCPクライアントから同じネットワーク全体に対し、DHCP DISCOVERを
ブロードキャストアドレス
に送信する
②DHCP OFFER
DHCPサーバは、DHCPクライアントに対してDHCP OFFERを送信
↓
貸し出す予定のIPアドレス、ネットワーク情報を伝達
③DHCP REQUEST
オファー内容に問題がなければ、DHCP REQUESTをブロードキャストアドレスに送信し、
IPアドレスを正式に要求する
④DHCP ACK
DHCP REQUESTを承認する場合、DHCP ACKを送信
問題があった場合、DHCP NACKを返す
なぜDHCP REQUESTはブロードキャストで送るのか?
オファーがきたのでユニキャストで問題ないのではないかと思って調べた結果
↓
A.
一つのネットワーク内に複数のDHCPサーバーがあることを想定しているから
この場合、DHCPディスカバーに対して複数のDHCPオファーが届くことになる
クライアントは、通常一番先に届いたDHCPオファーのIPアドレスを利用する
DHCPオファーを送ったサーバーは、届いたDHCPリクエストを見て、割り当てたIPアドレスをクライアントが使うか否かを判断する
引用資料:
SMTP・POP3・IMAP4概要
SMTP
Simple Mail Transfer Protocol
メールを送信するためのプロトコル
ウェルノウンポート:25
下記にある、MTA
のプロトコル
e-mail処理ソフトウェア:
MUA: Mail User Agent
クライアントが使用するメールソフト
MTA:Mail Trasfer Agent
サーバで動作するメールソフト
MUAからのメールを自ドメインあるいは他ドメインに転送する
MDA:Mail Delivery Agent
サーバで動作するメールソフト
MTAから振り分けられたメールをクライアントごとのメールボックスに振り分ける
POP3
Post Office Protocol version 3
メールを保存しているサーバのメールボックスからメールを受信するためのプロトコル
タイトルや送信者を確認せずクライアントが全メールを受信してしまう
↓
POP3S (POP3 over SSL/TLS)
POP3の伝送路を暗号化する
IMAP4
Internet Message Access Protocol version4
メールを受信するためのプロトコル
タイトルや送信者を見てフィルタリング可能
モバイル環境で便利な方式
ヒープメモリーについて
コンピュータが利用するメモリー種類
実行時に任意のタイミングで確保や解放が可能なもの (ヒープ領域)
プログラムの実行時
OS側から一定の大きさのメモリ領域がヒープ領域用として割り当てられる
↓
プログラム側が任意のタイミングで必要な容量を明示的に宣言
↓
データやオブジェクトなどの保存用に確保する
メリット:
スタック領域などと異なり用途や確保・解放のタイミングが決められていない
↓
プログラム側の都合で好きなように使うことができる
↓
不要になったら明示的に解放処理を行う
↓
保存されたデータは破棄され、再び別の用途のために確保できる
懸念点:
解放し忘れてしまうと、確保したまま使われることのない無駄な領域が残る
↓
ヒープ領域が圧迫され、自由に使える容量が枯渇してしまう
言語処理系側で不要と判断した領域を強制的に解放して再利用する機能
↓
ガーベジコレクション (GC:Garbage Collection)
スパニングツリー
円環上(ループ状)に形成されたレイヤー2ネットワークにおいて、
データトラフィックが永続的に流れ続けることを防止するプロトコル
資料:
リンクアグリゲーション
LANスイッチ間を複数のリンクで接続することで、
耐障害性の向上と高速化を実現する仕組み
複数の物理回線を1つの論理リンクとして扱う技術
資料:
LLDP
Link Layer Discovery Protocol
ネットワークに繋がっている機器の情報を収集する仕組み
ネットワーク機器は
・自身のホスト名
・機器情報
・ポート
・インターフェース情報
を定期的にマルチキャストMACアドレスに送信
↓
情報収集する機器はLLDPパケットを受信することで情報を取得する
資料:
Wi-Fi概要
無線LANの団体、Wi-Fi Allianceによってつけられたブランド名
WPA2とWPA3
WPA2:
WPA(Wi-Fi Protected Access)を拡張し、IEEE802.liの必須部分を実装した規格
WPA3:
WPA2のセキュリティ機能をさらに拡張
SAE:Simultaneous Authentication of Equals を実装することでパスワードベースの堅牢な認証を実現する
Bluetooth概要
2.4GHz帯の電波を使って通信する規格
データ転送速度は、バージョン2で3Mbps
通信可能な距離:1m, 10m, 100m, 400m
通信可能端末数:8台
HDMI概要
High Definition Multimedia Interfaceの略
1つのケーブルで映像、音声をデジタル伝送できる規格
2009年に公開されたバージョン1.4からイーサネットのフレームを伝送する規格
が追加
↓
HDMIでTCP/IPによる通信が可能になった
TCP/IPのホップについて
hop (跳ぶ)
ネットワークの1区間をIPパケットが跳ぶこと
1区間を1ホップという
1区間ごとにルートが決定され、パケットが転送される
ホップバイホップルーティング
では、
ルーター、ホスト
↓
IPパケットに次の転送先となるルーターやホストを指示するだけ
↓
最終目的地は知らない
↓
個々のルーターがIPパケットの転送処理を行い、繰り返されて最終目的地にたどり着く
デフォルトゲートウェイの算出メモ
MACアドレスのユニキャストアドレスについて
解説:
VoIPとは
解説:
destination addressについて
データの伝送や複製などを行う際に、宛先の所在地や複製先の位置などを示す情報
ネットワークの場合はフレームやデータグラム、パケットの宛先となるMACアドレスやIPアドレス
ソフトウェアの場合はデータの転送先の先頭位置を示すメインメモリ上の番地(メモリアドレス)を指す
ロンゲストマッチ
ルーティングテーブルで複数の該当するルートが検出された場合
↓
転送先を決める判断基準が必要
↓
ロンゲストマッチ(最長一致)というルールを使用する
ネットワークアドレスのビットに最も長く一致しているルートに転送する
ルーティングについて
ルート(経路; route):
送信元NWから宛先NWまでの道筋
ルーティングテーブル(routing table):
宛先NWまでの最適ルートが登録(学習)されたテーブル
ルーティング(routing):
LAN同士を接続(WAN)
パケットを受信したルータが宛先IP addを基にルーティングテーブルを参照し、
宛先NWまでの最適ルートを決定しパケットを転送(中継)すること
ルーティングテーブルにおける最適ルート(optimal path)の種類
スタティックルート
static route:
管理者が手動でルーティングテーブルに登録したルート(固定ルート)
スタティックルーティング(static routing):
スタティックルートを元にしたルーティング;
ルーティングテーブルに登録されている宛先NWへは
常に決まった固定ルートでパケットが転送される
ダイナミックルート
dynamic route:
ルータが自動で隣接しているルータとルーティングプロトコルに則って
ルート情報を交換し合いルーティングテーブルに登録したルート(動的ルート)
ダイナミックルーティング
dynamic routing:
ダイナミックルートを元にしたルーティング;
ルーティングテーブルに登録されている宛先NWへは 動的ルートでパケットが転送される;
大規模NW向き また障害発生時のルート変更に自動的に対応可
それぞれの特徴
① スタティックルート(static route; デフォルトルートも含む):
・宛先NWのルートを手動で設定
・他ルータと情報を交換しない
・帯域を消費しない
・MEM/CPUの負荷が小さい
・セキュリティはダイナミックルートよりも高い
・障害時のルート変更に即座に対応不可
② ダイナミックルート(dynamic route):
・宛先NWのルートをルーティングプロトコルによって動的に設定
・他ルータと情報を交換しNW情報を自動的に取得
・帯域を消費する
・MEM/CPUの負荷が大きい
・障害時のルート変更に自動的に© Copyright 対応可
デフォルトルート
ルーティングテーブルに、社内ルータのインタネット上すべてのルート情報を登録できない
数が多すぎる
↓
宛先ネットワークの情報がなければパケットが破棄される
↓
宛先がわからないパケットをある特定のルートに送信するように
ルーティングテーブルを設定できる
↓
これをデフォルトルート
と呼ぶ
最後の手段として、ラストリゾートゲートウェイともいわれる
宛先NW addがルーティングテーブルに登録されていない場合に使用される
・宛先ルートが不明
・テーブル内に多くのルートが存在すると管理不可能
⇒ ルーティングテーブルのエントリ数を減らせる
⇒ MEM/CPUの消費少なくなる
・インターネットへの接続が1つしかないルータに対し必ず設定される
( Dst NW add, Mask ) = ( 0.0.0.0, 0.0.0.0 )
としてスタティックルートの設定と同様に“ip route” コマンドを用いて設定する
ダイナミックルーティングプロトコルの種類
- RIP (Routing Information Protocol)
- OSPE (Open Shortest Path First)
- EIGRP (Enhanced Interior Gateway Routing Protocol)
- BGP (Border Gateway Protocol)
- IS-IS (Intermediate System to Intermediate System)
① ディスタンスベクター型 (Distance-vector):
・RIP ver.1-2
・宛先NWに到着するのに何個のルータを経由するか
⇒ ホップカウントの少ないものが最適ルート
・ ベルマンフォードアルゴリズム
② リンクステート型 (Link-state):
・OSPF
・LSA (Link-State Advertisement)の情報交換
・SPFアルゴリズムによる最適ルート決定
③ ハイブリッド型 (Hybrid):
・EIGRP
・( Distance-vector ) + ( Link-state )
・DUALアルゴリズムによる最適ルート決定
ルーティングのアルゴリズム
最適なルートを計算する際の考え方
ルーティングプロトコルの分類
IGP (Interior Gateway Protocol)と
EGP (Exterior Gateway Protocol)に分かれる
IGP
AS (Autonomous System 自律システム)で経路情報を交換するためのルーティングプロトコル
タイプ
ディスタンスベクタ型:
お互いのルーティングテーブルの情報を交換する
交換して得られた情報から距離と方向を基にベルマン-フォード法というアルゴリズムをとる
ルーティングプロトコル:RIP
EIGRP (拡張ディスタンスベクタ型):
リンクステートの特徴も取り入れられている
アルゴリズム:DUAL
リンクステート型:
それぞれのルータが自身のインターフェースの情報を交換する
インターフェースの状態をリンクステートという
ルーティングプロトコル:OSPF, IS-IS
アドミニストレーティブディスタンス
シスコのルータ対象
ルーティングプロトコルが複数動作する環境下で、ルーティングプロトコルで得た情報について、どのルートを最適な経路としてルーティングテーブルに登録するか、判断するための基準の事
ルーティングプロトコルの優先度で、小さいほど優先度が高くなる
メトリック (metric):
最適ルートを決定する基準値
・RIP ⇒ ホップカウント
・OSPF ⇒ パスコスト
・EIGRP ⇒ 帯域幅・遅延・負荷・信頼性・MTU
実際の基準値
Route type AD
Connected 0 ★
Static route 1 ★
EBGP 20
EIGRP 90 ★
OSPF 110 ★
IS-IS 115
RIP v1-2 120 ★
IBGP 200
Unknown 255
経路MTU探索
Path MTU Discovery
分割処理の欠点
-
ルーターの処理が重くなる
→IPの分割処理がルーターにとって大きな負荷になる -
分割処理をすると分割された断片の1つが失われても、元のIPデータグラムのすべてが失われてしまう
↓
これらの弊害を避ける → 経路MTU探索
HSTS
正式名称は、Strict-Transport-Security
HTTP の Strict-Transport-Security レスポンスヘッダー
ウェブサイトがブラウザーに、HTTPの代わりにHTTPS を用いて通信を行うよう指示するためのもの
LBだとHTTP→HTTPSに変換する為HTTPの時に脆弱性が生じるが、
HSTSを利用できた方がよりセキュア
引用資料:
Origin
リソース自身のURLの「スキーム」「ホスト」「ポート」の3つの組み合わせの事
例:
スキーム:http
ホスト:www.example.jp
ポート:80
引用資料:
MDN:
RDP
Remote Desktop Protocol
サーバコンピュータの画面をネットワークを通じて別のコンピューターに転送して表示・操作する
リモートデスクトップ、仮想デスクトップのこと
Microsoftが開発した
SOAレコードについて
Start Of Authority
DNSで定義されるドメインについての情報の種類
ゾーンの管理のための情報や設定などを記述するためのもの
ドメイン名は階層構造に従ってゾーンと呼ばれる領域に分割され、
各ゾーンごとに権威DNSサーバがデータの定義や管理を行っている
SOAレコードはゾーンの設定などを記述するもので、通常はゾーンファイルの先頭に1つ置かれる
- DNSサーバのFQDN
- 管理者に連絡の取れるメールアドレス、ゾーン情報の判別のためのシリアルナンバー
- ゾーン情報の入手間隔、リトライ待機時間、手持ち情報の有効期限、ネガティブキャッシュを保持する期間
引用資料
権威DNSサーバ
authoritative DNS server
あるドメイン名の情報を記録・管理する正当な権限を有し、ドメイン情報についての外部からの問い合わせに応答するDNSサーバのこと。
権威DNSサーバは自らが管理権限を有するドメイン名空間(ゾーンと呼ばれる)
についての情報を保持し、
外部からの問い合わせに対して回答する
二系統以上用意することになっており、
主系統をプライマリDNSサーバあるいは単にプライマリサーバ、
副系統をセカンダリDNSサーバあるいはセカンダリサーバと呼ぶ
サーバがオリジナルのデータを保持し、セカンダリサーバは一定期間ごとなどに
プライマリサーバからコピーを受け取って保存し、プライマリサーバが応答できないときに代理で応答する
引用資料:
DNSキャッシュサーバ
利用者からの任意のドメイン名の名前解決の問い合わせを受け付け、
当該ドメイン名を管理するDNSサーバへの問い合わせを(代理で)行い、
結果を利用者に返答する
問い合わせ結果は一定期間保存され、期間内に同じ問い合わせが来た時には
外部サーバへ新たに問い合わせることはせず自ら返答する
↓
上位DNSサーバの負担が軽減され、利用者への応答時間も短縮される
ドメイン名やDNSサーバは階層構造で管理されている
↓ 特定のホスト名の問い合わせを行うには、
世界の十数ヶ所に設置された最上位のルートサーバ(root server)に
トップレベルドメイン(.jpや.comなど)のDNSサーバ(権威DNSサーバ)の所在を訪ね、
↓
トップレベルドメインのDNSサーバにセカンドレベルドメインのDNSサーバの所在を訪ね…
↓という手順を繰り返し
最下層の個別ドメインのDNSサーバから対応するIPアドレスの情報を聞き出す
毎回繰り返したのでは非効率
上位ドメインのサーバの負荷が大きすぎる
個々の利用者
↓
ISP(インターネットサービスプロバイダ)などが設置したDNSキャッシュサーバに問い合わせ依頼を送る
↓
DNSキャッシュサーバが代理で上記の問い合わせを行う
↓
利用者に返答する
という仕組み
DNSキャッシュサーバはDNSサーバでありながら、
名前解決を行うDNSクライアント(リゾルバ)でもあり、
自ら再帰的な(完全な)名前解決を実行できる「フルサービスリゾルバ」(full service resolver)
これに対し、個々の利用者が通常用いるような、DNSキャッシュサーバなどに
問い合わせ依頼を送るだけのDNSクライアントを「スタブリゾルバ」(stub resolver)という。
引用資料:
レコード名一覧表
- Addressレコード
- Canonicalレコード
- Mail Exchangerレコード
資料:
エニーキャスト
anycasting
ネットワーク内で同じアドレスを共有する複数のノードのうち、
最も近い相手にデータを送信すること。
データを送り届ける仕組み。
CDNでドメインを登録する時の注意点
Akamaiでは必須なので注意
CNAMEを使う場合は www がある方が良い!
大規模サイトや瞬間的なアクセス集中があるサイトの場合、CDNを使って負荷分散をするのですが、その際にルートドメイン(wwwなしのドメイン)ではDNSの設定でCNAMEを使えないため、wwwなしのドメインを使うことが出来ません。
ただし、CDN側のオプションサービスでCDN側にDNSを預ける方法やCNAME Flatteningという技術でルートドメイン(wwwなしのドメイン)でもCDNを利用できますが、対応しているCDNと対応していないCDNがあります。
CNAME Flatteringに対応していないCDNの場合、導入前にwwwなしのURLを使っていたサイトはCDN適用時に、wwwありのURLに変更が必要になります。wwwなしのURLはwww ありのURLへとリダイレクトをする設定にして十分な期間残しておくのが一般的
引用記事:
SYN flooding attack
攻撃対象を機能不全に陥らせるDoS攻撃の手法
TCPの接続要求を行うSYNパケットのみを大量に送りつける攻撃
ICMP Flood攻撃
標的にICMPパケットを短時間の間に大量に送りつける攻撃
ICMPエコーと呼ばれるメッセージを短時間で大量に送信することで、
通常の接続要求に応答できない状態にしてしまう
※ICMP
IPネットワーク上で通信制御や状態調査を行うためのプロトコル
pingコマンドなどで利用される
GoogleのDNS 8.8.8.8について
Public DNSでGoogleが用意してくれているもの
/etc/hostsで名前解決する
UNIX系のOSで使われる、
ホスト名とIPアドレスの対応付けを書いておくファイルの事
$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.16.1.15 www.test-host.com
参考記事:
RPC
Remote Procedure Call
遠隔手続き呼び出し
ネットワーク上に接続された他の端末のプログラムを呼び出し実行させるための手法
そのためのプロトコル
QUIC
Quick UDP Internet Connections
Googleが提案し標準化が進められているトランスポートプロトコル
TCPで行われているアプリケーションの通信が置き換えられる可能性がある
UDPを使う UDP+QUIC
主な機能
- 認証・暗号化
- 多重化 (1つのコネクションで複数のストリームを使う)
- 再送処理
- コネクションのマイグレーション
ポートフォワード
機器が自らのIPアドレスのTCP/UDPの特定ポートへの通信を、
別のアドレスの特定ポートへ自動的に転送すること
設定されたポートは、対応付けられた別のアドレス・ポートの窓口として機能し、
外部との間で送受信されるパケットは全て自動的に転送される
ユースケース
ルータやゲートウェイが、LAN側のアドレスしか持たない内部の
コンピュータの特定のポートへ外部から着信できるようにするために
用いられることが多い
引用資料:
IPsec
RFC4301で策定されているネットワーク層のプロトコル
IPパケット単位での暗号化/認証を提供する
ネットワーク層でセキュリティを実装しているので、上位層のアプリケーション層で変更なくセキュリティ機能を利用できる
- ESP(暗号ヘッダ)
- AH(認証ヘッダ)
- IKE(鍵交換)
で構成される
IPSecを使ってお互いに通信する機器は同等の関係(ピア)となり、IPSecピア間でSA(Security Association)と呼ばれる単方向のコネクションを確立する
SANsについて
Subject Alternative Nameの略
サブジェクトの別名
SSLサーバ証明書に含まれる情報として、コモンネームを含むサブジェクトとは別に「SAN」という拡張領域がある
↓
SSLサーバ証明書のコモンネームには、FQDN(URL)を1つしか設定できない
↓
オプションなどで
SSLサーバ証明書内の「SANs」領域にFQDNを設定できるようになり、1枚の証明書で複数のウェブサイトの暗号化通信を実現することが可能
BIND
Berkeley Internet Name Domain
DNSのプログラムの事
プロキシとリバースプロキシの比較・違いの説明
資料:
パケットドロップについて
ネットワーク上の端末や中継機器等が、パケットを能動的に破棄すること
外部に転送すべきパケットをソフトウェアの仕様に組み込まれた判断によって破棄する操作のこと
正常な動作の一環として行われる場合と、何らかの問題が生じて起きる場合の両方がある
正常な動作としてパケットが破棄される場合:非対応のプロトコルの通信を受信
想定外あるいは不正な内容だった場合:パケットフィルタなどで受信や転送を拒否する条件に合致
Server Name Indicationについて
SSL/TLSの拡張仕様。SSLハンドシェイク時にクライアントがアクセスしたいホスト名を
伝えることで、サーバ側がグローバルIPごとではなく、ホスト名によって異なる
証明書を使い分けることを可能にする。
引用資料:
SSL negotiationについて
定義:
SSL が通信を始める段階では、まだ暗号化を開始できていない
平文で通信を開始しながら通信対象の存在を確かめ、暗号の共通鍵を共有
するに至るまでの一連の工程を経て、はじめて暗号化通信を開始する
この一連の工程を SSL ネゴシエーションと呼ぶ
ネゴシエーションのしくみ
2 段階になっている SSL の通信
SSL の通信では、初めての相手でも通信できるように、最初は暗号を使わずに通信を開始
↓
公開鍵暗号を使って相手を確認しながら共通鍵を双方で共有する状態に移る
↓
最終的に共通鍵暗号方式によって安全にデータを送受信するという工程を辿る
通信開始から共通鍵を双方が共有するまでの段階をネゴシエーションと呼ぶ
ネゴシエーションの目的
認証した相手とデータを暗号で通信する前の段階で、
「認証」と「アルゴリズムの決定」を目的とする「ネゴシエーション」が行われる
解説記事:
APNについて
Access Point Name
端末とインターネットを接続するための中継地点のようなもの
スマホにおいては、どのAPN(キャリア会社)からインターネットに接続するかを指定する
↓
購入したキャリアのAPNを利用してインターネットに接続することが前提になっている
引用資料:
X-Forwarded-Forの解説
HTTPヘッダフィールドの1つ
ロードバランサなどの機器を経由してWebサーバに接続するクライアントの送信元IPアドレスを
特定する際のデファクトスタンダード
クライアントの送信元IPアドレスの特定
ロードバランサなどでクライアントの送信元IPアドレスが変換された場合でも
HTTPヘッダに元のクライアントIPアドレスの情報を付加することで実現する
引用資料:
mozilla:
TCPプロトコルについて
記事:
証明書メモ
クライアント証明書・サーバ証明書について
クライアント証明書:
接続元であるクライアントPCが本物であるかどうかを確認する証明書
クライアント証明書はクライアント側にインストールする
サーバ証明書:
接続先であるWebサーバが本物であるかどうか確認するための証明書
サーバ証明書はサーバ側にインストールする
引用資料:
ルート証明書
ルート認証局:
厳しい審査やあれやこれやの苦難を乗り越えることで、
認証局自身が「自分は良い人ですよ~」と自己主張してOKな認証局
↓
ルート認証局の身元を証明する電子証明書 = ルート証明書
保証された認証局が発行した、自分自身の身元を証明する身元証明書の事:
引用資料;
パブリック認証局
公な証明書を発行する認証局のこと
パブリック認証局で署名されたパブリック証明書は、その証明書の認証に必要な情報(公開鍵など)は
各種ウェブブラウザが対応しているため、Webアクセスした際に「安全な接続ではありません!」
みたいな警告メッセージが表示されることは無く、安全にセキュアな通信(HTTPS)を
行うことができます。
SSLサーバ証明書の解説
定義:
第三者機関がWebサイトの運営者の正当性を証明して発行する電子証明書
Webサイト運営者自身に関する情報や、そのSSLサーバ証明書を発行した認証機関の署名、
暗号化に必要な公開鍵などが含まれている。
SSLは、これらの情報を利用することで盗聴、改ざん、なりすましの防止を実現
↓
Webサイトの運営者の正当性を確認しつつ、暗号化された安全な通信を行える
SSLサーバ証明書の導入により、Webサイトの信頼性を示すことができる
中間CA証明書
認証機関の信頼性を証明するために、別の認証機関から発行された電子証明書
認証機関同士の信頼性の証明は、おおもとのルート認証機関を頂点とするツリー構造
中間CA証明書には、ルート認証機関からの信頼を、個々のSSLサーバ証明書につなぐ
ルート証明書
認証機関同士の信頼性の証明は、おおもとのルート認証機関を頂点とするツリー構造になっている
このルート認証機関が、自身の信頼性を証明するために発行する
コモンネーム
SSLサーバ証明書をインストールしてSSL暗号化通信を行うサイトのURLのこと
CSRを作成する際に1つ指定するもの
CSR
Certificate signing request
SSLサーバ証明書を取得するための申請書のようなもの
認証機関へ提出する必要あり
申請に先立って作成した公開鍵と組織名や所在地などの情報(ディスティングイッシュネーム)が
含まれる
認証機関は提出されたCSRに対して電子署名を行い、SSLサーバ証明書として発行する
ワイルドカード証明書
1つのドメインに属するサブドメインまでを、1枚のSSLサーバ証明書でSSL暗号化通信の保護対象とする証明書
*.example.jp」のSSLサーバ証明書は「www.example.jp」「sub.example.jp」のどちらのサーバでも利用可能
マルチドメイン証明書
SSLサーバ証明書のSubject Alternative Names(SANs) のフィールドにマルチドメインネームを登録することにより、1枚で複数ドメインやサブドメインをSSL暗号化通信の保護対象とする証明書
引用資料:
DNSラウンドロビンについて
解説記事:
CGI FastCGIの概要まとめ
Common Gataway Interface
Webサーバー上でユーザプログラムを動作させるための仕組み
静的な情報しか返せないWebサーバー(HTTPサーバー)で動的な情報を返すために、
実行可能な外部プログラムを呼び出だして処理させるための仕様
CGIの仕様に従って作られたプログラム = CGIプログラム
実行可能なバイナリファイル以外に、シバン(shebang)を含んだ実行権限が与えられた
スクリプトファイルを含む
CGIプログラム = CGIの仕様に従って、CGIリクエストを受け取りCGIレスポンスを返す仕様
FastCGI
CGI方式の高性能化を目的にCGIの拡張機能として考えられた仕様
CGI:
リクエストの時はプログラムを起動するが、処理が終わると終了してしまう
CGI は、ユーザーから要求がある度に、プロセスの生成と破棄を行う
FastCGI:
Webサーバーは、外部プログラムの起動や停止を行わない
↓
FastCGIの仕様に従って作成されたFastCGIサーバーへ、FastCGIの独自プロトコルにより要求を送信
FastCGIサーバーはプロセスを使い捨てずに再利用
FastCGI は、初回リクエスト時に起動したプロセスをメモリ上へ保持し、
次回リクエストに対してはそのメモリに保持したプロセスの実行を行う
↓
CGI の問題を解決し、プログラム動作速度の向上およびサーバ負荷の低下が可能
引用記事:
SRVレコード
DNSで定義されるドメインについての情報
サービスの詳細情報を記述するためのもの
ドメインで提供されているサービスについて、提供しているホスト名や下位プロトコル(UDP, TCP)、ポート番号などを任意に定義できる
各レコードに優先度と負荷分散の重みづけを指定可能
同じサービスを複数のホストが提供する場合
- まず優先度の値が小さいものが選択される
- 使用不可の場合に次点のホストに接続要求を行う
- 同じ優先度のホストが複数ある場合、クライアント側で乱数を生成して接続先を選択
- 重みづけの値が大きいほど頻繁に選択されるよう確率が調整される
引用資料:
SNIについて
cloudflareの記事:
ドメインレベルのわかりやすい解説記事