応用プログラミング...既存の 関数ライブラリ( api) を使える...

27
応用プログラミング ex1

Upload: others

Post on 31-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • 応用プログラミングex1

  • 3

    本日のレシピ

    1.はじめに:後半の実施方法と評価方法2.ネットワークに関する幾つかの基礎的な事柄3.ネットワークを調べる4.echoクライアント・サーバを動かす

  • 4

    応用プログラミング

    ● 到達目標

    現実の多様なデータを処理するためのプログラミング作法を修得する。少し大きな規模のプログラムが作成できるようになる。

    ● 系統的履修

    「プログラミングおよび実習 I」の後を継ぎ、プログラミング能力のさらなる強化を目指します。

  • 5

    応用プログラミング?

    ● ちゃんと役に立つプログラムへ● ≠ プログラミング学習のためのプログラム● プログラミングを目的から手段へ● 巷のすごそうなプログラムとのギャップを埋める

    ● 前半の内容で必須となるもの● Python の基礎● 関数、ファイル入出力、文字列の扱い、など

  • 6

    ネットワークプログラミング● 「スゴそうなプログラムとのギャップを埋め、それなりに高機能で役に立ちそうなプログラム」を個人で作るには何が必要か?

    ● 既存の関数ライブラリ(API)を使える● 用意された関数の役割は?引数の意味と型は?

    ● 後半では、毎日使っているが中身は良く知らない & 教職・情報!

    「ネットワークプログラミング」

  • 7

    場所

    すべてオンライン(Microsoft Teams)

  • 8

    基本的に

    前半、講義

    後半、課題実習(with TA)

  • 9

    実習課題のチェック● TAがオンラインで提出課題をチェック● 次回実習終了30分前が提出(予約)〆切(7日と60分)

    ● リモート実習室環境 rp-linux.st を利用

  • 10

    成績評価● 後半の評価:50+α点

    ● 実習課題 25点● レポート -10点 ~ 25点+α

    「自作した簡易Webサーバの性能を比較・評価する」

    ● 講義・演習への出欠を成績に加味しない(講義録画もあとから視聴できますし)。

    ● 科目評価は、前半分と加算して100点超は切り捨て。

  • 11

    後半でとくに必要なもの

    「想像力」 s.connect((HOST,PORT))

    send=b'Hello,world'

    s.sendall(send)

    print('Send',repr(send))

    data=s.recv(1024)

  • 12

    本日のレシピ1.後半の実施方法と評価方法2.ネットワークに関する幾つかの基礎的な事柄3.ネットワークを調べる4. echoクライアント・サーバを動かす

  • 13

    コンピュータネットワーク● 言葉としてはけっこうアイマイ

    ● 「コンピュータ」とは? 計算ができる機械?CPU?● 「ネットワーク」とは? 繋がる?情報を伝える?

    ● 情報を伝える? = 意味・意図を伝える● 送り手と受け手の共通認識が必要● 情報伝達には必ず解釈がつきまとう● Merci / Gracias / Terima kasih● プロトコル(Protocol)が必要

  • 14

    ネットワークの基礎概念● プロトコル● TCP/IPプロトコル● (プロトコル階層)● パケット● IPアドレス

  • 15

    プロトコル● プロトコル = 約束事、(通信)規約

    ● 情報伝達における曖昧さを無くすための手続き方法● 情報伝達や手続きの方法・通信手順など● 使われる言葉や記号の意味、それの伴う動作など● TCP/IP プロトコル、京都議定書(Kyoto Protocol )

    パリ協定(the Paris agreement, 2015)

    ● この応用プログラミング(後半戦)では、

    TCP/IP プロトコルを用いたネットワークプログラミング

    を扱う。

  • 16

    TCP/IP プロトコル● Transmission Control Protocol / InternetProtocol

    ● TCP/IP プロトコル・スイート● TCP, UDP / IP, ICMP, ARP / RIP, OSPF, BGP /HTTP, SMTP, FTP, TELNET, SNMP,...

    ● TCP/IP ≒ インターネットのプロトコル● 誰が決めているのか?

    ● IETF (Internet Engineering Task Force) による、RFC (Request For Comments) という仕様書

  • 17

    プロトコル階層アプリケーション層HTTP, SMTP, POP

    トランスポート層TCP, UDP

    ネットワーク層IP, ARP

    データリンク層Ethernet, PPP

    物理層

    ケーブル、光ファイバ

    プロトコルに従った

    送信データをTCPに渡す

    データをパケットに分割

    して番号付けする

    パケットに送信先の

    アドレスを付ける

    ハードウェアに合わせて

    パケットを渡す

    パケットのデータが

    電気信号などで送信

    プロトコルに従って

    受け取ったデータを処理

    パケットを順番に並べて

    データを再構成する

    パケットが壊れてないか?

    自分宛のパケットか?

    パケットの種類を確認して

    プロトコルに渡す

    電気信号などで

    データを受け取る

  • 18

    郵便プロトコルアプリケーション層HTTP, SMTP, POP

    トランスポート層TCP, UDP

    ネットワーク層IP, ARP

    データリンク層Ethernet, PPP

    物理層

    ケーブル、光ファイバ

    「送り手」

    郵便番号と宛名を書いてポストに投函する

    「集配人」

    ポストから集めて集配局へ

    「集配局」

    郵便番号で仕分け

    「集配局配送」

    仕分けごと梱包して

    貨物に渡す

    「輸送」

    発送

    「受け手」

    ⾃宅ポストで受け取る

    「集配人」

    集配局から受取人ポストへ

    「集配局」

    郵便番号で仕分け

    「集配局配送」

    貨物から受け取って仕分けへ

    「輸送」

    荷受け

  • 20

    IPアドレス● IPでネットワーク機器を一意に判別する番号

    ● IPv4: 32bits 232 = 4294967296● IPv6: 128bits 2128 = 340282366920938463463374607431768211456 (6.8e+17/mm2)

    ● ICANN, JPNIC● ドット付き10進表記 (dotted decimal notation)● ネットワーク部・ホスト部・サブネットマスク

    10000101.01010011.01010000.00000001

    133.83.80.1

    255.255.255.128

    11111111.11111111.11111111.10000000

    133.83.80.1/25

  • 21

    以上が、ネットワークの基本概念その1

    次に、 実際に(みなさんの目の前にある)PCのネットワーク設定を調べつつ

    その2(ドメイン名とか)へ 

  • 23

    PCのネットワーク情報を調べる

    ● ipconfig● ipconfig /all

    macOS Linux Windows

    ● ifconfig● ifconfig en0

    ● ifconfig● ip address

  • 24

    ドメイン名● IPアドレスを覚えるのは面倒なので名前を付ける● 個人でも所有できます● FQDN(Fully Qualified Domain Name)host.domain

    ● www.math.ryukoku.ac.jp (133.83.80.1)● wiki.math.ryukoku.ac.jp

    ● DNS (Domain Name System)● IPアドレスとドメイン名を対応付ける仕組み● DNSサーバへ問い合わせる● 133.83.80.1 www.math.ryukoku.ac.jp

  • 25

    PCのホスト名を調べる

    ● hostname

    macOS Linux Windows

    ● hostname● hostname -f

    ● hostname● hostname -a

  • 26

    DNSデータベースを参照する

    ● nslookup 133.83.80.1● nslookup sano.org

    macOS Linux Windows

    ● nslookup 133.83.80.1● nslookup sano.org

    ● host 133.83.80.1● host sano.org● nslookup も使えます

  • 27

    本日のレシピ1.後半の実施方法と評価方法2.ネットワークに関する幾つかの基礎的な事柄3.ネットワークを調べる4. echo クライアント・サーバを動かす

  • 28

    クライアント・サーバモデル● クライアント (Client):

    ● サービスを要求する・受ける側(お客様?)● 通信を開始する(能動的)

    ● サーバ (Server):● サービスを提供する側(お店?)● 通信開始を待つ(受動的)

    ● 例:WWW(HTTP)サーバ/クライアント、 メイル(SMTP)サーバ/クライアント

    ● クライアン・サーバ通信モデル:● クライアントから通信を開始する● クライアントからの1回の送信に対して、必ずサーバが1回返信

    ● クライアント・サーバモデルとしての禁止事項● 送信だけ・受信だけ・送受信の回数が違う

  • 29

    echoクライアント・サーバを動かす●より正確には

    ● echo クライアントプログラム● echo サーバプログラム

    ●この2つのプログラムを実行させて実際にネットワーク通信させることが本日の課題です。 → 実際に動かしてみる。

    ●この echo クライアント・サーバプログラムを使って演習を進めて行きます。