Open132

ネットワークメモ

ktkt

HTTPのバージョン推移

1990:HTTP/0.9
1996:HTTP/1.0
1997:HTTP/1.1
2015:HTTP/2
2018:HTTP/3

ktkt

keep-Alive

少しだけセッションを残しておく機能

HTTPは一度リクエスト/レスポンスの関係が終わるとセッションは終了

1画面にたくさん画像が埋め込まれていると、何度もセッションを張り、クローズすることになる

TCPの3ウェイハンドシェイクなどのオーバーヘッドがかかってしまい、1画面全体のレスポンスに影響が出る

1画面を表示するぐらいセッションを残しておくと、オーバーヘッドが軽減される

これがkeep-Alive

ktkt

Session・Cookie・Cache

Session

一連の処理の始まりから終わりまでを表す概念の事

Cookie

正式には、HTTP Cookie

クライアントに保存された情報の事。Webサービスのログインに関する情報などを含む。
Webブラウザが持っているデータを保存できる領域。

Cache

Webページの情報を一時的に保存しておく仕組みの事

ktkt

TCPでデータを喪失しない仕組み

確認応答と再送によって実現している。
受信側にTCPセグメントが到着すると、受信側は送信側に届いた事を伝えるための返事を返す。

この返事が ACK acknowledge :認める

TCPヘッダーのACKに関する情報が入ったTCPセグメントを返す

送信側はセグメントが無事到着したと判断

データの順番を保証する仕組み:

各TCPセグメントに、シーケンス番号と呼ばれる数字をつけることで実現。

受信側にACKを返す時、次に欲しいTCPセグメントのシーケンス番号をACK番号として伝える

上記のように、同期して通信していると効率が悪い。

ACKを待たずに送信を行うウィンドゥという概念を持っている。
送信可能なサイズ = ウィンドウサイズ

受け取りが追いつかなくなると、受信ウィンドウを小さくしてそのことを伝える

このようにして、TCPフロー制御を行う

ktkt

IPの役割

指定された宛先ホストまで渡されたデータを届ける

・IPアドレスによる最終宛先へのデータ転送
・ルーティング

ktkt

サブネットマスク

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アドレス,マスクの指定は必須)。

ktkt

ブロードキャストアドレス

ホスト部のビットがすべて1のアドレスは、ブロードキャストアドレスと呼ばれる特殊なアドレス。

ネットワーク内のすべての機器にデータを一斉配信するために使われる特殊なアドレス。
プロトコルごとに形式が決まっている。

ネットワークに接続したばかりの未設定の端末が、設定情報を教えてくれるサーバを探索するといった特殊な用途に用いられる

ktkt

ユニキャスト

コンピュータネットワークにおいて、
単一の送信相手を指定してデータを送信すること。

ktkt

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の範囲)

インターネットで通信可能なアドレス:パブリックアドレスと呼ぶ

ktkt

ルーティング

IPは途中経路でも様々な処理が行われる

宛先ホストが同じネットワーク内にいるとは限らない

異なるネットワークにいる場合、最終宛先に届くまで宛先を知ってそうなルーターに転送をお願いする

ルーティングテーブル(経路表)を使う

ルーティングテーブル

宛先のホストまでパケットを送るため、ホストやルーターは経路制御表をもっている

ktkt

Ethernet

リンク層プロトコルの事。通信回線。

TCP/IPプロトコルのネットワークインターフェース層に対応する有線の規格

※データリンクは通信回路の事を指す。

同一ネットワーク内のネットワーク機器まで、渡されたデータを届ける。

ケーブル上の通信で使われ、電気信号で転送される。

データ転送にはMACアドレスが使われる

ktkt

Medium Access Control

ネットワーク通信を行うハードウェアに割り振られたアドレス
原則として、世界中でその機器を一意に特定できる物理アドレスとされている。

ktkt

VLAN

仮想的にネットワークを分ける仕組み
ネットワークの配線を変えずにネットワークの構造を変更できる

スイッチのポートごとにセグメントを分ける

ブロードキャストのトラフィックが流れる範囲を区切る

ネットワークの負荷を軽減
セキュリティの向上

ktkt

コネクションプーリング

プログラムがDB管理システム(DBMS)へアクセスする際、アクセス要求のたびに
接続や切断を繰り返すのではなく、
一度形成した接続窓口(コネクション)を維持し続けて使い回す手法。

障害が発生したら、

コネクションが一旦切断され、再接続される

全て使用中の場合、設定最大値まで接続数が増える

それ以上の接続要求が来た場合には一定時間待機する

待機の閾値を超えるとエラーを返す

・最小値と最大値は同じにしておく
・ファイアウォールの有無を確認しておく

ktkt

Nat (Network Address Translation)

IPアドレスを変換する技術

一般的にはプライベートIPアドレスをグローバルIPアドレスに変換する技術

企業ネットワーク内のクライアントPCがインターネットに接続する場合、
プライベートIPアドレスをグローバルIPアドレスに変換(NAT)する必要がある。

一般的にIPパケットのヘッダ内にある送信元IPアドレスを変換する

ktkt

FPM

FastCGI Process Manager

FastCGI

Webサーバー上でユーザプログラムを動作させるためのインターフェース仕様の一つ

ktkt

ソケット

通信するアプリケーション同士の出入り口の事。
IPアドレスとポート番号の組み合わせで表現できる。

https://java-code.jp/category/socket#:~:text=ソケットとは、通信する,組み合わせで表現できます。&text=ソケット通信では、TCP(Transmission,かを利用します。

INETドメイン

概要

ネットワーク上でマシンを越えてのプロセス間通信

特定方法

IPアドレス+ポート番号

通信箇所

他マシンと通信可

UNIXドメイン

概要

同じマシン上で動いているプロセスが通信を行うためのソケット
アドレス・名前空間としてファイルシステムを使用している。
ファイルシステム内のinodeとしてプロセスから参照される

特定方法

ファイル名で一致

通信箇所

自マシンのみ

UNIXドメインソケットは、TCPソケット(INETドメインソケット)よりも遥かにスループットが優れてるらしい

ktkt

ミドルウェア概要

OSとアプリケーションの間に入ってサーバやDBとのやり取りを行うソフトウェア

アプリ
ミドルウェア
OS
ハードウェア

種類

Webサーバ

ブラウザからのリクエストに応じてWebページを送信するミドルウェア

アプリケーションサーバ

