【学習メモ】キタミ式　Chap12　ネットワーク（12-6〜12-8）

#アウトプットする目的
資格取得がゴールではないが、基本情報技術者試験で書かれている内容をなるべく早く理解することで、根本的な問題解決ができるエンジニアに近く目的で学習。

Chapterかセクションごとに要約＋自分で調べた補足＋参照記事などをアウトプットします。


#12-6ネットワーク上のサービス
###ネットワーク上のサービス＝要求に応じて何らかの処理を提供する機能

![スクリーンショット 2020-09-13 20.10.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606290/3c727c2f-a45c-1de6-d9f9-1885fc10c790.png)
（キタミ式より一部引用）

- ウェルノウンポート番号：「よく知られた（well-known）ポート番号」という意味であり、予め決められているポート番号のことをさす。
- FTPのポート番号は、データ転送用に「21」、制御用に「20」が割り当てられている。

##サービスはポート番号で識別する

ネットワーク上で動くサービスたちは個々に「それ専用のサーバマシンを用意しなきゃいけない！」と言うわけではない。サーバーというのは**プロトコルを処理してサービスを提供するためのプログラムが動く**ことでサーバーになってるので、1つのコンピュータが様々なサーバーを兼任する事は十分にある。

ただ、IPアドレスだと、パケットの宛先となる**コンピュータ（ホストコンピュータ）は識別できても、「どのサーバプログラムに宛てたものか」までは特定できない！**

そこで、プログラムの側では0〜65,535までの範囲で自分専用の接続口を設けて待つようになっている。この接続口を示す番号を**ポート番号**と呼ぶ。
![スクリーンショット 2020-09-13 20.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606290/e3e1a211-e5ea-4d21-e36d-fb6dba51b11a.png)
（キタミ式より一部引用）

#12-7 WWW(World Wide Web)

ブラウザでWebサイトを表示するまでに、その背後ではいろいろな処理が行われている。Webサイトの制作を実際に初める前に、WWWの仕組みについて理解を深めたい。

＜流れ＞
1. クライアントが、Webブラウザ（Google Chrome、IE etc）で目的のwebサイトのドメインorURLを入力
2. DNSサーバーに対して目的のドメインのIPアドレス（住所）をリクエスト
3. DNSサーバーが目的のwebサイトのドメインに紐づいているIPアドレスを返す
4. DNSサーバーから返ってきたIPアドレスをもとに、クライアントがWebサイトが保管されているWebサーバーをリクエスト
5. Webサーバーが目的のURLに関連するファイル（index.htmlなど）を返す
6. 返ってきたファイルをブラウザ上に表示させる

わかりやすい動画は、こちらがおすすめです。

