【ネットワークはなぜ繋がるのか】を読んで


書籍を読んでみた際にまとめたメモ内容になります			
(だいぶ前に拝読してまとめたメモなので自己アウトプット定着用です)			
大雑把に記載しているので多少の相違はご了承ください			
			
			
			
			
			
## HTTPプロトコル			
GET、POST...といったリクエスト			
普段のネット接続に使われている			
			
HTTPにてまずリクエストを出して画像があった場合は			
その画像の枚数分再度サーバに問い合わせをしている			
1度にリクエストしているわけではなく何度もリクエストしている			
ブロードキャスト：255.255.255.255			
			
## DNSサーバ			
ドメイン名からIPアドレスを調べるときには、__Socketライブラリのリゾルバ__を利用する			
			
IPアドレスを調べてもらうだけではなく			
様々なタイプを送信することで多くの情報を登録や利用できる			
(あくまでもDNSは通過点でありゴールはWebサーバ、Webサーバに行くためにIPを探している段階)			
			
www .aaa.comはwwwとaaaとcomといった階層のDNSサーバが存在する			
 			
## ソケット			
繋ぐ部分、インターフェイスのこと			
			
```php:ターミナル			
$ netstat			
```			
にてWindowsのソケット詳細を確認することができる			
			
## リゾルバ			
分析のこと			
			
## ディスクリプタ			
番号札のようなもの			
			
## バッファメモリー			
送受信したデータを一時的に格納するメモリ記憶			
(多分)これのおかげで送信中にエラってもデータが			
一時的になくなるだけで再び通信が行える			
受信側はバッファに貯蓄できるため			
複数のウィンドウ制御などで小分けにされても			
最終的にすべてつなげることにより1つの			
データとして受け取れる			
 			
## イーサネットヘッダー			
1500byteがMAX			
IPヘッダTCPヘッダ.データ合わせて1500byte			
それを超えると数回出しで通信をする			
  			
## シーケンス番号、FIN.ACK番号			
Webサーバとクライアントとのやりとりで成り立つ			
接続、データ送受信、終了切断もシーケンス番号やFIN.ACK番号にて通信し合う			
 			
## $ route print			
経路表というIPの表をコマンドにて表示できる			
左側のIP番号に接続している機器にパケットを送るには			
どのルータに繋ぎ何数のmetricがあるのかなどが分かる			
 			
## MACヘッダー			
イーサタイプ(16bit)というものがあり			
(宛先MACアドレスとかMACヘッダーの中にある、そのヘッダーの一部)			
0800はIPプロトコル、0806はARPプロトコルと決められている			
 			
ARPの番号を受け取ったら __ARPキャッシュ__ に保存される			
  			
MACヘッダーを使用し送信元アドレスを表し			
イーサタイプでプロトコルの種類を表す3つを備えたものが __イーサネット__			
 			
## プリアンブル、スタートフルデリミタ			
信号にも__クロック信号__や__データ信号__とあるらしく			
多少のズレを補正するために(タイミングを合わせるために)			
スタートフルデリミタという特別な信号を頭につける			
			
半二重通信で衝突が起きるとジャミング信号というエラー信号を出す			
それをくみとり少しずらして送信受信を試みる(10回)			
がそれでもダメなら送信受信エラーとして識別する			
			
## ## ジャミング信号			
半二重で衝突が起きた場合出る信号			
10回送信し、最終的ダメならエラーと判断する			
## ## パルス信号			
データ通信が行われていない時送信している			
イーサネットの故障を調べる際に使用される信号			
			
			
 			
## オートネゴシエーション			
イーサネットが半二重と全二重を切り替える仕組みのこと			
			
## リンクパルス			
イーサネットはデータ通信が行われていないときはパルス信号			
という信号を送っている			
その信号を利用して何らかの異常があった場合に故障や配線不良などの問題を見つけ出すことができる			
			
 			
## ルータの経路表の0.0.0.0はデフォルトゲートウェイ			
デフォルトゲートウェイは経路表にどうしても該当する宛先がなかった時に対して送り先不明という事態にならないようにあるもの			
 			
## ルータがパケットを受け取った際は			
経路表のゲートウェイ欄にあるIPアドレスを調べて送る			
それでもIPアドレスがなかった場合はIPヘッダの宛先IPアドレスに送る			
ルータもARPを使用して次に渡す相手のMACアドレスを調べる			
 			
## プライベート内ではプライベートアドレスが使用され			
グローバルになった時にアドレスは変換されグローバルアドレス			
としてインターネットを経由し接続している			
社内からネットワークにアクセスしていないと			
プライベート内のみでしか作動しない			
逆に社外から社内インターネットにアクセスしたいときは			
ルータのアドレスポートの対応表に登録しておくと			
自動的にアドレス変換がされアクセスできる			
			
## ADSL			
このモデムはセルに分割変換するアクセス回線			
アクセス回線は他に __CATV__や__FTTH__ など複数ある			
ADSLは__変調技術__というものを使用し__信号化__する			
振幅変調(ASK)という方式と位相変調(PSK)という方式を組み合わせている			
			