Webサーバからのリクエストに応じて、動的コンテンツを生み出すミドルウェア
PHPなどの言語で作成される

DBサーバ

MySQL, Postgres等

ktkt

IPアドレス概要

個々のノード(機器)を識別するための一意の32ビット(ipv4)情報
マルチキャストアドレスとブロードキャストアドレスは複数のノードを同じアドレスで指定できる

IPv6は128ビット

ktkt

CIDR概要

classless inter-domain routing

クラスを使わないIPの割り当てと経路情報の集成を行う技術
インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構

クラスを使わないCIDRでは、任意のブロック単位で区切ることができるため、
IPアドレス空間を効率的に利用することができる

分かりやすい資料:
https://livra.geolocation.co.jp/iplearning/201/

ktkt

macアドレス

media access control

ネットワークに割り当てられる一意のアドレス
ネットワークごとに規定されている通信媒体へのアクセスを制御するためのアドレス

ktkt

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を指定

ktkt

デフォルトゲートウェイ

LANなどのネットワークから外部ネットワークに接続する際、通信の出入り口になるもの
接続に必要なルーターを中継ルーターとしてIPアドレスを指定する方式

送信相手までの経路がわからない場合に、とりあえずデータを送信する中継機器のIPアドレス

ゲートウェイとは?

ネットワークの境界に置かれ、ネットワーク間のデータの流れを中継するルータなどの装置のこと

デフォルトゲートウェイは送信元と同じネットワークにあるゲートウェイの中から選択され、送信元自身には宛先までの経路がわからない場合にデータを送信し、経路選択と中継を依頼する

インターネット上のルータは自らの持つ経路情報を元に経路選択を行い、隣接する他の機器から次の中継先を選んで転送する。

が、末端のパソコンなどの機器は外部ネットワークとの間に一台しかルータがない(家庭内LANのブロードバンドルータなど)ことが多いため、デフォルトゲートウェイに設定したルータなどに常にデータを転送する。

引用資料:https://e-words.jp/w/デフォルトゲートウェイ.html

ktkt

UDP

user data protocol

TCPに比べて送受信されるデータの誤りや順序の違いを検出する機能はない
コネクションが確立しているかどうか、
確認する状態(ステート)がないため、ステートレスのプロトコルと言われている

通信の処理にかかるコストが少ないので、DNSやDHCP (dynamic host configuration protocol) NTP (network time protocol) SNMP (simple network management protocol)のような、
応答性の良さを優先したい通信や、リアルタイム性が重要視される通信で使われる。

ktkt

well-known ports

TCPやUDPのポート番号のうち、著名なサービスが利用するために予約されている0〜1023番のこと

例:

HTTPの80番やFTPの20・21番、SMTPの25番、POP3の110番、DNSの53番

ktkt

一時ポート:ephemeral ports

特定の用途や固定的に使用されることを想定しておらず、どのようなソフトウェアやプロトコル からも自由に利用することができるもの

ktkt

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

ktkt

NIC

Network Interface Card

LANに接続するためのカード型の拡張装置

単にNICといった場合は、Ethernetに接続するためのコネクタや通信用ICなどを
内臓した拡張カードのことを指す。

資料:https://e-words.jp/w/NIC.html

ktkt

SPFレコード

Sender Policy Framework

メール送信ドメイン認証

メールが、正規のサーバから送信されているかどうかを判断する

  • 期待通りの相手からメールが送られた保証がとれる
  • 送信者はなりすましやブランド名を騙ったフィッシングメールが送信されない

仕組み

①送信サーバと受信サーバの間でTCPコネクションが開かれる
②コネクションが確立したのち、HELOコマンドによってメールの送信元ドメインを受信サーバに伝える
③MAIL FROMコマンドによって送信元メールアドレスを伝える
④MAIL FROMコマンドで入力されたドメインがSPFレコードのチェックに使用されるドメインで、メールのエンベロープFromとReturn-Pathヘッダに設定される
⑤受信サーバは、送信サーバのIPアドレスがSPFに含まれているかどうかをチェックする

資料:https://sendgrid.kke.co.jp/blog/?p=3509

ktkt

リバースプロキシ

  1. クライアントとサーバの通信の間に入る
  2. サーバの応答を代理(proxy)する
  3. 通信を中継する

機能

  • 性能向上(スループット)
  • 負荷分散
  • キャッシュ、圧縮による高速化
  • 異なるアプリ、フレームワーク、プラットフォームの統合
  • セキュリティの強化
  • SSL/TLSの強化
  • オープンソースとして、nginx/apacheが有名

資料:https://www.atmarkit.co.jp/ait/articles/1608/25/news034.html#:~:text=リバースプロキシ(Reverse Proxy)と,によく利用される。

ktkt

PGP

Pretty Good Orivacyたいへんよいプライバシー

  • ファイルやメールの暗号化に使われる
  • 通信の暗号化は行わない
  • ファイルはセッション鍵と呼ばれる乱数の値を鍵として、対称暗号により暗号化される
  • セッション鍵は、受信者の公開鍵で暗号化される
  • 必ずしも安全でない通信経路やサーバを介しても、メッセージの秘密を守る仕組み
  • 復号は受信者の秘密鍵を利用する

資料:http://web.wakayama-u.ac.jp/~takehiko/pgp.html

ktkt

無線LAN チャネルとは

データの送受信に必要な周波数の幅

無線LAN機器同士でデータを送受信するには、同じチャネルを使用する必要がある

無線LAN機器同士 = 無線LANクライアントとアクセスポイント同士

資料:https://www.infraexpert.com/study/wireless3.html

ktkt

TXT(テキスト)レコードについて

DNSで定義されるそのドメインについての情報の種類の一つ
DNSサーバのゾーンファイルの中身

DNSサーバには、

  • フルサービスリゾルバ (DNSキャッシュサーバ)
  • 権威DNSサーバ (DNSコンテンツサーバ)

の2種類がある。

PCからの問い合わせ→フルサービスリゾルバが受付

対応しきれない場合、権威DNSサーバに問い合わせ

権威DNSサーバは自分の管理エリアの情報が書かれているファイル
(ゾーンファイル)をみて、問い合わせに答える

好きにコメントを書ける行 = TXTレコード

参考:
https://e-words.jp/w/TXTレコード.html
https://wa3.i-3-i.info/word12294.html

ktkt

OAuthの解説

①ユーザーのデータ
②ユーザーのデータを管理するリソースサーバ
③ユーザーのデータを利用したいクライアントアプリケーション
④ユーザーのデータをやりとりする口 API

