応用プログラミング...既存の 関数ライブラリ( api) を使える...
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 クライアント・サーバプログラムを使って演習を進めて行きます。