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

科目基礎情報

学校 北九州工業高等専門学校 開講年度 令和02年度 (2020年度)
授業科目 ネットワークプログラミング
科目番号 0081 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 生産デザイン工学科(情報システムコース) 対象学年 4
開設期 通年 週時間数 2
教科書/教材 小高知宏「PythonによるTCP/IPソケットプログラミング」(オーム社)、Michael J. Donahoo/Kenneth L. Calvert「TCP/IPソケットプログラミングC言語編」(オーム社)、「K-SEC高学年分野別教材」
担当教員 福田 龍樹

到達目標

近年の実用的なアプリケーションプログラムは、クラウド技術の発達も手伝って、サーバや他端末との通信を行うことが当たり前のようになっており、その基礎技術を身に着けておくことはさまざまなアプリケーション開発において役に立つと考えられる。本授業ではソケット通信に着目をする。授業の前半では, 近年よく用いられているPythonを習得しつつ、ソケットプログラミングの基礎を学び、ソケットの概要や、通信プログラムの挙動の理解を目標とする。後半ではC言語を用いてより細かな挙動を確認し、適切な知識を習得することを目標とする。

ルーブリック

理想的な到達レベルの目安(優)標準的な到達レベルの目安(良)標準的な到達レベルの目安(可)
TCP/UDPの違いについての理解TCPやUDPそれぞれのメリットやデメリットをあげ,場合によって使い分けることができる.TCPやUDPそれぞれのメリットやデメリットをあげることができる.TCPやUDPの違いを簡単に説明できる.
ソケットプログラミングソケットを用いたTCPおよびUDP通信を用いたサーバクライアントアプリケーションの実装を行うことができる.ソケットを用いたTCPおよびUDP通信を用いた通信を行うことができる.ソケットを用いたTCPおよびUDP通信を用いたサーバクライアントアプリケーションの動作について説明することができる.
マルチプロセスマルチプロセスについて概要を理解し、子プロセスの生成と回収ができるマルチプロセスについて概要を理解し、子プロセスの生成ができるマルチプロセスの仕組みがわかる

学科の到達目標項目との関係

準学士課程の教育目標 (B)① 専門分野における工学の基礎を理解できる。
専攻科教育目標、JABEE学習教育到達目標 SB① 共通基礎知識を用いて、専攻分野における設計・製作・評価・改良など生産に関わる専門工学の基礎を理解できる。
専攻科教育目標、JABEE学習教育到達目標 SC① 専門工学の実践に必要な知識を深め、実験や実習を通じて、問題解決の経験を積む。

教育方法等