例:
APIからユーザーのデータが吐き出されるが、何も対策がないと悪意のあるアプリにも
ユーザーのデータが渡ってしまう

APIを守る仕組みが必要

クライアントアプリケーションにアクセストークンを持たせる

ユーザーデータを要求する際、アクセストークンを掲示

リソースサーバはアクセストークンを取り出してデータを利用する権限があるかどうかを調べる

ユーザーのデータをクライアントアプリに渡す

アクセストークンを発行するのは誰??

認可サーバー

認可サーバはアクセストークンをクライアントアプリに渡すかどうか、ユーザーに確認する

ユーザーが許可すれば認可サーバはアクセストークンを生成して渡す

アクセストークンの要求と応答を標準化したもの

OAuth 2.0

参考記事:
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be

ktkt

SNMPとは

UDP/IPベースのネットワーク監視、ネットワーク管理を行うためのプロトコル

ルーター、スイッチなどのネットワーク機器、WindowsやUNIXサーバーなどの状態監視、
リソース監視、パフォーマンス監視、トラフィック監視を行うために使用する。

一般的に、サーバーに対しては、CPU使用率、メモリ使用率、ディスク使用率、プロセス監視、
Windowsイベントログ監視、Syslog監視を行う。

ネットワーク機器に対しては、各ポート上で送受信されたパケット数、エラーパケット数、
ポートの状態(up/down)、およびCPU使用率、メモリ使用率などを監視する。

引用資料:https://blogs.manageengine.jp/itom_what_is_snmp/

ktkt

ポーリング

ソフトウェアを連携させる制御方式

ktkt

トラップ

障害や通信量の急増などの変化が発生した際に、
そのことを回線を通じて管理コンピュータに通報する仕組み

ktkt

AWS関連のドメイン関連用語まとめ

全体の大まかな流れ

  1. webサーバでwebサイトを公開
  2. webサーバのIPアドレスを確認
  3. ドメインを取得
  4. ドメインを取得したサービスで、使用するDNSサーバを設定
  5. 設定が反映されるのを待つ
  6. 完了

IPアドレスのおさらい:

webを通じて何かを見るには、見たいものがある場所をPCに対して指定する必要がある

荷物を送るための住所のようなイメージ

その住所 = IPアドレス

ドメイン名のおさらい:

googleならgoogle.comのように、IPアドレスを文字で表現したもの

ドメイン名を使う理由:

国立競技場に行きたい→今から東京都新宿区霞ヶ丘町10番2号に行くんだーとは普通言わない

今から国立競技場行くんだー

分かりやすくするため

DNSのおさらい:

国立競技場の住所 = 東京都新宿区霞ヶ丘町10番2号
google.com = 173.194.117.128

のようにそれぞれを一致させてくれるもの
台帳

DNSサーバのおさらい:

住所と名前を繋ぐ台帳はあるが、どこを見に行くか問題
(世界中に情報があるため)

台帳はDNSサーバで管理されている
サーバ自体もそれぞれ住所を持っている

ドメインを取った時のネームサーバの設定 = 住所を確かめるための役所を設定する

https://fujiike.hateblo.jp/entry/2015/09/14/191934

ktkt

POP3とIMAP4の違い

おさらい

メールの送信:SMTP Simple Mail Transfer Protocol

送信者が送信したメールが受信者のメールボックスに届くまでを担当

メールの受信:
POP3 Post Office Protocol Version3
IMAP4 Internet Message Access Protocol Version4

受信者が自身のメールボックスのメールを読む部分を担当

違い

双方メールの受信プロトコルだが、最終的に届いたメールの保存先が異なる

POP3:

  • メールソフトによってメールボックスの中のメールがローカルのコンピュータに取り込まれる
  • ローカルのコンピュータのHDD容量があれば保存できる

IMAP4:

  • ブラウザなどを使って直接メールボックスの中のメールを読む
  • メールボックスの上限サイズまで保存できる
ktkt

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://example.com:80/
https://client.sharefull.com:443/

のようにポート番号が割り振られる

HTTPリクエストの送信

中身の見本

