基礎のいろいろ復習

あとでかきたすもの
cent 67のちがい

うちのネットワーク構成

3クラウドの違い、特徴




# DNS Records

dnsのレコードってこんなに種類あったの？！？！？！

> https://en.wikipedia.org/wiki/List_of_DNS_record_types

A, AAAA, CNAME, MX, 

**NS, PTR, SPF, TXT, SOA, ALIAS**, 

**SRV**, 

for DNSSEC

DNSKEY, DS, NSEC, NSEC3, NSEC3PARAM, RRSIG,

# http status code
**1xx Informational responses**

An informational response indicates that the request was received and understood. It is issued on a provisional basis while request processing continues. 

**301 Moved permanently**

**302 "Moved Temporarily"**


**304 Not Modified (RFC 7232)**
Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match. In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.[26]


> https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


# HTTP Methods

| Method   | Description |
|--- |--- |
| GET      | GET requests can be cached,  have length restrictions |
| POST     |  POST requests are never cached, POST requests have no restrictions on data length |
| HEAD     | Same as GET but returns only HTTP headers and no document body |
| PUT  | Uploads a representation of the specified URI |
| DELETE   | Deletes the specified resource |
| *OPTIONS* | Returns the HTTP methods that the server supports |
| *CONNECT* | Converts the request connection to a transparent TCP/IP tunnel |

> https://www.w3schools.com/tags/ref_httpmethods.asp
# HTTP 4-way handshake-termination

![](https://ipcisco.com/wp-content/uploads/tcp-4-way-handshake.jpg)

**FIN ->
 <- ACK
 <- FIN
ACK ->**

> https://ipcisco.com/

# SSL Handshake
![](http://tech.nikkeibp.co.jp/it/article/COLUMN/20071012/284445/zu1.jpg)

暗号化方式を決める 3 steps
証明書を送る・これで以上ね 2 steps
公開鍵で暗号化した共通鍵を送る・これで以上ね 2 steps
秘密鍵で復号し共通鍵もらえましたのでokです・これで以上です 2 steps

計 9 steps

> http://tech.nikkeibp.co.jp/it/article/COLUMN/20071012/284445/


# telnet http
```py
$ telnet example.com 80
#Trying 93.184.216.34...
#Connected to example.com.
#Escape character is '^]'.
GET / HTTP/1.0
host: example.com
                             ←最後に空改行
```

# clear arp cache
```py
arp -a     # get ip
arp -d <ip>
```

# コンテナとは
仮想マシンを実現するソフトウェアはハイパーバイザーで、VMwareのESXi、LinuxのKVM、MicrosoftのHyper-Vなどがあります
「コンテナ」と呼ばれる「他のユーザーから隔離されたアプリケーション実行環境」

コンテナでは、1つのOSで稼働しますので、プロセッサやメモリの消費は少なく、ストレージの使用もわずかです。そのため、仮想マシンに比べて起動時間が短く、同じ性能のハードウェアであれば、より多くのコンテナを同時に動かすことができます。

DockerはあくまでOS上で動く、プロセスの１つに過ぎません。Linux上で稼働する関連したプロセスをグルーピングし、それぞれは独立したユーザー空間で稼働します。

基本的にLinuxのバイナリファイルは設計思想上、後方互換性を保って作られているので　動作します。これもLinuxがDockerを実現できた大きな理由の１つでしょう。

コンテナはあくまでプロセスとして実現されており、OSとして動かす為に必要な処理が走らない為、高速に動作させることができます。

cgroups
cgroupsはLinuxカーネルが提供する、グルーピングした特定のプロセス群にハードウェアとそれに関係する側面から制限をかける機能です。各コンテナに対するCPU時間の割り当て優先度や、メモリ使用量、データ転送に伴う帯域などを調整できます。

原理的にコンテナ方式による実行環境の制御はセキュリティ的な観点からは、仮想サーバより脆弱性を秘めています。

仮想サーバはOSやハイパーバイザに何らかの脆弱性がなければ、他の仮想環境に影響を与えることはまずないですが、コンテナ間の関係はあくまでただのプロセスなので、他のコンテナ(プロセス)へ影響を与える可能性は仮想環境よりは間違いなく高いです。

Dockerはnamespaceやcgroups含め、Linuxカーネルが提供するコンテナ実現関連のAPIを抽象化するインタフェースとしてlibcontainerをDocker0.9より内部で実装してます。

> http://www.itmedia.co.jp/enterprise/articles/1612/19/news041.html
> https://qiita.com/tajima_taso/items/28938415846dcc2e83ff