N予備校:プログラミング入門 Webアプリ 5日目 (2)

学んだこと

  • 通信とネットワーク
  • サーバーとクライアント
  • HTTP通信
  • 通信をするボットの開発

通信とネットワーク

  • 電気通信には2つの方式がある
    • 回線交換方式
      • 通信を始める前に、回線の占有を行う
      • 電話などはこの方式
    • パケット交換方式
      • 情報を細かくパケットに分割
      • インターネットはこの方式
      • 送信元、送信先の情報等を付けて送信
      • こうすることで、バラバラな経路で通信可能
      • 経路遮断等に強いため、災害時に強い
  • IPアドレスはインターネット上の住所
  • TCP
    • 相手の通信状況を確認して接続を確立して、データの転送が終わったら切断する
  • UDP
    • 相手との接続を確立しないでいきなりデータを送る
  • pingコマンドでネットワーク疎通を確認
コマンド 操作
tcpdump TCPUDP で行われる通信のパケットの内容を見る
curl 第一引数に指定された URL にアクセスして、コンテンツを取得する
ping ホストに対して、パケットが届くのかの確認をしたり、その応答時間を調査できる

サーバーとクライアント

  • サーバークライアント型通信
    • サービスを提供するコンピューターをサーバー、サービスを受ける側のコンピューターをクライアントと呼ぶ
    • ネットワークは、サーバーから放射状にクライアントにつながる
  • P2P (Peer to Peer) 型通信
    • 全てのコンピューターがサーバーでもありクライアントでもあり、相互に通信し合う
    • ネットワークはメッシュ状
  • tmuxというソフトウェアを使用すると、1つのコンソールで、複数コンソールを操作したり、コンソールの状態を維持することが可能
コマンド 操作
nc TCPUDP の読み書きを行う
telnet リモートのコンピューターにアクセスし、ターミナルのセッションを開始するためのコマンド。全ての通信を平文で送信するため、セキュリティ上の理由で現在はssh等の代替プロトコルを使用することが多い

HTTP通信

HTTPとは、HyperText Transfer Protocolの略称で、HTMLなどの HyperTextを受け渡すためのTCP/IP上で実現するプロトコルの一つ

  • HTTPではデフォルト80番ポートを使用
  • HTTP のリクエストは、TCP/IPを使い、通常のテキストでやりとり
  • HTTPをSSLTLSという方式で暗号化して通信を行うプロトコルHTTPSという
  • HTTPSのデフォルトのポートは、443番
  • DNSは、ホスト名を IP アドレスに変換するシステム

通信をするボットの開発

  • curl を使ったボットを作る際には、リクエストのヘッダでボットであることを伝える
    • 不具合が発生した際に、サーバーの管理者がボットからのアクセスを遮断しやすくするため
  • cron を利用すると、シェルスクリプトなどをスケジュールに合わせて動かすことができる
    • crontabコマンドでスケジュールを設定できる

感想

通信関連はざっくりとした説明だったが、概要をつかむにはいいのかなと感じた。