Download presentation
Presentation is loading. Please wait.
1
ネットワークプログラミング C言語 第1回「イントロダクション」
2008年秋学期 Rodney Van Meter
2
今日の授業のお題 この授業について ネットワークの基礎知識 実習 授業の目的/流れ スタッフ紹介 授業の進め方/参加方法
みんなへのヒアリング ネットワークの基礎知識 実習
3
授業の目的 こんな人におすすめ ネットワークを利用したアプリケーション構築ができる ようになる C言語によるプログラミング
プログラミングのスキルアップをしたい ネットワークの知識をつけてみたい ネットワークを利用したアプリケーション構築ができる ようになる ソフトウェア設計・実装 C言語によるプログラミング 定石を習う 経験を積む事によって上達 手を動かすことが大事
4
前提 最低限欲しい あると役立つ 基本操作・基本知識 最低限押さえられていないと置いていかれるかも・・・ 情報処理の授業内容
ネットワークの基礎の基礎 プログラミングの基礎の基礎 いっぱい知識ある人は前半の講義はつまらないかも・・・
5
この授業の流れ C言語によるプログラミング入門 システムプログラミング ミニプロジェクトのグループ決定 ネットワーク関連のプログラミング
ミニプロジェクト成果発表
6
スタッフ 教員 アシスタント Rodney Van Meter (rdv@sfc.wide.ad.jp)
永山翔太 吉藤
7
この授業の進め方 火2限(11:10-12:40)、ε11 - 前半: 内容提示・解説,練習問題 - 後半: 課題提示・実習
注意:11/25, 1/13無 講義形式 - 前半: 内容提示・解説,練習問題 - 後半: 課題提示・実習 毎回授業では実習を行う 更に、学期末にはミニプロジェクトの発表
8
成績評価について 基本 ミニプロジェクトの成果 毎回の授業での実習の成果 プログラムとしての成果物 成果物についての期末レポート
これで出席を兼ねる
9
受講者へのヒアリング 学年は? C言語によるプログラミング経験 Java言語によるプログラミング経験 他授業の履修状況
インターネットオペレーション インターネット ネットワークアーキテクチャ システムプログラミング
10
今期の授業スケジュール(予定) 第1回 9/29:イントロダクション 第2回 10/6:C言語の基礎~関数・変数・Makefile
第5回 10/27: file I/O・ネットワークとプログラミング 第6回 11/10:ネットワークとプログラミング(1) 第7回 11/17:ネットワークとプログラミング(2) 第8回 12/1:ネットワークとプログラミング(3) 第9回 12/8:応用ネットワークプログラミング(1) 第10回 12/15:応用ネットワークプログラミング(2) 第11回 12/22:ミニプロ中間発表 第12回 1/12:ミニプロ実習 第13回 1/19:ミニプロ最終発表
11
プログラミング環境 CNS環境 sshして上記のホストにログイン 課題はSFSでサブミットする Linux:ccx00,ccx01
PuTTY: putty/ PuTTYkj.html 課題はSFSでサブミットする
12
プログラミング環境 (2) 自分のPCでやるのも可能 Windows: cygwin Linux, BSD, Macはネーティヴで
注意:IPv6は動かないかも Linux, BSD, Macはネーティヴで
13
ここから本編~ ネットワークの基礎
14
ネットワーク超基礎知識 プロトコル 階層化モデル ネットワークアプリケーションとは?
15
プロトコル ネットワークを介してコンピュータ同士が通信を行 う上で,相互に決められた約束事
それぞれ対応しているプロトコルが違うとお互いに通 信できない 人間 15 15
16
同じ決まりで通信するということ 相手が英語,自分が日本 語で話しても会話は成立し ない 電話では始めに 「もしもし ,xxです」
電話の例 1) 受話器を上げる 相手が英語,自分が日本 語で話しても会話は成立し ない 電話では始めに 「もしもし ,xxです」 コンピュータの世界でも同 じ UNIX-Windows間の通信 無線-有線間の通信 2) 電話番号を入力 5) 会話する 6) どちらかが受話器を置く 3) 着信を通知する 4) 受話器を上げる 7) 回線が切れる 16 16
17
OSI参照モデル 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層 アプリケーション層 信号
フレーム パケット データ ・各プロトコルの関係を階層構造でモデル化
18
1) 物理層 物理的な信号線での規格を規定する層 メディア 規格 電波強度、符号変調方式 光ファイバ,銅線,電灯線,衛星,地上波無線
標準化と団体(ITU-T,ISO,…) 規格 X.25,IEEE,ATM,ISDN… 光)SONET,FDH…
19
2) データリンク層 物理的な通信媒体に対応した、フレームをやり取りす るためのプロトコルを規定する層 同期,送信権の制御 識別 誤り検出
CSMA/CD 識別 MAC Address 誤り検出 CRC Checksum
20
3) ネットワーク層 物理媒体を意識しない、インターネット全体で の2点間通信を規定する層 経路制御(ルーティング) IPv4,IPv6
End-to-Endの通信 経路制御(ルーティング) IPv4,IPv6 世界でunique
21
4) トランスポート層 各ノード(ホスト)で動作するプロセス間の通信 を規定するための層 TCP,UDP
ノード内でのサービスの識別(PORT)
22
5) セッション層 セッション(通信の開始から終了まで)の手順 を規定するための層 一般的にはアプリケーションがセッションをハ ンドル
送受信の同期管理 一般的にはアプリケーションがセッションをハ ンドル
23
6) プレゼンテーション層 セッションでやり取りされるデータの表現方法 や符号化、暗号化などを規定する層 バイトオーダ
Least/Most Significant Bit (LSB/MSB) Htonl(), Htons() 一般的にはアプリケーションがデータ表現をハ ンドル
24
7) アプリケーション層 アプリケーション間でのデータのやり取りを規 定するための層 電子メールのフォーマット,内部構造など
一般的なアプリケーションプロトコルは、6,7, 8層を規定している
25
インターネットの階層モデル エンドノード 中継ノード エンドノード 送信元から中継ノード(ルータ)を通ってあて先に到達する
アプリケーション層 Application Layer アプリケーション層 Application Layer トランスポート層 Transport Layer トランスポート層 Transport Layer ネットワーク層 Network Layer ネットワーク層 Network Layer ネットワーク層 Network Layer データリンク層 Data Link Layer データリンク層 Data Link Layer データリンク層 Data Link Layer 物理層 Physical Layer 物理層 Physical Layer 物理層 Physical Layer エンドノード 中継ノード エンドノード 送信元から中継ノード(ルータ)を通ってあて先に到達する 25 25
26
OSIモデルとインターネットアーキテクチャ
アプリケーション層 Application Layer Web XML Webサービス メール ニュース ・・・ メッセージング ファイル共有 ファイル転送 ・・・ プレゼンテーション層 Presentation Layer セッション層 Session Layer トランスポート層 Transport Layer TCP UDP ネットワーク層 Network Layer IP データリンク層 Data Link Layer イーサネット xDSL 光ファイバ 無線LAN 物理層 Physical Layer 26
27
プロトコルスタックとカプセル化 受信側 送信側 各層はヘッダの情報をもとに処理を行い,そのヘッダ部分を取り 除いて上層へ渡す
各層がそれぞれ必要な情報(ヘッダ)を付加して下層へ渡す 受信側 各層はヘッダの情報をもとに処理を行い,そのヘッダ部分を取り 除いて上層へ渡す アプリケーション アプリケーション 例:HTTPヘッダ データ データ TCPヘッダ TCP TCP IPヘッダ IP IP Ethernet Frame Ethernet/100M Ethernet/100M 信号へ CAT5e CAT5e 送信側 受信側 27 27
28
ネットワークアプリケーションとは? transport layer IP network layer data link layer
process process process process TCP UDP transport layer ICMP IP IGMP network layer ARP RARP data link layer hardware interface media
29
ここから実習~ C言語に触れてみる
30
実習 次週からの授業を行う準備/練習 “こんなのできるぜ”というたしなみのある人は 帰っていいよ CNSへsshをする
Hello world 出力する “こんなのできるぜ”というたしなみのある人は 帰っていいよ
31
今日の環境 CNS環境 sshして上記のホストにログイン 自分のホームディレクトリにファイルを置く Linux:ccx00,ccx01
PuTTY: 自分のホームディレクトリにファイルを置く
32
はろーわーるど ???.c というファイル名 gccコマンド include printf a.out などのおまじないを体験してみる
33
hello.cの例 → gcc hoge.c → ./a.out #include <stdio.h>
int main (int argc, char* argv[]) { printf("%s\n", "Hello World!"); } main(){ printf(“Hello World!\n”); → gcc hoge.c → ./a.out
34
コンパイル gcc hoge.c または gcc –o hoge hoge.c a.outというファイルが生成される
35
Makefile 再コンパイルの煩雑さを解消 基本文法 ターゲット:依存するファイル <tab>コマンド
36
Makefileの例 all: program
program : source1.o source2.o gcc -o program source1.o source2.o source1.o : source1.c gcc -c source1.c source2.o : source2.c gcc -c source2.c
37
Makefileの簡素化 .cから.oファイルの生成ルール all : source1.o source2.o
gcc -o program source1.o source2.o コンパイルオプションの変数化 <command> %gcc -Wall -g -c source1.c <Makefile> CFLAGS = -Wall gcc ${CFLAGS} -c source1.c
38
Makefile: hello.cへの適用例
all: hello hello: hello.o gcc -o hello hello.o hello.o: hello.c gcc -c hello.c
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.