[Webページはどうやって表示されてるの？](https://www.youtube.com/watch?v=rR4Ae6SuLFk)

##URLについて
例：
「https://www.wantedly.com/projects」
https://www.wantedly.com/projects
https:プロトコル
//www.wantedly.com:ドメイン名
/projects:ディレクトリ名

#12-8 電子メール

##電子メールの仕組み（概要）

![スクリーンショット 2020-09-14 23.24.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606290/dcc505f0-c44f-bacc-1c73-6174ed4efc96.png)

>①メールソフトで送信したメールは自社側のメールサーバーに届く
>②宛先のメールアドレスから、配送先のメールサーバーのIPアドレス（住所）を調べる
>③配送先のメールサーバーにメールを転送する
>④相手先のメールサーバーにメールが届いたら、新着メールとしてメールソフトにメールが届く

※【初心者向け】メール送受信の仕組みについて解説より、引用

電子メールでは「メールを送信する技術」、「メールを配送する技術」、「メールを受信する技術」がそれぞれ確立されていることで、メール送受信の仕組みが成り立っている！


##メールの送受信に使われる技術

わかりやすく、かつ具体的には「[メールサーバーとは？仕組み・役割をわかりやすく解説します](https://www.kagoya.jp/howto/rentalserver/mailserver/)」で書かれているので必見。

###SMTP（Simple Mail Transfer Protocol）：イメージは「ポストから相手の郵便受けに届けるまで」
- メールの送信に用いるプロトコル。
- SMTPに対応したサーバをSMTPサーバーと呼ぶ。
- SMTPは、以下2つの用途で利用されます。

1. パソコンのメールソフトで作った電子メール本文を送信する。
2. 自社のメールサーバーが、宛先に書かれたメールアドレスを見て、相手先のメールサーバーへメールを配送する。

※従来はメールソフトの設定ではSMTPにポート「25」を設定するのが一般的だったが、最近ではセキュリティーなどの関係上で「587」を利用するケースも増えている。

###POP（Post Office Protocol）：イメージは「郵便受けから電子メールを取り出す」
- メール受信に用いるプロトコル
- POPに対応したサーバをPOPサーバーという。
- POPクライアントから「受信メールをください」とリクエストすると、ユーザのメールボックスから受信済みのメールを取り出して配送する役割。
- POPのメリットは、**メールサーバーにデータを残さない設定**なので、メールサーバーの容量削減になること。
- メールデータは端末に残るため、過去に受信したメールはインターネットに接続していない状態でも閲覧可能。
- デメリットは、POPは**受信した端末にデータが保存される形式**なので、複数台でメールを閲覧する場合には向かない。
- 現在はPOP Version3を意味するPOP3が広く使われる。


###IMAP（Internet Message Access Protocol）：イメージは「サーバ上にあるメールボックスをリモート操作する」
- メール受信に用いるプロトコル（役割はPOPと同じ）
- IMAPでは「143」番ポートを使用。
- IMAPを設定した場合、メールサーバーに届いたメールを「インターネット」を介してメールソフトが読みこむ。
※POPでは端末にメールデータを自動的にダウンロードしていたが、IMAPでは端末にデータは残さない。
- メリットは、スマートフォンとPC両方でメールをチェックしたいなど、複数端末で同じメールを読むことが可能。
- 新しいパソコンに買い替えた時なども、面倒なデータ移行なしでスムーズに切り替えが可能。
- デメリットは、**メールサーバーにデータが残り続ける**ため、サーバー側の容量次第では、すぐにメールボックスが満杯になってしまうこと。
※IMAPの設定を検討する場合には、ご利用のメールサーバーの容量上限を確認すべし！！

###MIME
MIME(Multipurpose Internet Mail Extension)という規格の登場により、日本語などの2バイト文字や、画像データなど様々なファイル形式を添付できるようにする拡張規格。

###なぜドメイン名から送り先（のメールサーバー宛）に正しくメール送信できるのか？？

「testuser01@qiitakun.co.jp」にメールを送る場合を考えてみる。@マークより左側を「ユーザー名」、右側を「ドメイン名」と呼ぶ。

- ユーザー名：郵便でいうところの”名前”に当たる。
- ドメイン名：インターネット上における私書箱の位置、つまり郵便でいうところの”郵便番号”に当たる。

郵便の例で考えたときに、郵便番号で住所が分かる理由は、**郵便番号には住所（番地）情報が紐づいて登録されており、それを検索する仕組みがあるから**。

メールで考えたときも同様で、**DNSサーバーが、メールアドレスのドメイン名から、宛先のメールサーバー（SMTPサーバー）のインターネット上の住所にあたるIPアドレスを割り出している**。割り出したIPアドレスのSMTPサーバー宛にメールを送信し、相手側のSMTPサーバーがユーザーのメールボックスにメールを受信し格納する、というのが一連の流れ。


###その他
電子メールは文字化け注意！！特定のコンピュータでしか表示できない文字のことを**機種依存文字**という。

後、ActiveMailerなどメール送受信のプログラムを書く際に、下記のようにエラーを考えると解決がスムーズなのでは？と思いました。

>メール送受信の流れは郵便の仕組みと似ています。もし、メールでエラーに遭遇したら「郵便で考えると、どの役割がエラーとなってしまったのだろうか？」と考えると、問題解決のヒントになるかと思います。


#参考・引用
キタミ式イラストIT塾　基本情報技術者令和2年
[WWWとは何か? 簡単な歴史と仕組み](https://yoppa.org/cucweb10/1781.html)

[【基本のき】ホームページの仕組みをイラスト付きでまるっと解説！](https://webliker.info/65123-2/)

[Webページはどうやって表示されてるの？](https://www.youtube.com/watch?v=rR4Ae6SuLFk)

[【初心者向け】メール送受信の仕組みについて解説](https://blastmail.jp/blog/mail-delivery/send-and-receive-mail)

[メールサーバーとは？仕組み・役割をわかりやすく解説します](https://www.kagoya.jp/howto/rentalserver/mailserver/)