GET / HTTP/○ ← リクエストライン
Host: client.sharefull.com ← ヘッダー
User-Agent: curl/7.64.1
Accept: */*

ロードバランサー

ヘルスチェック

セッション維持

同一ユーザーからのアクセスは同じサーバに振り分ける

HTTPレスポンスの送信

ステータスライン
ヘッダー
空行
メッセージボディ

HTMLのレンダリング

Loading (リソースの読み込み)

Scripting(JS実行)
※読み込みの途中で部分的に後続のフェーズが走り、
一部が表示されている間に残りのコンテンツが届く

Rendering(レイアウトツリー)

Painting(レンダリング結果の描画)

jsonデータの取得

引用資料:https://zenn.dev/ak/articles/61d25099295372

ktkt

DNSSEC

定義

DNS応答に添付された署名を受信側で検証することにより、
正しい相手から届いた正しいデータであることを確認できるようにするための技術

効果

DNS応答の偽造によるフィッシング詐欺サイトへの誘導や情報の詐取を図る
「DNSキャッシュポイズニング」を検知し、攻撃を防ぐことができる

引用元:
https://www.soumu.go.jp/main_sosiki/joho_tsusin/security_previous/juyogijutsu/dnssec00.htm#:~:text=DNSSEC(ディー・エヌ・エス,するための技術です。

日本ネットワークインフォメーションセンターの記事:
https://www.nic.ad.jp/ja/newsletter/No43/0800.html

ktkt

イーサネットとは

プロトコルの事
LANやWANにおいてリンク層(データリンク層と物理層)のプロトコル
データの形式や物理ケーブルの仕様などを規定している

リンク層では、IPパケットにイーサネットヘッダとトレーラを付加してフレームに変換する

ヘッダには宛先と送信元のMACアドレスなどが含まれている

トレーラ:

フレームの誤りチェックを行うための情報が含まれている

フレームを電気信号に変換して物理ケーブルを介して宛先に送る

送信先では電気信号をフレームに変換

フレームからヘッダとトレーラを取り除いたIPパケットをインターネット層に渡す

ktkt

イーサネット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番目を送信に使用する
  ハブ、スイッチ

ktkt

イーサネットの規格一覧

伝送速度と伝送媒体の特徴を組み合わせた規格名称で構成される

「1000BASE-T」

1000 = Mbps単位

「伝送速度」は物理的な信号にデータを変換して伝える最大の速度。
実際にアプリケーションのデータを送信する際の通信速度とは異なる。
実際のアプリケーションのデータの通信速度は「スループット」や「実効速度」

BASE-T = ベースバンド方式という意味

ベースバンド方式以外にアナログ信号のブロードバンド方式。
ブロードバンド方式の場合は「BROAD」。
アナログ信号は連続的に変化する信号。
デジタル信号は不連続(離散的)に変化する信号。

「-」のあとは、伝送媒体(ケーブル)や物理信号の変換の特徴を表している
「T」があると伝送媒体にUTPケーブルを利用している
UTPケーブルはLANケーブルの事で、最もよく利用される伝送媒体

引用資料:
https://www.n-study.com/ethernet/ethernet-regulation/

ktkt

イーサネットのアドレス (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がブロードキャストアドレスとなる

ktkt

イーサネットフレームのフィールド

プリアンブル

1と0のビット列の信号
イーサネットフレームでの通信時に同期を取るために利用される

フレームの開始位置を知らせる役目がある

IEEE 802.3形式では、7バイトのプリアンブルと1バイトのSFD(Start Frame Delimiter)で構成される

タイプ

上位層のプロトコルを表す値

データ

最小46バイト、最大1500バイトのデータを格納

FCS (Frame Check Sequence)

受信したデータに誤りがないかどうかチェックするフィールド

解説

データ部=パケットが格納される

パケット=プリアンブル

+ イーサネットヘッダとFCSを付加する

イーサネットフレームとなる

最大サイズは1518バイト

ktkt

半二重通信と全二重通信

半二重通信

データの送信と受信を行わず、交互にデータ送信する通信方式
もし同時にデータ送信してしまうと衝突(コリジョン)が発生するため、アクセス制御する

全二重通信

データ送信、受信を同時に行える方式

ktkt

CSMA/CD方式とは

Carrier Sense Multiple Access/Collision Detection

直訳すると「衝突検出のある搬送波感知・多重アクセス方式」

引用:https://www.vtv.co.jp/intro/tech/glossary/csma.html#:~:text=でぃー]-,CSMA%2FCD [読み方:しー・えす・えむ,感知・多重アクセス方式」。

通信ルート上にデータが流れていないことを確認してからデータを送信

衝突が起きていないか監視する

衝突が発生した場合、検知して知らせるためのジャム信号を送信する

※全二重の通信が多く、リピータハブも使わない為CSMA/CD方式でのアクセス制御を行うことはない

トークンパッシング方式

トークン(検証用データ)を通信ルート上で巡回させて、端末はトークンを取得したときに
データを送信できる

ネットワークのトポロジがリング型→トークンリング方式

ネットワークのトポロジがバス型→トークンバス方式

ktkt

イーサネットLAN内の機器について

レイヤ3 ネットワーク層 ルータ、レイヤ3スイッチ
レイヤ2 データリンク層 ブリッジ、レイヤ2スイッチ
レイヤ1 物理層 リピータハブ

リピータハブ

受信した電気信号を中継する機器

・端末から届いた電気信号を増幅
・中継するだけで宛先を決定する機能はない
・受信したポート以外のすべてのポートからデータを送信する
・半二重通信しかできない
・スイッチングハブ、スイッチを使用することが多く利用されない

スイッチ

接続したコンピュータなどの機器同士の相互通信を可能にする
L3,L2スイッチなど
フィルタリング、MACアドレスの学習フロー制御機能を備える

フィルタリング

受信したフレームの宛先MACアドレスを基に識別する

スイッチは内部にスイッチのポートと、ポートに接続されている端末のMACアドレスを紐づけた
MACアドレステーブルをもっている

スイッチはデータを転送しながらMACアドレスを学習
初回など、情報がない場合受信したポート以外のすべてのポートからフレームを送信する

フラッディング

学習したMACアドレスは、一定時間が経過するとMACアドレステーブルから削除される

MACアドレスのエージング

ktkt

フロー制御

データの通信を制御する機能

バッファメモリがあり、すべてのポートで受信したフレームが蓄積される

受信処理が追い付かなくなり、バッファメモリがあふれそうになると、各ポートに接続している
機器に信号を送りフレームの送信を抑制する

バックプレッシャ制御

CSMA/方式のアクセス制御を応用して輻輳(ふくそう)制御を行う
半二重通信で使用する

IEEE 802.3x フロー制御

データの送信を抑制するためにPAUSEフレームを送信する

PAUSEフレームの情報を基に指定時間だけデータの送信を停止する

ktkt

スイッチのフレーム転送方式

ストアアンドフォワード方式を採用している

その他は以下のとおり
・カットスルー
・フラグメントフリー

1つのフレーム全体を受信した後メモリが蓄積し、FCSによりエラーをチェックして
問題がなければ転送する

ktkt

ブリッジについて

L2で動作する通信機器

スイッチとの違い

処理体系:ソフトウェア主体 (スイッチはハードウェア主体の処理)専用のASIC (ICチップ)
処理速度:遅い (スイッチはASICに機能を分担できるため、CPUの負荷が減り転送速度が速くなる)
ポート密度:2ポートのみ (スイッチは数百もあり)

ktkt

コリジョンドメインとブロードキャストドメイン

コリジョンドメイン

衝突が起きる範囲のこと
ジャム信号を各ノードに送信する

ジャム信号が届く範囲

物理層で動作するリピータハブでは、すべてのポートにデータが流れる

接続した端末で構成されるネットワークが1つのコリジョンドメインになる

リピータハブのポートすべてが同じコリジョンドメインに含まれる

コリジョンの影響範囲が大きく、通信効率が悪い

データリンク層のスイッチ、ブリッジでは、、、
他の端末に影響が出ないよう、機器に接続している端末が個別のコリジョンドメインとして
分割される

コリジョン内で1台の端末だけが帯域を占有できるような構成にする
→マイクロセグメンテーション

ブロードキャストドメイン

ブロードキャスト通信が届く範囲のこと

ktkt

オートネゴシエーション

接続する相手によって自分の通信速度や通信モード(半二重、全二重)を自動で切り替える機能

ノード間でFLP(Fast Link Pulse)バーストというパルス信号を交換

相手の通信速度、通信モードを検出

あらかじめ決められた優先順位に従って決定する

※通信速度と通信モードを固定に設定されていると、通信が不安定になる恐れあり

ktkt

IANA アイアナ (Internet Assigned Numbers Authority)

ドメイン名、IPアドレス及びAS番号、各プロトコルで使われるプロトコル名及び番号といった
インターネット資源を管理する機能

引用資料:
https://jprs.jp/glossary/index.php?ID=0027

ktkt

プライベートIPアドレスとグローバルIPアドレス おさらい

グローバルIPアドレス

インターネットで一意となるIPアドレス
重複はNG

プライベートIPアドレス

家庭内、社内などの限られたネットワーク内で利用できるIPアドレス
決められた範囲のIPアドレスは、同一LAN内で重複しなければ自由に割り当てできる
インターネットでは使えない為、利用する際はNATを用いてグローバルIPに変換する

プライベートIPアドレスを導入するメリット

他のLANと重複してもいい

グローバルIPアドレスを全ての端末につけなくてよい

IPアドレスの数を節約できる

ktkt

ストレートケーブルとクロステーブルの使い分け

ストレートケーブル:

別々の種類の機器を接続する際に用いる

ルータとスイッチ
PCとスイッチ

クロスケーブル:

同じ種類の機器を接続する際に用いる

ルータとルータ
PCとPC
スイッチとスイッチ

ktkt

特殊なアドレス

予約済みでホストには割り当てられないアドレス

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のアドレス
同一ネットワーク上に接続されているすべてのホストにパケットを送信するためのアドレス
ネットワークの一番後ろのアドレス

ktkt

サブネット概要

サブネット化とは?

1つのネットワークを複数の小さなネットワーク(サブネット、サブネットワーク)に分割すること

目的:

ネットワークを分割することで、以下のメリットがある

①セキュリティの向上
②ブロードキャストの制御
③IPアドレスの節約


同一のネットワークに所属している端末

スイッチングハブなどを介して直接通信ができてしまう
見られたくないデータがみられてしまう恐れ

ネットワークを分けてルータを中継させることで、アクセスを制御できる
(ルータでパケットのフィルタリングを行う)


1つのネットワーク内に端末が多く存在すると・・

ブロードキャストのパケットが通信に影響する恐れあり

ネットワーク分割で減らせる
ルータはブロードバンドキャストを通さないため、ブロードバンドの届く範囲を制限できる


例:クラスCのIPアドレスが割り当てられる

254個のホストを接続できるが、機器が6個しかない場合多くのアドレスが使われない状態

192.168.0.0/28と分割すると、14個割り当てられるのでリソースを節約できる

ktkt

ベンダーコードの調べ方

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
ktkt

VLSM,FLSMとは

Fixed Length Subnet Mask:固定長サブネットマスク

サブネット化する際に、すべてのネットワークに同じプレフィックス長のネットワークを使うこと

すべてのサブネットで最大ホスト数が同じになる

Variable Length Subnet Mask:可変長サブネットマスク

1つのネットワークを異なるプレフィックス長を持つ複数のサブネットに分割する

ktkt

ICMPとは

Internet Control Message Protocol

ネットワーク上での通信状況の確認や通信エラー時のメッセージの送信を用途とするプロトコルの事

IPv4用とIPv6用がある

pingコマンドは、ICMPのエコー要求(Echo Request)とエコー応答(Echo Reply)を利用して通信の可否を確認する

エコー要求をしてから2秒以内にエコーを受信すれば通信可能
2秒以内に応答を受信できなければ失敗と判断

エコー要求に対して宛先まで到達できなかった場合、
エラーを示す宛先到達不能メッセージを返す

ICMPヘッダー

タイプ コード チェックサム
1byte 1byte 2byte

ktkt

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の値を適切なサイズに設定すること

引用資料:
https://atmarkit.itmedia.co.jp/aig/06network/mtu.html

MSS

Maximum Segment Size

TCPセグメントで1回に送信できるデータには上限がある

TCPが格納するデータで受信可能なセグメントサイズの上限のことをMSSと呼ぶ

MSSは3ウェイハンドシェイクの段階でTCPヘッダのオプションのところに格納され、相手に通知される

上限があるので、大容量データは分割して複数回で送信

データを受け取った側は順序がわからないので復元できるよう目印をつける

その目印がシーケンス番号という

これから送信するデータの先頭に割り当てられた番号
重複チェックにも使える

Ethernetフレームが最大 1518byte なので、
Ethernetヘッダ ( 14byte )
FCS( 4byte )
TCPヘッダ( 20byte )
IPヘッダ( 20byte )
を除く1460byteがMSSサイズ

参考:
https://www.infraexpert.com/info/5adsl.htm

ktkt

ペイロード

送受信されるデータの伝送単位のうち、宛先などの制御情報を除いた
相手に届けようとしているデータ本体の事

ペイロードをデータ自体とする場合は、
長さを「ペイロード長」(payload length)、
最大長を「最大ペイロード長」(maximum payload length)のように言う

システム開発では、画像やデータのアップロードエラーでペイロードの指摘が
よく出てくる。

引用資料:
https://e-words.jp/w/ペイロード.html

ktkt

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

ktkt

End to Endの原理

エラー検知など高度な処理はなるべくシステムの末端(エンドシステム)で行い、ネットワーク経路上はなるべく単純な処理のみを行うというもの

端末(PC)が複雑な通信を制御する

トランスポート層 ( TCP ): コネクション型
 →通信経路の途中のRouterが転送処理

インターネット層 ( IP ):コネクションレス型
 →端末とNW機器の役割を分けることによってインターネット通信が実現する

引用資料:
https://www.ntt.com/business/services/data-utilization/dxplatform/sdpf/knowledge/glossary/008.html#:~:text=コンピュータネットワークの設計思想,を行うというものです。

ktkt

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ビット目)

ktkt

PPPoEについて

PPP over Ethernet
PPP = Point-to-Point 1対1でコンピュータを接続する
PPPはデータリンク層に該当する
電話回線やISDN、専用回線、ATM回線に利用されている

PPPのプロトコル機能を、Ethernet上で利用できるようにしたプロトコル
Ethernet上でPPPをカプセル化して伝送する

PPPoEでは、
①Ethernet上においてホストとアクセス集約装置の間でPPPoEセッションを確立
② その二つのノード間でPPPセッションをトンネルする
③ PPPを用いてユーザーの認証やIPアドレスの割り当て等の機能を実現する

引用資料:
https://www.nic.ad.jp/ja/basics/terms/pppoe.html

ktkt

ポート番号の概要

そもそもポート番号とは?

ノード内で動作しているプロセスを識別する番号

プロセスとは?

メモリー上で実行中のプログラムをOSがPID(Process番号)で管理する単位
(プログラムの開始〜終了まで)

流れ

IP Addressによって宛先のノードにデータが届けられる

ポート番号に応じてノード内で動作しているプロセスに届けられる

ktkt

TCPヘッダフィールド フラグの種類

こちらのサイトより引用:
https://www.infraexpert.com/study/tcpip8.html

値が「1」である(フラグが立っている)時の意味

URG (Urgent) :緊急に処理すべきデータ含まれていることを意味する

ACK (Acknowledgement):
確認応答番号のフィールドが有効であることを意味する。コネクション確立時以外は値が「1」

PSH ( Push ):
受信したデータをバッファリングせずに、即座にアプリケーション(上位)に渡すことを意味する

RST ( Reset ):
コネクションが強制的に切断されることを意味する。何らかの異常を検出した場合に送信される。

SYN ( Synchronize ):
コネクションの確立を要求することを意味する

FIN ( Fin ):
コネクションの正常な終了を要求することを意味する

ktkt

シーケンス番号について

TCPセグメントを正しい順序に並べるために使用される32ビットのフィールド

送信端末はAPPデータの各バイト(1バイトごとに)に対し、
初期シーケンス番号(ISN: Initial Sequence Number)から順に
“シーケンス番号”を付与する

受信端末は、受信したTCPセグメントのシーケンス番号を確認して
番号順に並べ替えてAPPに渡す

OSはアプリケーションから通信の命令を受けると、
ランダムな値である初期シーケンス番号(ISN)をシーケンス番号として設定する

TCPセグメントを送信するたびに、送信したバイト数分だけシーケンス番号は加算されていく
32ビット( 2 32乗 ~ 4Gバイト)を超えたら再び “0” に戻って加算される

ktkt

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を返す

ktkt

なぜDHCP REQUESTはブロードキャストで送るのか?

オファーがきたのでユニキャストで問題ないのではないかと思って調べた結果

A.
一つのネットワーク内に複数のDHCPサーバーがあることを想定しているから
この場合、DHCPディスカバーに対して複数のDHCPオファーが届くことになる

クライアントは、通常一番先に届いたDHCPオファーのIPアドレスを利用する
DHCPオファーを送ったサーバーは、届いたDHCPリクエストを見て、割り当てたIPアドレスをクライアントが使うか否かを判断する

引用資料:
https://xtech.nikkei.com/atcl/nxt/column/18/00780/062000010/?P=2#:~:text=DHCPリクエストをブロードキャストで,IPアドレスを利用する。

ktkt

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

メールを受信するためのプロトコル
タイトルや送信者を見てフィルタリング可能
モバイル環境で便利な方式

ktkt

ヒープメモリーについて

コンピュータが利用するメモリー種類
実行時に任意のタイミングで確保や解放が可能なもの (ヒープ領域)

プログラムの実行時

OS側から一定の大きさのメモリ領域がヒープ領域用として割り当てられる

プログラム側が任意のタイミングで必要な容量を明示的に宣言

データやオブジェクトなどの保存用に確保する

メリット:

スタック領域などと異なり用途や確保・解放のタイミングが決められていない

プログラム側の都合で好きなように使うことができる

不要になったら明示的に解放処理を行う

保存されたデータは破棄され、再び別の用途のために確保できる

懸念点:

解放し忘れてしまうと、確保したまま使われることのない無駄な領域が残る

ヒープ領域が圧迫され、自由に使える容量が枯渇してしまう

言語処理系側で不要と判断した領域を強制的に解放して再利用する機能

ガーベジコレクション (GC:Garbage Collection)

https://e-words.jp/w/ヒープ.html

ktkt

スパニングツリー

円環上(ループ状)に形成されたレイヤー2ネットワークにおいて、
データトラフィックが永続的に流れ続けることを防止するプロトコル

資料:
https://www.infraexpert.com/study/stpz1.html

ktkt

LLDP

Link Layer Discovery Protocol

ネットワークに繋がっている機器の情報を収集する仕組み
ネットワーク機器は
・自身のホスト名
・機器情報
・ポート
・インターフェース情報

を定期的にマルチキャストMACアドレスに送信

情報収集する機器はLLDPパケットを受信することで情報を取得する

資料:
https://www.cisco.com/c/ja_jp/td/docs/wireless/access_point/atnms-ap-82/configuration/guide/cg-82-book/cg-chap-LLDP.pdf

ktkt

Wi-Fi概要

無線LANの団体、Wi-Fi Allianceによってつけられたブランド名

WPA2とWPA3

WPA2:

WPA(Wi-Fi Protected Access)を拡張し、IEEE802.liの必須部分を実装した規格

WPA3:

WPA2のセキュリティ機能をさらに拡張
SAE:Simultaneous Authentication of Equals を実装することでパスワードベースの堅牢な認証を実現する

ktkt

Bluetooth概要

2.4GHz帯の電波を使って通信する規格

データ転送速度は、バージョン2で3Mbps

通信可能な距離:1m, 10m, 100m, 400m

通信可能端末数:8台

ktkt

HDMI概要

High Definition Multimedia Interfaceの略

1つのケーブルで映像、音声をデジタル伝送できる規格

2009年に公開されたバージョン1.4からイーサネットのフレームを伝送する規格
が追加

HDMIでTCP/IPによる通信が可能になった

ktkt

TCP/IPのホップについて

hop (跳ぶ)

ネットワークの1区間をIPパケットが跳ぶこと
1区間を1ホップという
1区間ごとにルートが決定され、パケットが転送される

ホップバイホップルーティングでは、

ルーター、ホスト

IPパケットに次の転送先となるルーターやホストを指示するだけ

最終目的地は知らない

個々のルーターがIPパケットの転送処理を行い、繰り返されて最終目的地にたどり着く

ktkt

destination addressについて

データの伝送や複製などを行う際に、宛先の所在地や複製先の位置などを示す情報

ネットワークの場合はフレームやデータグラム、パケットの宛先となるMACアドレスやIPアドレス
ソフトウェアの場合はデータの転送先の先頭位置を示すメインメモリ上の番地(メモリアドレス)を指す

https://e-words.jp/w/ソースアドレス.html#:~:text=デスティネーションアドレス (destination address),-データの伝送&text=ネットワークの場合はフレーム,(メモリアドレス)を指す。

ktkt

ロンゲストマッチ

ルーティングテーブルで複数の該当するルートが検出された場合

転送先を決める判断基準が必要

ロンゲストマッチ(最長一致)というルールを使用する

ネットワークアドレスのビットに最も長く一致しているルートに転送する

ktkt

ルーティングについて

ルート(経路; 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 対応可

ktkt

デフォルトルート

ルーティングテーブルに、社内ルータのインタネット上すべてのルート情報を登録できない
数が多すぎる

宛先ネットワークの情報がなければパケットが破棄される

宛先がわからないパケットをある特定のルートに送信するように
ルーティングテーブルを設定できる

これをデフォルトルートと呼ぶ

最後の手段として、ラストリゾートゲートウェイともいわれる

宛先NW addがルーティングテーブルに登録されていない場合に使用される
・宛先ルートが不明
・テーブル内に多くのルートが存在すると管理不可能
⇒ ルーティングテーブルのエントリ数を減らせる
⇒ MEM/CPUの消費少なくなる
・インターネットへの接続が1つしかないルータに対し必ず設定される
( Dst NW add, Mask ) = ( 0.0.0.0, 0.0.0.0 )
としてスタティックルートの設定と同様に“ip route” コマンドを用いて設定する

ktkt

ダイナミックルーティングプロトコルの種類

  • 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アルゴリズムによる最適ルート決定

ktkt

ルーティングのアルゴリズム

最適なルートを計算する際の考え方

ルーティングプロトコルの分類

IGP (Interior Gateway Protocol)と
EGP (Exterior Gateway Protocol)に分かれる

IGP

AS (Autonomous System 自律システム)で経路情報を交換するためのルーティングプロトコル

タイプ

ディスタンスベクタ型:

お互いのルーティングテーブルの情報を交換する
交換して得られた情報から距離と方向を基にベルマン-フォード法というアルゴリズムをとる

ルーティングプロトコル:RIP

EIGRP (拡張ディスタンスベクタ型):

リンクステートの特徴も取り入れられている
アルゴリズム:DUAL

リンクステート型:

それぞれのルータが自身のインターフェースの情報を交換する
インターフェースの状態をリンクステートという

ルーティングプロトコル:OSPF, IS-IS

ktkt

アドミニストレーティブディスタンス

シスコのルータ対象

ルーティングプロトコルが複数動作する環境下で、ルーティングプロトコルで得た情報について、どのルートを最適な経路としてルーティングテーブルに登録するか、判断するための基準の事

ルーティングプロトコルの優先度で、小さいほど優先度が高くなる

メトリック (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

ktkt

経路MTU探索

Path MTU Discovery

分割処理の欠点

  • ルーターの処理が重くなる
      →IPの分割処理がルーターにとって大きな負荷になる

  • 分割処理をすると分割された断片の1つが失われても、元のIPデータグラムのすべてが失われてしまう

これらの弊害を避ける → 経路MTU探索

ktkt

HSTS

正式名称は、Strict-Transport-Security

HTTP の Strict-Transport-Security レスポンスヘッダー
ウェブサイトがブラウザーに、HTTPの代わりにHTTPS を用いて通信を行うよう指示するためのもの

LBだとHTTP→HTTPSに変換する為HTTPの時に脆弱性が生じるが、
HSTSを利用できた方がよりセキュア

引用資料:
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Strict-Transport-Security

ktkt

RDP

Remote Desktop Protocol

サーバコンピュータの画面をネットワークを通じて別のコンピューターに転送して表示・操作する
リモートデスクトップ、仮想デスクトップのこと

Microsoftが開発した

https://e-words.jp/w/RDP.html

ktkt

SOAレコードについて

Start Of Authority

DNSで定義されるドメインについての情報の種類
ゾーンの管理のための情報や設定などを記述するためのもの

ドメイン名は階層構造に従ってゾーンと呼ばれる領域に分割され、
各ゾーンごとに権威DNSサーバがデータの定義や管理を行っている

SOAレコードはゾーンの設定などを記述するもので、通常はゾーンファイルの先頭に1つ置かれる

  • DNSサーバのFQDN
  • 管理者に連絡の取れるメールアドレス、ゾーン情報の判別のためのシリアルナンバー
  • ゾーン情報の入手間隔、リトライ待機時間、手持ち情報の有効期限、ネガティブキャッシュを保持する期間

引用資料
https://e-words.jp/w/SOAレコード.html

ktkt

権威DNSサーバ

authoritative DNS server

あるドメイン名の情報を記録・管理する正当な権限を有し、ドメイン情報についての外部からの問い合わせに応答するDNSサーバのこと。

権威DNSサーバは自らが管理権限を有するドメイン名空間(ゾーンと呼ばれる)についての情報を保持し、
外部からの問い合わせに対して回答する

二系統以上用意することになっており、
主系統をプライマリDNSサーバあるいは単にプライマリサーバ、
副系統をセカンダリDNSサーバあるいはセカンダリサーバと呼ぶ

サーバがオリジナルのデータを保持し、セカンダリサーバは一定期間ごとなどに
プライマリサーバからコピーを受け取って保存し、プライマリサーバが応答できないときに代理で応答する

引用資料:
https://e-words.jp/w/権威DNSサーバ.html#:~:text=権威DNSサーバとは,するDNSサーバのこと。

ktkt

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)という。

引用資料:
https://e-words.jp/w/DNSキャッシュサーバ.html

ktkt

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へとリダイレクトをする設定にして十分な期間残しておくのが一般的

引用記事:
https://satopedia.com/www/

ktkt

ICMP Flood攻撃

標的にICMPパケットを短時間の間に大量に送りつける攻撃
ICMPエコーと呼ばれるメッセージを短時間で大量に送信することで、
通常の接続要求に応答できない状態にしてしまう

※ICMP

IPネットワーク上で通信制御や状態調査を行うためのプロトコル
pingコマンドなどで利用される

https://e-words.jp/w/ICMP_Flood攻撃.html

ktkt

/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      

参考記事:
https://wa3.i-3-i.info/word11760.html

ktkt

QUIC

Quick UDP Internet Connections

Googleが提案し標準化が進められているトランスポートプロトコル
TCPで行われているアプリケーションの通信が置き換えられる可能性がある

UDPを使う UDP+QUIC

主な機能

  • 認証・暗号化
  • 多重化 (1つのコネクションで複数のストリームを使う)
  • 再送処理
  • コネクションのマイグレーション
ktkt

ポートフォワード

機器が自らのIPアドレスのTCP/UDPの特定ポートへの通信を、
別のアドレスの特定ポートへ自動的に転送すること

設定されたポートは、対応付けられた別のアドレス・ポートの窓口として機能し、
外部との間で送受信されるパケットは全て自動的に転送される

ユースケース

ルータやゲートウェイが、LAN側のアドレスしか持たない内部の
コンピュータの特定のポートへ外部から着信できるようにするために
用いられることが多い

引用資料:
https://e-words.jp/w/ポートフォワーディング.html

ktkt

IPsec

RFC4301で策定されているネットワーク層のプロトコル
IPパケット単位での暗号化/認証を提供する

ネットワーク層でセキュリティを実装しているので、上位層のアプリケーション層で変更なくセキュリティ機能を利用できる

  • ESP(暗号ヘッダ)
  • AH(認証ヘッダ)
  • IKE(鍵交換)
    で構成される

IPSecを使ってお互いに通信する機器は同等の関係(ピア)となり、IPSecピア間でSA(Security Association)と呼ばれる単方向のコネクションを確立する

ktkt

SANsについて

Subject Alternative Nameの略
サブジェクトの別名

SSLサーバ証明書に含まれる情報として、コモンネームを含むサブジェクトとは別に「SAN」という拡張領域がある

SSLサーバ証明書のコモンネームには、FQDN(URL)を1つしか設定できない


オプションなどで
SSLサーバ証明書内の「SANs」領域にFQDNを設定できるようになり、1枚の証明書で複数のウェブサイトの暗号化通信を実現することが可能

引用資料:https://jp.globalsign.com/support/faq/516.html

ktkt

パケットドロップについて

ネットワーク上の端末や中継機器等が、パケットを能動的に破棄すること
外部に転送すべきパケットをソフトウェアの仕様に組み込まれた判断によって破棄する操作のこと

正常な動作の一環として行われる場合と、何らかの問題が生じて起きる場合の両方がある

正常な動作としてパケットが破棄される場合:非対応のプロトコルの通信を受信

想定外あるいは不正な内容だった場合:パケットフィルタなどで受信や転送を拒否する条件に合致

引用資料:https://e-words.jp/w/パケットドロップ.html

ktkt

SSL negotiationについて

定義:

SSL が通信を始める段階では、まだ暗号化を開始できていない
平文で通信を開始しながら通信対象の存在を確かめ、暗号の共通鍵を共有
するに至るまでの一連の工程を経て、はじめて暗号化通信を開始する

この一連の工程を SSL ネゴシエーションと呼ぶ

ネゴシエーションのしくみ

2 段階になっている SSL の通信

SSL の通信では、初めての相手でも通信できるように、最初は暗号を使わずに通信を開始

公開鍵暗号を使って相手を確認しながら共通鍵を双方で共有する状態に移る

最終的に共通鍵暗号方式によって安全にデータを送受信するという工程を辿る

通信開始から共通鍵を双方が共有するまでの段階をネゴシエーションと呼ぶ

ネゴシエーションの目的

認証した相手とデータを暗号で通信する前の段階で、
「認証」と「アルゴリズムの決定」を目的とする「ネゴシエーション」が行われる

解説記事:
https://www.digicert.co.jp/welcome/pdf/wp_ssl_negotiation.pdf

ktkt

APNについて

Access Point Name
端末とインターネットを接続するための中継地点のようなもの

スマホにおいては、どのAPN(キャリア会社)からインターネットに接続するかを指定する

購入したキャリアのAPNを利用してインターネットに接続することが前提になっている

引用資料:
https://e-words.jp/w/APN.html#:~:text=APN 【Access Point Name】 アクセス,がある場合もある。

ktkt

X-Forwarded-Forの解説

HTTPヘッダフィールドの1つ
ロードバランサなどの機器を経由してWebサーバに接続するクライアントの送信元IPアドレスを
特定する際のデファクトスタンダード

クライアントの送信元IPアドレスの特定
ロードバランサなどでクライアントの送信元IPアドレスが変換された場合でも
HTTPヘッダに元のクライアントIPアドレスの情報を付加することで実現する

引用資料:
https://www.infraexpert.com/study/loadbalancer11.html

mozilla:
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/X-Forwarded-For

ktkt

証明書メモ

クライアント証明書・サーバ証明書について

クライアント証明書:

接続元であるクライアントPCが本物であるかどうかを確認する証明書
クライアント証明書はクライアント側にインストールする

サーバ証明書:

接続先であるWebサーバが本物であるかどうか確認するための証明書
サーバ証明書はサーバ側にインストールする

引用資料:
https://www.infraexpert.com/study/sslserver3.html

ルート証明書

ルート認証局:

厳しい審査やあれやこれやの苦難を乗り越えることで、
認証局自身が「自分は良い人ですよ~」と自己主張してOKな認証局

ルート認証局の身元を証明する電子証明書 = ルート証明書

保証された認証局が発行した、自分自身の身元を証明する身元証明書の事:
引用資料;
https://wa3.i-3-i.info/word16604.html

パブリック認証局

公な証明書を発行する認証局のこと

パブリック認証局で署名されたパブリック証明書は、その証明書の認証に必要な情報(公開鍵など)は
各種ウェブブラウザが対応しているため、Webアクセスした際に「安全な接続ではありません!」
みたいな警告メッセージが表示されることは無く、安全にセキュアな通信(HTTPS)を
行うことができます。

引用資料:https://itmanabi.com/pribate-certificate-authority/

ktkt

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暗号化通信の保護対象とする証明書

引用資料:
https://manual.iij.jp/ct/help/2261120.html

ktkt

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 の問題を解決し、プログラム動作速度の向上およびサーバ負荷の低下が可能

引用記事:
https://stupiddog.jp/note/archives/1123

ktkt

SRVレコード

DNSで定義されるドメインについての情報
サービスの詳細情報を記述するためのもの

ドメインで提供されているサービスについて、提供しているホスト名や下位プロトコル(UDP, TCP)、ポート番号などを任意に定義できる

各レコードに優先度と負荷分散の重みづけを指定可能

同じサービスを複数のホストが提供する場合

  • まず優先度の値が小さいものが選択される
  • 使用不可の場合に次点のホストに接続要求を行う
  • 同じ優先度のホストが複数ある場合、クライアント側で乱数を生成して接続先を選択
  • 重みづけの値が大きいほど頻繁に選択されるよう確率が調整される

引用資料:
https://e-words.jp/w/SRVレコード.html