はじめに
過去にJavascript、Javaを学んでいたがメンタルを崩していてプログラミングから離れていました。
しかしこの度AIエンジニアとしてwebアプリケーションを作りたいと考えました。
現在Pythonの基礎から勉強中だけど、1年以上離れていたため、プログラミング以前にITの知識が薄れていると感じました。
そこでITリテラシーを再度学び直そうと思いました。参考にした書籍は基礎からのプログラミングリテラシーです。
※ITリテラシーが高い人には当然の知識なので退屈かもしれません。
1.クライアントとサーバーの関係
クライアントは私たちユーザー側のことを指します。
今この記事を見ているあなたも、私も、クライアントになります。そして私たちはインターネットを通じて様々なサービスを受けることができます。
web検索、メール送受信、ファイル送受信など。
そしてこのサーバーとは、これらのサービスを提供するコンピュータやシステムのことを指します。
- web検索→webサーバー
- メール送受信→メールサーバー
- ファイル送受信→FTPサーバー
このクライアントとサーバー間の構図を クライアントサーバー と言います。
分かりやすく例えると下記手順です。
- Aさん(クライアント)はあるサービスを受けたいから、サーバーへそのサービスのリクエストを送信する
- サーバーはリクエストに基づいて、サービスの結果をAさんに返す
逆にP2Pという仕組みは、中央にサーバーを置かずにクライアント同士で直接通信する仕組みのことを指します。また、一部の通話アプリ(例:Skypeなど)でもP2P技術が使われます。
2.コンパイラとインタプリタの違い
-コンパイラ(機械語に変換してから実行する)
-インタプリタ(実行しながら機械語に変換する)
プログラムを実行するためには、コンピューターにコードを機械語に変換して実行させる必要があります。コンピューターは、機械語に変換されていないコードをそのままでは実行できません。
ここでインタプリタとコンパイラという概念を覚える必要があります。
まずインタプリタは上から順にコードを読んでいきます。
インタプリタは実行時に逐次コードを解釈して機械語に変換しながら実行するため、事前にすべてのコードを変換する必要がありません。
逆にコンパイラは実行する前に機械語へ変換する必要があります。
インタプリタは実行しながらコードを読み込むため、即座に動作を確認しやすく、デバッグが容易です。一方で、コンパイラは実行前にコード全体を機械語に変換するため、実行時にはより高速に動作することが多いです。
しかし大規模なコードを実行するケースを考えてみましょう。
インタプリタでは、実行と機械語への変換を同時に行うため、時間が掛かります。
コンパイラなら機械語に変換してから実行するだけなので、実行時には手間が掛かりません。
3.IPアドレスとNAT&DHCPの関係
IPアドレスはデバイスやWebサイトをホストしているサーバーに付与される番号です。
このIPアドレスを活用してネットワークと繋いで通信することができます。
IPアドレスに関連した用語でNATとDHCPも重要な役割があります。
NATは、ローカルIPアドレスをインターネット上で使えるグローバルIPアドレスに変換する仕組みで、DHCPはデバイスにIPアドレスを自動的に割り当てる仕組みです。
例えば、会社のネットワークでは、ルーターがあなたのコンピュータにローカルIPアドレスを自動的に割り当てます。この自動割り当ての仕組みをDHCPと呼びます。
ただしローカルのIPアドレスではインターネットに繋ぐことができません。
ルーターがNAT(ネットワークアドレス変換)を使って、ローカルIPアドレスをグローバルIPアドレスに関連付けてインターネット接続を可能にします。
4.URLを細分化する
例:[https://www.example.com]
・HTTP
クライアントはサーバーに対してリクエスト情報を送ります。サーバーはそのリクエストに応じてレスポンスを返します。そのレスポンスには、HTML、CSS、JavaScriptなどのコンテンツが含まれています
サーバーからのレスポンスには、HTTPステータスコードが含まれます。ステータスコードの番号によって、リクエストが成功したのか、エラーがあったのかがわかります。
・SSL/TLS、HTTPS
例えばAがデータを暗号化してBにそのデータを送ります。データを受け取ったBはそのデータを復号します。このやり取りは、SSL(またはTLS)を使って実現されます。HTTPで通信されるデータは暗号化されていないため、安全とは限りません。そのため、データを暗号化するためにHTTPSが使用されます。そのため認証局(CA)は、Webサイトが正当なものであることを確認し、その証明書(SSL/TLS証明書)を発行します。証明書が発行され、SSL/TLSが導入されていると、URLの「http」は「https」に変わり、暗号化された安全な通信が行われます。
・ホスト名、DNS
IPアドレスだけ持っていても、数字が羅列された番号だけではとても分かりにくいです。そこでホスト名とIPアドレスを紐付けます。この仕組みをDNSと言います。URLではwww.example.comの部分がホスト名です。www.example.comにアクセスするとコンピュータはホスト名に紐付けられたIPアドレスを探します。このホスト名とIPアドレスの対応関係を管理し、ホスト名からIPアドレスへの対応付けを行うのがDNSの一部であるDNSサーバーです。DNSサーバーは、ホスト名に対応するIPアドレスを探し、その結果をコンピュータに返します。
つまり、[https://www.example.com]では、HTTPSが使用されており、暗号化された通信が行われていることがわかります。
続いてホスト名はwww.example.comです。
ホスト名とIPアドレスはDNSによって紐付けられています。[www.example.com]にアクセスすると、DNSサーバーでホスト名の名前解決(ホスト名とIPアドレスを対応付ける行為)を行い、対応するIPアドレスを探し、その結果をコンピュータに返します。
クライアントがリクエストを送信し、Webサーバーはそのリクエストに対するレスポンスを返します。サーバーの応答はHTTPステータスコードによって、成功したかエラーが発生したかが判明します。
最後に
ITから離れていたことでほとんど記憶が無くなっていました。薄れていたとういより、ガッツリ忘れていました。もしくは初めから理解していなかったか……。
自分で言語化してChatGPTに確認すると、修正の嵐で大変でした。
もっと基本から理解しないとダメですね泣