・振幅は大きければ 1			
・振り幅が小さければ 0			
			
位置は0度から始まるのか180度から始まるのかで0と1を分ける			
多くの波を使いbit数を使い分けるので高速化が測れる			
スプリッタという高い周波数の信号をカットする装置を			
入れているおかげで電話時などにも妨害がなく電話できる仕組み			
 			
## 電話局から離れると速度が遅くなる理由			
単に雑音が影響をしている			
距離が離れる為周波数が高くなり、遅くなるといった理由もある			
 			
## DSLAMというADSLを集約した機器もある			
これはセルに分割せずパケットの形でルータとやりとりをすることができる			
ATMという信号変換タイプを利用している			
 			
## FTTHは光ファイバーアクセス回線			
電気信号を光信号に変換して通信する			
			
灯 1			
暗 0			
			
として分けている			
シングルモードとマルチモードという2つの種類があり			
シングルが細くマルチが太いコード			
			
## 光ファイバー回線			
光信号通信をLANに繋ぐために__ONU__という終端装置を			
使用する必要がある			
 			
ファイアウォールは特定の許可したパケットを通過させ			
許可していないパケットは通さない仕組み			
ファイアウォールは機器としても存在する			
基本はルータの中にシステムとして備え付けられている			
 			
 			
## パケットフィルタリング			
宛先が条件と一致していれは正直とみなし通過を許可する			
送信元も信頼性があるので許可			
かつポート番号が80であればアプリなので条件がクリアしていれば			
通過させるという流れ			
またFINやACKも1回目の通信であれば0.1となっていて			
WEBサーバから来るのは0.1などどなっているので			
それ用に条件区分してパケットフィルタリングを通過させる仕組み			
 			
逆に宛先が許可している宛先と一致しなければ遮断する			
これがパケットフィルタリングのファイアウォール			
UDPもポート番号やFINなどのヘッダという概念がない為			
判断材料がなく許可と遮断の区別が難しい			
よってUDPはパケットフィルタリングは至難			
全遮断か許可しかないのかもしれない			
 			
 			
 			
## ラウンドロビン			
負荷分散のラウンドロビンというIPアドレスをロータリングさせて			
WEBサーバの負荷を縮小させる仕組み			
			
100.10 100.20 100.30			
100.20 100.30 100.10			
			
と回して繰り返すことで1つのサーバに集中しなくてすむという仕組み			
			
## ロードバランサ			
キャッシュを一時保存して再利用することによって			
同じサーバに受け渡して効率よく回転させることができる			
 			
## キャッシュサーバ			
プロキシという仕組みを利用している			
Webサーバとは別に負荷分散のため設けることで			
	Webサーバまで到達しないアクセスはキャッシュサーバで処理できる	ので効率がよい	
	Webサーバから受け取ったデータをディスクに保存しておき		
	それを利用してクライアントに返すのが主な方法		
			
プロキシという仕組みを使って(いったん中継をして)			
キャッシュサーバにたどり着く			
結論この仕組み(キャッシュなどの)おかげで高速に通信が			
		可能になったらしい	
## プロキシサーバ			
代理用のサーバであり、設置時にはセキュリティ向上になったりweb通信の高速化が見込まれる			
インターネットとクライアントの中間に位置する			
 			
## キャッシュサーバにてリダイレクト			
## ## (アクセスしたサーバではなく別のサーバにあるのでこちらのサーバに再度アクセスしてください)			
のような場合はHTTPヘッダに “ Location “ というヘッダで			
https://のドメインが表示されてレスポンスされる			
ViaやLocationなど状況によってヘッダが変わるが			
覚えればどういう流れなのかがヘッダを見れば(ViaやLocationなど)分かる			
 			
キャッシュサーバも複数ある場合はこういった数個のどこが			
近いのか、どこにリダイレクトさせれば効率がいいのか(応答時間が短くできるのか)という工夫が施されている			
 			
## サーバ とネットワークの関係			
クライアントから受信したらlisten()やWrite()という			
__接続__→__パイプを繋ぐ__→__データを送受信__→__ソケットを遮断__と			
何段階なで作業を行っている			
			
クライアントが複数あり.サーバに同じソケットの種類に			
接続したいとなった場合はレスポンスに困ってしまう			
「誰にどう返せばいいのか」分からずエラーするので			
## ## 送信元のIP番号と処理したいプログラム(クライアントAソケットAからはアプリケーションの処理なのか.クライアントBソケットAからはメールの処理なのか)を判断するために記録をする			
			
よって複数いるクライアントで同じソケットであっても			
違う処理をレスポンスで返せるという仕組み			
			


---
まだまだ分からないことだらけなので
反復して知識を定着させていきたいです。

##### 参考文献
[ネットワークはなぜつながるのか　第２版](https://bookplus.nikkei.com/atcl/catalog/07/P83110/)
著者名	戸根　勤著/日経NETWORK監修 著
発行元	日経BP