第一回授業用資料

ネットワークプログラミング
中村 修
今日の授業のお題
• この授業について
–
–
–
–
授業の目的/流れ
スタッフ紹介
授業の進め方/参加方法
みんなへのヒアリング
• ネットワークの基礎知識
• 実習
授業の目的
• ネットワークを利用したアプリケーションを
作成できるようになること。
• C言語によるプログラミング
この授業の流れ
•
•
•
•
•
C言語によるプログラミング入門
システムプログラミング
ミニプロジェクトのグループ決定
ネットワーク関連のプログラミング
ミニプロジェクト成果発表
スタッフ
• 教員
– 中村修
([email protected])
• アシスタント
– 海崎良:D1
([email protected])
– 入野仁志:M1
([email protected])
– 高橋宏明:B4
([email protected])
この授業の進め方
• 5限、6限の連続の授業
• 5限(16:20-17:50)
– 講義形式
• 6限(18:00-19:30:終わるまで)
– 実習形式
• 毎回授業では実習を行う
• 更に、学期末にはミニプロジェクトの発表
この授業の評価方法
• 毎回の授業の実習結果
• ミニプロジェクトの成果
• 出席は・・・?
この授業の参加方法
• SoIにおいて受講登録をしてください
– http://www.soi.wide.ad.jp/class/20030030
• 課題の提出など授業のサポートはここでお
こないます
受講者へのヒアリング
•
•
•
•
学年は?
C言語によるプログラミング経験
Java言語によるプログラミング経験
他授業の履修状況
–
–
–
–
インターネットオペレーション
インターネット概論
ネットワークオペレーション
システムプログラミング
公式サポート環境
• CNS環境
– FreeBSD: zux001 – zux159
• sshして上記のホストにログイン
– http://itc.sfc.keio.ac.jp/ssh/
• 自分のホームディレクトリにファイルを置く
ネットワーク超基礎知識
• 階層化モデル
• プロトコル
• ネットワークアプリケーションとは?
OSI参照モデル
アプリケーション層
データ
アプリケーション層
セッション層
プレゼンテーション層
トランスポート層
セッション層
トランスポート層
ネットワーク層
データリンク層
物理層
プレゼンテーション層
パケット
フレーム
信号
ネットワーク層
データリンク層
物理層
OSI参照モデル
アプリケーション層
データ
アプリケーション層
セッション層
プレゼンテーション層
トランスポート層
セッション層
トランスポート層
ネットワーク層
データリンク層
物理層
プレゼンテーション層
パケット
フレーム
信号
ネットワーク層
データリンク層
物理層
インターネットの階層モデル
アプリケーション
アプリケーション
TCP
IP
データリンク
物理
IP
データリンク
物理
TCP
IP
データリンク
物理
OSI参照モデルと
インターネットの階層構造の関係
アプリケーション
プレゼンテーション
アプリケーション
セッション
トランスポート
TCP
UDP
ネットワーク
IP
データリンク
Network Interface
物理
物理
階層型プロトコルでのデータ送受信
• 送信側
– 各層がそれぞれ必要な情報を付加して下層へ渡す
• 受信側
各層の
情報
– 各層がそれぞれ情報をもとに処理を行い、その使った
情報を取り除いて上層へ渡す
データ
アプリケーション
アプリケーション
TCP
TCP
UDP
UDP
IP
IP
Network Interface
Network Interface
物理
物理
送信ノード
受信ノード
データ
プロトコル
• 2つの機器間で,通信の手順を決めた約
束ごと
– IP,TCP,HTTP,FTP
• コンピュータは「決まり」がないと通信でき
ない
同じ決まりで通信するということ
• 相手が英語,自分が日本語で話しても会
話は成立しない
• 電話では始めに 「もしもし,xxです」
• コンピュータの世界でも同じ
– UNIX-Windows間の通信
– 無線-有線間の通信
ネットワークアプリケーションとは?
process
process
TCP
UDP
IP
ICMP
process
process
ARP
transport
layer
IGMP
network
layer
RARP
hardware
interface
media
data link
layer
実習
• 次週からの授業を行う準備/練習
– CNSへsshをする
– Hello world 出力する
• “こんなのできるぜ”というたしなみのある
人は帰っていいよ
はろーわーるど
• ???.c というファイル名
• gccコマンド
• include
• printf
• a.out
などのおまじないを体験してみる
プログラミング言語と実行コード
• コンピュータがわかるのは0/1
• 0/1の列だと人間には理解不可能
• 人間とコンピュータの架け橋が必要
– インタプリタ
– コンパイラ
C言語におけるコンパイラ
• CNSの環境では
– gcc version 2.95.4 20020320 [FreeBSD]
ソースコード
字句解析
コンパイラ
構文解析
コード生成
実行コード
一連の流れ
• エディタ(vi,emacs)でソースコードを開く
– vi hello_world.c
– emacs hello_world.c
• ソースコードを書く
• ファイルを保存する
• コンパイルを行う
– gcc hello_world.c
• プログラムを実行する
– ./a.out
ソースコードを書く
#include<stdio.h>
int
main(){
printf("hello world\n");
}
コンパイルを行う
gcc hello_world.c
• 実行コードが生成される
lsをしてみよう!
→ a.out というファイルが生成されている。
プログラムを実行する
./a.out
カレントディレクトリにパスが通っていない場合に
は上記のように、 ./ で場所を指定。
%./a.out
Hello World
%
終わり
• 出来たら終わりです。
• お疲れさまでしたー。
• 毎回自分のPCを持ってきてくださいね。