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

科目基礎情報

学校 北九州工業高等専門学校 開講年度 平成30年度 (2018年度)
授業科目 ネットワークプログラミング
科目番号 0017 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 生産デザイン工学科(情報システムコース) 対象学年 4
開設期 通年 週時間数 2
教科書/教材 「基礎からわかるTCP/IPネットワーク実験プログラミング第2版」村山公保著(オーム社)、「ルーター自作でわかるパケットの流れ」小保光之著(技術評論社)、「K-SEC高学年分野別教材」
担当教員 松久保 潤,福田 龍樹

到達目標

TCP/IPはインターネットの高性能なパケット通信を実現するプロトコルとして利用され続けている. 本授業の前半では, TCPやIPのヘッダを直接操作するプログラムでの実験により, 各プロトコルのヘッダの意味やプロトコルの仕組みを理解する. 加えて, 各プロトコルの特性, 問題点, 運用時の注意点を学ぶ. さらに, 後半では, パケットを中継しながらネットワークの仕組みを理解するのと同時に, リンクレイヤーでパケットを扱う方法を主眼としている. そのために, ブリッジやルータを自作し, 実際にパケットを中継しながらイーサネットの仕組みを理解する.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安標準的な到達レベルの目安(可)
プロトコルスタックプロトコルスタックを実装できるプロトコルスタックの内部処理について説明できるパケット交換の概要を説明できる
ソケットプログラミングソケットを用いたUDPおよびTCP通信ができるソケットシステムコールについて説明できるソケットの概要を説明できる
ブリッジブリッジを実装できるブリッジが実際に行う処理について説明できるブリッジの機能を説明できる
ルータルータを実装できるルータが実際に行う処理について説明できるルータの機能を説明できる

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

教育方法等

概要:
前半は, 標準的なLinux上でソケットAPIを使いながら, TCP/IPによる通信アプリケーションを作成する. 後半は, 直接Ethernetパケットを扱い, ルーターを実装することを主な目的とする. その過程で, 各プロトコルの使用法, 特性, 注意点を学ぶ.
授業の進め方・方法:
実験プログラム用のテスト環境用のネットワークを構築し, その中でプログラムの挙動を解析し, 各プロトコルの特性を学ぶ.
注意点:
本授業でプログラムを作成する目的は, 実験を通してプロトコルおよびネットワークの知識・技能を向上させることである. 用法を守って正しく使う倫理観が求められる.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 TCP/IPプロトコルスタック入門(1/2) TCP/IPプロトコルスタックの基礎およびプロトコルスタックの詳細
について説明できる
2週 TCP/IPプロトコルスタック入門(2/2) プロトコルスタックの実現方法について説明できる
3週 TCP/IPプロトコルとヘッダの構造(1/2) プロトコルヘッダと構造体, Ethernet, ARP, IPについて説明できる
4週 TCP/IPプロトコルとヘッダの構造(2/2) ICMP, UDP, TCP, チェックサムについて説明できる
5週 ソケット(1/2) ソケットの概要, ソケットで利用される構造体, ソケットシステムコールによる処理の流れについて説明できる
6週 ソケット(2/2) ソケットシステムコールの詳細について説明できる, UDPによる通信プログラムおよびTCPによる通信プログラムを作成できる
7週 パケットモニタリング実験(1/2) パケットモニタリングの基礎知識, データリンクアクセスインターフェースについて説明できる
8週 パケットモニタリング実験(2/2) パケットモニタリングプログラムを作成できる
2ndQ
9週 TCP/IP通信の識別(1/2) IPアドレスとポート番号について説明できる, ホストスキャンプログラムを作成できる
10週 TCP/IP通信の識別(2/2) TCPポートスキャンプログラム, UDPポートスキャンプログラムを作成できる
11週 ARPの実験 ARPの詳細を説明できる, ARPを使用した実験プログラムを作成できる
12週 IPとICMPの実験(1/2) ルーティングテーブルと経路制御について説明できる
13週 IPとICMPの実験(2/2) ICMPリダイレクトメッセージ送信プログラムを作成できる, 経路上のルータの情報を取得するプログラムを作成できる
14週 TCPの実験(1/2) TCPの詳細, TCPコネクション確立時のSYNセグメントを送信するプログラムを作成できる
15週 TCPの実験(2/2) TCPコネクションを強制的に切断するプログラムを作成できる
16週
後期
3rdQ
1週 ルータ・ブリッジの役割 ルータやブリッジがネットワークの中でどんな働きをするものなのかを理解し、説明することができる。
2週 種々のパケット・IPv6 EthernetパケットやARPパケットなどについて、その利用目的や構成を理解することができる。
3週 データリンク層におけるプログラム(1/2) データリンク層を扱うプログラムを見て流れを把握することができる。
4週 データリンク層におけるプログラム(2/2) データリンク層を扱うプログラムを理解し、一部修正することができる。
5週 パケットキャプチャプログラム(1/2) パケットキャプチャのサンプルプログラムの流れを把握することができる。
6週 パケットキャプチャプログラム(2/2) パケットキャプチャのサンプルプログラムの流れを把握し、一部修正することができる。
7週 キャプチャしたパケットの内容確認 キャプチャしたパケットの内容を読むことができる。
8週 ブリッジのプログラム ブリッジの働きを理解し、サンプルプログラムの動作の流れを把握することができる。
4thQ
9週 ブリッジを用いたネットワークの構成 ブリッジを使ってネットワークを組むことができる
10週 ブリッジプログラムの改良 ブリッジのサンプルプログラムの一部を修正することができる。
11週 ルータの働き ルーター内の処理について説明することができる。
12週 ルータのプログラム作成(1/3) ルーターの動作を理解し、該当するプログラムを作成することができる
13週 ルータのプログラム作成(2/3) ルーターの動作を理解し、該当するプログラムを作成することができる
14週 ルータのプログラム作成(3/3) ルーターの動作を理解し、該当するプログラムを作成することができる
15週 ルータを用いたネットワークの構成 作成したルーターを使ってネットワークを組むことができる。
16週

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4後12,後13
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4後12,後13
変数の概念を説明できる。4後12,後13
データ型の概念を説明できる。4後12,後13
制御構造の概念を理解し、条件分岐を記述できる。4後12,後13
制御構造の概念を理解し、反復処理を記述できる。4後12,後13
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4後6,後12,後13
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4後12,後13
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4後3,後5,後8
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。4後4
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3後6,後10,後12
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3後6,後10,後12
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。3後4
情報通信ネットワークプロトコルの概念を説明できる。4後2
プロトコルの階層化の概念や利点を説明できる。4後2
ローカルエリアネットワークの概念を説明できる。4後1,後2,後9,後11
インターネットの概念を説明できる。4後2
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。4後1,後2,後11
主要なサーバの構築方法を説明できる。4
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。4前6
ネットワークを構成するコンポーネントの基本的な設定内容について説明できる。4後9
無線通信の仕組みと規格について説明できる。4
有線通信の仕組みと規格について説明できる。4後1
SSH等のリモートアクセスの接続形態と仕組みについて説明できる。4
基本的なルーティング技術について説明できる。4後1,後2,後11
基本的なフィルタリング技術について説明できる。4後13
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。3後12,後13,後14
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。3後12,後13,後14
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。3後12,後13,後14
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。3後3
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。3後3
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。3後3
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。3後3

評価割合

成果物合計
総合評価割合100100
基礎的能力00
専門的能力8080
分野横断的能力2020