ネットワークプログラミング C言語 第1回「イントロダクション」

Slides:



Advertisements
Similar presentations
1 情報ネットワーク 課題レポート 模範解答 身の回りで、階層化されている物事を 1 つあげて、その階層構造を説明 せよ 課題のポイント – 機能が階層ごとに分割されているか – 同じ層でのやりとり(プロトコル)があるか – 上位層と下位層での情報のやりとり(インタフェース)があるか –
Advertisements

情報ネットワークと教育 通信と情報ネットワーク プロトコル LAN The Internet. 通信とその歴史 通信とは 電信 (1835 、モールス ) 電話 (1876 、ベル ) ラジオ (1895) 、テレビ (1925) 情報通信ネットワークへ.
TCP / IP の基礎 ネットワーク管理者入門. インターネットを支える技術 ISO の 7 階層プロトコルと TCP / IP の実装 階層機能関連する TCP / IP プロ トコル アプリケーション層電子メールやファイルの転送 といった、具体的なアプリ ケーションが使用する規約 TELNET.
インターネット プロトコル 情報教員のためのサーバ管理技法 3 日目 柴田 功. 情報教育の失敗事例 ホームページ作成でロゴの画像の ファイル名が他の生徒とかぶってし まった。 ホームページ作成でロゴの画像の ファイル名が他の生徒とかぶってし まった。 生徒には作品を FD に保存させていた が、データが消えてしまった。
Step.5 パケットダンプ Wiresharkでパケットをキャプチャする PC 1 PC 2 PC 3 PC 4 ネットワーク
山梨大学 伊 藤 洋 99/06/30 インターネット入門 総合科目V 山梨大学 伊 藤  洋
コンテンツ配信に優れている P2P 技術と、著作権侵害問題の関係について 述べよ。
インターネットのプロトコル階層 ネットワーク層(IPアドレス)
第1回.
前回の課題 IPv6アドレス IP ARP ICMP NAT インターネット層 2003年12月4日 情報ネットワーク論 新村太郎.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
第2回ネットワークプログラミング 中村 修.
TCP (Transmission Control Protocol)
「コンピュータと情報システム」 07章 インターネットとセキュリティ
情報教員のためのサーバ管理技法 3日目 インターネット プロトコル 柴田 功.
30分でわかるTCP/IPの基礎 ~インターネットの標準プロトコル~ 所属: 法政大学 情報科学研究科 馬研究室 氏名: 川島友美
WindowsNTによるLAN構築 ポリテクセンター秋田 情報・通信系.
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
Copyright Yumiko OHTAKE
心理学情報処理法Ⅰ コンピュータネットワーク概論.
スキルアップ.
トランスポート層.
ネットワークと コミュニケーション技法 第6回 -コンピュータネットワーク-.
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
ネットワーク機器接続 2SK 情報機器工学.
ま と め と 補 足 ネットワークシステムⅠ 第15回.
「コンピュータと情報システム」 06章 通信ネットワーク
第5回ネットワークプログラミング 中村 修.
第2章 第1節 情報通信の仕組み 1 ネットワークの仕組み 2 通信プロトコル 3 認証と情報の保護
Ibaraki Univ. Dept of Electrical & Electronic Eng.
6月19日 RoutingとRouting Protocol 大竹 由美子
イーサネット.
インターネット概論第3回 kudo担当分.
Copyright Yumiko OHTAKE
総合講義B:インターネット社会の安全性 第6回 ネットワークの基盤技術
物理層と伝送媒体 2012年度以降の教科書(第5版)と 2011年度までの教科書(第4版)の対応 物理層、伝送媒体と公衆通信サービス
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
2010年秋学期 Rodney Van Meter Network Programming in C #1: Introduction ネットワークプログラミング C言語 第1回「イントロダクション」 2010年秋学期 Rodney Van Meter
ネットワークプログラミング 中村 修.
第11回ネットワークプログラミング 中村 修.
インターネットの基礎知識 その3 ~TCP・UDP層編~
イーサネットフレームの構造とデータリンク層アドレス
岡村耕二 トランスポート層 ソケットプログラミング 岡村耕二 情報ネットワーク.
IP ルーティングの図示 情報科学科 松澤 智史.
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
出典・・・基礎からわかるTCP/IPコンピューティング入門 村山公保著
ネットワークの基礎知識 電子制御設計製図Ⅰ   2014年5月2日 Ⅲ限目.
セキュリティ 05A2013 大川内 斉.
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
TCP/IP入門          櫻井美帆          蟻川朋未          服部力三.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ユビキタス社会におけるバイオメトリクスを使用した生体認証技術に関する研究
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
最低限インターネット ネットワークにつなぎましょ!
画像情報特論 (1) - インターネット電話とインターネット放送 はじめに 電子情報通信学科 甲藤二郎
UNIX演習 情報ネットワーク特論資料.
LAN(TCP/IP) インターネットワーキング編
勝手にインフラ隊 (の中の人といっしょ) に学ぶネットワーク講座 Part2
UNIX演習 情報ネットワーク特論資料.
情報実験 第五回 最低限 internet ~ネットワークの仕組みを知ろう~
勝手にインフラ隊 (の中の人といっしょ) に学ぶネットワーク講座 Part2
OSI7層に関係する機器、仕様、機能など 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層
インターネットワーキング.
ユビキタス社会を支える トランスメディア実現のための 情報記述に関する研究
ネットワークプログラミング 05A1302 円田 優輝.
インターネットプロトコル実習 第1回:ガイダンス
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
ネットワークシステム ネットワークシステム概要.
Presentation transcript:

ネットワークプログラミング C言語 第1回「イントロダクション」 2008年秋学期 Rodney Van Meter rdv@sfc.wide.ad.jp

今日の授業のお題 この授業について ネットワークの基礎知識 実習 授業の目的/流れ スタッフ紹介 授業の進め方/参加方法 みんなへのヒアリング ネットワークの基礎知識 実習

授業の目的 こんな人におすすめ ネットワークを利用したアプリケーション構築ができる ようになる C言語によるプログラミング プログラミングのスキルアップをしたい ネットワークの知識をつけてみたい ネットワークを利用したアプリケーション構築ができる ようになる ソフトウェア設計・実装 C言語によるプログラミング 定石を習う 経験を積む事によって上達 手を動かすことが大事

前提 最低限欲しい あると役立つ 基本操作・基本知識 最低限押さえられていないと置いていかれるかも・・・ 情報処理の授業内容 ネットワークの基礎の基礎 プログラミングの基礎の基礎 いっぱい知識ある人は前半の講義はつまらないかも・・・

この授業の流れ C言語によるプログラミング入門 システムプログラミング ミニプロジェクトのグループ決定 ネットワーク関連のプログラミング ミニプロジェクト成果発表

スタッフ 教員 アシスタント Rodney Van Meter (rdv@sfc.wide.ad.jp)‏ 永山翔太 (kurosagi@sfc.wide.ad.jp)‏ 吉藤 yoshfuji@...

この授業の進め方 火2限(11:10-12:40)、ε11 - 前半: 内容提示・解説,練習問題 - 後半: 課題提示・実習 注意:11/25, 1/13無 講義形式 - 前半: 内容提示・解説,練習問題 - 後半: 課題提示・実習 毎回授業では実習を行う 更に、学期末にはミニプロジェクトの発表

成績評価について 基本 ミニプロジェクトの成果 毎回の授業での実習の成果 プログラムとしての成果物 成果物についての期末レポート これで出席を兼ねる

受講者へのヒアリング 学年は? C言語によるプログラミング経験 Java言語によるプログラミング経験 他授業の履修状況 インターネットオペレーション インターネット ネットワークアーキテクチャ システムプログラミング

今期の授業スケジュール(予定) 第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:ミニプロ最終発表

プログラミング環境 CNS環境 sshして上記のホストにログイン 課題はSFSでサブミットする Linux:ccx00,ccx01 http://itc.sfc.keio.ac.jp/ssh/ PuTTY: http://www.chiart.greenend.org.up/~sgtathm/ putty/ http://hp.vector.co.jp/authors/VA024651/ PuTTYkj.html 課題はSFSでサブミットする

プログラミング環境 (2)‏ 自分のPCでやるのも可能 Windows: cygwin Linux, BSD, Macはネーティヴで 注意:IPv6は動かないかも Linux, BSD, Macはネーティヴで

ここから本編~ ネットワークの基礎

ネットワーク超基礎知識 プロトコル 階層化モデル ネットワークアプリケーションとは?