概要:
前半は,標準的なLinux上でpythonを用いたソケットプログラムを行う。pythonという新しい言語の経験をするとともに、簡易なソケット通信プログラムを行うことで、ソケットの役割等を身につける。後半はC言語を用いて、ソケット通信を行い、さらに細かなオプションを設定する。また、マルチプロセスが重要な技術であることを確認し、子プロセスの生成と回収について学ぶ。
授業の進め方・方法:
ソケットプログラムはOSによって多少異なる部分もあるが、本講義ではLinuxを演習用PCのOSとして用いる。学生は実際に自らコーディングを行うことを原則とする。
注意点:
本授業ではネットワーク上のパケットも扱うため,使い方によっては他人に多大な迷惑をかける可能性もある.学生はそれらの可能性に対してしっかりと認識し,正しい倫理観をもってこれらの技術を扱うこと.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 Pythonの作法 Pythonの実行およびインタラクティブモードで簡単な四則演算等を行うことができる
2週 Pythonでプログラミング1 Pythonのソースコードをファイルに保存して実行することができる
3週 Pythonでプログラミング2 Pythonの関数や変数の利用ができる
4週 OSI参照モデルとTCP/IP OSI参照モデルとTCP/IPモデルについて説明ができる
5週 IPアドレスの構成とホスト名からの変換 IPアドレスのクラスの概念およびCIDR形式について理解する。Pythonを使って名前解決の簡易アプリケーションを作成できる。
6週 TCPサーバプログラムの作成と動作確認 Pythonを使ってTCP通信を行うサーバプログラムを作成することができる。
7週 TCPクライアントプログラムの作成と動作確認 Pythonを使ってTCP通信を行うクライアントプログラムを作成することができる
8週 TCPサーバプログラムのマルチスレッド化 Pythonを使ったTCP通信を行うサーバプログラムをマルチスレッドで作成することができる。
2ndQ
9週 TCPサーバプログラムのマルチプロセス化 Pythonを使ったTCP通信を行うサーバプログラムをマルチプロセスで作成することができる。
10週 マルチスレッドとマルチプロセスの違い(Pythonの場合) マルチスレッドとマルチプロセスの違いを知る。またPythonを用いた場合はどちらが良いかを説明することができる。
11週 [演習]簡易ゲームクライアントプログラムの作成1 これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
12週 HTTPリクエストとHTTPレスポンス これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
13週 Webサーバプログラムの作成 HTTPリクエストとHTTPレスポンスの構成や意味がわかる
14週 Webサーバプログラムの作成と動作確認 作成したWebサーバプログラムを実行してブラウザからアクセスし、その動作を確認することができる
15週 Webクライアントプログラムの作成と動作確認 簡易的なテキストブラウザを作成し、HTTPプロトコルで通信可能なクライアントプログラムを作成することができる。
16週 期末試験
後期
3rdQ
1週 UDPサーバ・クライアントの作成と動作確認 TCP通信とUDP通信の違いをプログラムを用いた実験で確認できる
2週 C言語を用いたTCPサーバプログラムの作成 C言語を使ってTCP通信を行うサーバプログラムを作成することができる
3週 C言語を用いたTCPクライアントプログラムの作成 C言語を使ってTCP通信を行うクライアントプログラムを作成することができる
4週 TCPサーバプログラムのマルチプロセス化1 マルチプロセスのTCPサーバプログラムをC言語で作成することができる
5週 TCPサーバプログラムのマルチプロセス化2 マルチプロセスのTCPサーバプログラムをC言語で作成することができる
6週 中間試験
7週 ゾンビプロセス マルチプロセスプログラムがゾンビプロセスを残さないようにする方法を理解することができる
8週 TCPサーバプログラムのマルチスレッド化 マルチスレッドのTCPサーバプログラムをC言語で作成することができる
4thQ
9週 データのエンコード TCP通信でやり取りをするデータのエンコードができる
10週 バイトオーダ バイトオーダについてビッグエンディアンとリトルエンディアンの違いを説明することができる
11週 パディング パディングによて変数のサイズが変わる理由を説明することができる
12週 TCP通信を用いた複数人のチャットシステムの作成1 TCP通信を用いて複数人でチャットができるシステムを作ることができる
13週 TCP通信を用いた複数人のチャットシステムの作成2 TCP通信を用いて複数人でチャットができるシステムを作ることができる
14週 TCP通信を用いた複数人のチャットシステムの作成3 TCP通信を用いて複数人でチャットができるシステムを作ることができる
15週 TCP通信を用いた複数人のチャットシステムの作成4 TCP通信を用いて複数人でチャットができるシステムを作ることができる
16週 期末試験

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3前10,前11,前13,前14,前15,後1,後2,後3,後12,後13,後14,後15
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3前10,前11,前13,前14,前15,後1,後2,後3,後12,後13,後14,後15
情報通信ネットワークプロトコルの概念を説明できる。4前2,前3,前4,前5,前6,前12,前13,前14,前15
プロトコルの階層化の概念や利点を説明できる。4前2,前3,前4,前5,前6,前12,前13,前14,前15
ローカルエリアネットワークの概念を説明できる。4前4,前5
インターネットの概念を説明できる。4前4,前5
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。4前2,前3,前4,前5,前6,前7,後2
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。4前11,後13,後14
基本的なルーティング技術について説明できる。4前4,後9,後13,後14
基本的なフィルタリング技術について説明できる。4前4,後9,後13,後14
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。3前2,前3,前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。3前1,前2,前3,前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。3前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。3前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。3前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。3前1,前2,前3,前8,前9,前10,前11,前13,前14,前15,後2,後3,後4,後5,後7,後8,後12,後13,後14,後15
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。3前8,前9,前10,前11,前13,前14,前15,後2,後3,後4,後5,後7,後8,後12,後13,後14,後15
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。3前10,前11,前13,後2,後3,後7,後11,後12,後13,後14,後15

評価割合

課題試験合計
総合評価割合5050100
基礎的能力000
専門的能力5050100
分野横断的能力000