プロトコル ネットワークを介してコンピュータ同士が通信を行 う上で,相互に決められた約束事 それぞれ対応しているプロトコルが違うとお互いに通 信できない  人間 15 15

同じ決まりで通信するということ 相手が英語,自分が日本 語で話しても会話は成立し ない 電話では始めに 「もしもし ,xxです」 電話の例 1) 受話器を上げる 相手が英語,自分が日本 語で話しても会話は成立し ない 電話では始めに 「もしもし ,xxです」 コンピュータの世界でも同 じ UNIX-Windows間の通信 無線-有線間の通信 2) 電話番号を入力 5) 会話する 6) どちらかが受話器を置く 3) 着信を通知する 4) 受話器を上げる 7) 回線が切れる 16 16

OSI参照モデル 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層 アプリケーション層 信号 フレーム パケット データ ・各プロトコルの関係を階層構造でモデル化

1) 物理層 物理的な信号線での規格を規定する層 メディア 規格 電波強度、符号変調方式 光ファイバ,銅線,電灯線,衛星,地上波無線 標準化と団体(ITU-T,ISO,…)‏ 規格 X.25,IEEE,ATM,ISDN… 光)SONET,FDH…

2) データリンク層 物理的な通信媒体に対応した、フレームをやり取りす るためのプロトコルを規定する層 同期,送信権の制御 識別 誤り検出 CSMA/CD 識別 MAC Address 誤り検出 CRC Checksum

3) ネットワーク層 物理媒体を意識しない、インターネット全体で の2点間通信を規定する層 経路制御(ルーティング)‏ IPv4,IPv6 End-to-Endの通信 経路制御(ルーティング)‏ IPv4,IPv6 世界でunique

4) トランスポート層 各ノード(ホスト)で動作するプロセス間の通信 を規定するための層 TCP,UDP ノード内でのサービスの識別(PORT)‏

5) セッション層 セッション(通信の開始から終了まで)の手順 を規定するための層 一般的にはアプリケーションがセッションをハ ンドル 送受信の同期管理 一般的にはアプリケーションがセッションをハ ンドル

6) プレゼンテーション層 セッションでやり取りされるデータの表現方法 や符号化、暗号化などを規定する層 バイトオーダ Least/Most Significant Bit (LSB/MSB)‏ Htonl(), Htons()‏ 一般的にはアプリケーションがデータ表現をハ ンドル

7) アプリケーション層 アプリケーション間でのデータのやり取りを規 定するための層 電子メールのフォーマット,内部構造など 一般的なアプリケーションプロトコルは、6,7, 8層を規定している

インターネットの階層モデル エンドノード 中継ノード エンドノード 送信元から中継ノード(ルータ)を通ってあて先に到達する アプリケーション層 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

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

プロトコルスタックとカプセル化 受信側 送信側 各層はヘッダの情報をもとに処理を行い,そのヘッダ部分を取り 除いて上層へ渡す 各層がそれぞれ必要な情報(ヘッダ)を付加して下層へ渡す 受信側 各層はヘッダの情報をもとに処理を行い,そのヘッダ部分を取り 除いて上層へ渡す アプリケーション アプリケーション 例:HTTPヘッダ データ データ TCPヘッダ TCP TCP IPヘッダ IP IP Ethernet Frame Ethernet/100M Ethernet/100M 信号へ CAT5e CAT5e 送信側 受信側 27 27

ネットワークアプリケーションとは? 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

ここから実習~ C言語に触れてみる

実習 次週からの授業を行う準備/練習 “こんなのできるぜ”というたしなみのある人は 帰っていいよ CNSへsshをする Hello world 出力する “こんなのできるぜ”というたしなみのある人は 帰っていいよ

今日の環境 CNS環境 sshして上記のホストにログイン 自分のホームディレクトリにファイルを置く Linux:ccx00,ccx01 http://itc.sfc.keio.ac.jp/ssh/ PuTTY: 自分のホームディレクトリにファイルを置く

はろーわーるど ???.c というファイル名 gccコマンド include printf a.out などのおまじないを体験してみる

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

コンパイル gcc hoge.c または gcc –o hoge hoge.c a.outというファイルが生成される

Makefile 再コンパイルの煩雑さを解消 基本文法 ターゲット:依存するファイル <tab>コマンド

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

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

Makefile: hello.cへの適用例 all: hello hello: hello.o gcc -o hello hello.o hello.o: hello.c gcc -c hello.c