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

Slides:



Advertisements
Similar presentations
だい六か – クリスマスとお正月 ぶんぽう. て form review ► Group 1 Verbs ► Have two or more ひらがな in the verb stem AND ► The final sound of the verb stem is from the い row.
Advertisements

Humble and Honorific Language By: Word-Master Leo, Mixer of Ill Beats.
Step.5 パケットダンプ Wiresharkでパケットをキャプチャする PC 1 PC 2 PC 3 PC 4 ネットワーク
“Business English Pro” Why is it necessary to learn this course?
All Rights Reserved, Copyright (C) Donovan School of English
文法(ぶんぽう)5--Invitation
第1回レポートの課題 6月15日出題 今回の課題は1問のみ 第2回レポートと併せて本科目の単位を認定 第2回は7月に出題予定
日本語の文法 文型(ぶんけい)をおぼえよう!
 辞書系(じしょけい).
日本語... ジェパディー! This is a template for you to use in your classroom.
第2回ネットワークプログラミング 中村 修.
Chris Burgess (1号館1308研究室、内線164)
What did you do, mate? Plain-Past
Verb Plain Negativeform
TCP (Transmission Control Protocol)
Only One Flower in the World
日本人の英語文章の中で「ENJOY」はどういうふうに使われているのか
Goal: I can present how to make a food item I like in Japanese.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
コンピュータ ネットワークシステムトラック
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
A 02 I like sushi! I like origami!
Network Programming in C ネットワークプログラミング Lecture 8, Network Programming (3) 第8回「ネットワークとプログラミング(3)」 2010年秋学期 Rodney Van Meter.
十年生の 日本語 Year 10 Writing Portfolio
Unit Book 10_课件_U1_Reading2-8 4 Word power university 1.
The future tense Takuya Mochizuki.
Provisioning on Multiple Network(NIC) env
Who Is Ready to Survive the Next Big Earthquake?
Did he/she just say that? Get your head out of the gutter! Oh wait….
CRLA Project Assisting the Project of
VTA 02 What do you do on a weekend? しゅうまつ、何をしますか。
What is the English Lounge?
ストップウォッチの カード ストップウォッチの カード
ネットワークプログラミング C言語 第1回「イントロダクション」
ネットワークプログラミング 中村 修.
Japanese 111 Instructor name.
Students’ reactions to Japanese and foreign teachers’ use of L1/L2
第11回ネットワークプログラミング 中村 修.
Session 8: How can you present your research?
インターネットの基礎知識 その3 ~TCP・UDP層編~
ネットワークプログラミング 第4回「C言語の基礎~ポインタと配列」
Causative Verbs Extensively borrowed from Rubin, J “Gone Fishin’”, Power Japanese (1992: Kodansha:Tokyo) Created by K McMahon.
イーサネットフレームの構造とデータリンク層アドレス
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
-Get test signed and make corrections
ネットワークの基礎知識 電子制御設計製図Ⅰ   2014年5月2日 Ⅲ限目.
くれます To give (someone gives something to me or my family) くれました くれます
English class Management
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
Term paper, Report (1st, first)
My Favorite Movie I will introduce my favorite movie.
TCP/IP入門          櫻井美帆          蟻川朋未          服部力三.
Where is Wumpus Propositional logic (cont…) Reasoning where is wumpus
豊田正史(Masashi Toyoda) 福地健太郎(Kentarou Fukuchi)
第24回応用言語学講座公開連続講演会 後援:国際言語文化研究科教育研究プロジェクト経費
日本語113 5月29日(木) 〜でしょう てんきよほう.
Question Words….
ておく.
いくらですか?.
留学生のための就活ガイダンス Ⅰ Job-hunting Support Course I for International Students 日本での就職活動は何から始めれば良い?どんなことに気をつけるべき?と いった基本的なことから、ESや履歴書の書き方など実践的なことまで学ぶ ことができます。
Term paper, report (2nd, final)
第1回レポートの課題 6月24日出題 今回の課題は1問のみ 第2回レポートと併せて本科目の単位を認定 第2回は7月に出題予定
ー生命倫理の授業を通して生徒の意識に何が生じたかー
The difference between adjectives and adverbs
Cluster EG Face To Face meeting
Term paper, report (2nd, final)
へいせい二十七ねん 二がつにち ここのか・げつようび
BW: 英語で書いて下さい 1)小さくする 2)うるさく話す 3)大きく書く 4)上手になる (なる=become)
Cluster EG Face To Face meeting 3rd
プロトコル番号 長野 英彦.
Presentation transcript:

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

Today’s Lecture This course Basics of networking Exercise Goals Outline Staff introductions Basics of networking Exercise

Goals Software engineering in a team Who can take this class? Almost anyone Learn basic structure of network services Programming in C Learn some of the “joseki” (定石) of C Build experience with programming Doing is more important than listening! Software engineering in a team Makefiles, version control, interfaces, modularity, documentation, debugging,

Who’s this for? Who might want to take this class? Almost anyone working around IT Even if your goal is to be a VC or found an NGO, understanding this helps you talk intelligently to networking people Who should take this class? Anyone planning to work in computer systems (network manager/sysadmin, application or OS developer, researcher)

Prerequisites (前提) Minimum Have taken classes in Information Processing (情報処理) 「コン基礎」 or 「インターネット」 Helpful Basics of networks (IP addresses, etc.) Basic programming (editing, compiling, conditionals, loops, functions) Without this, your learning curve will be steep! For those with experience, first half of semester might be a little dull...

English! Lectures will be in English First step in GIGA Program アイドントスピークイングリシュ! 大丈夫。俺も日本語を話せないから、一緒に頑張ろう! This class is about doing, not listening Lectures are short, most is hands-on TA & SAs all speak 日本語 Slides from prior years (and this year!) available on my web page

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

Class Staff Faculty Assistants SA: 中島明日香 asp@sfc.wide.ad.jp Rodney Van Meter (rdv@sfc.wide.ad.jp) ‏ Yoshifuji 吉藤 yoshfuji@wide.ad.jp Assistants TA: Keisuke Muda (muda@sfc.wide.ad.jp) ‏ SA: 中島明日香 asp@sfc.wide.ad.jp SA: Kaori Ishizaki: kaori@sfc.wide.ad.jp

Class Plan Tuesdays, 2nd (11:10-12:40), ε11 Hands-on work every week No class 11/23 Only one class in January, for final presentations! You will be on your own for several weeks! First 45 minutes or so: lecture Last 45 min.: hands-one work Last 3 weeks, project work only Hands-on work every week End-of-term presentations 1/11

I Promise: If you work hard, you will learn more in this class than most others here Many SFC classes are about breadth, this one is about depth To pass, you will have to work hard! Almost every week, you will have to work outside of class TA, SAs and I are available to help English will be a tool, not a barrier

Term Project and Grading Homeworks first half of semester Team project 2nd half of semester Your grade depends primarily on project Team lives & dies together That’s the way it is in life!

Attendance Server Every week, we will record attendance via the network Do “by hand” first few weeks, then via program Protocol simple to start with, more complicated later

Students’ Backgrounds What year? C programming experience? Java programming experience? Classes? インターネットオペレーション インターネット ネットワークアーキテクチャ システムプログラミング

C Background C programming experience? Understand edit-compile-debug cycle? What environment (Unix, Windows, IDE, make)? Functions? Pointers (difficult concept, incredibly important and useful)? Memory management (hard!)?

今期の授業スケジュール(予定) 第1回 9/28:Introduction / イントロダクション 第2回 10/5:C言語の基礎~関数・変数・Makefile 第3回 10/12:C言語の基礎~コマンドライン引数・構造体・ポインタ 第4回 10/19:C言語の基礎~ポインタと配列・リスト構造 第5回 10/26: 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:ミニプロ最終発表

Programming Environment CNS Linux:ccx00,ccx01 Login via SSH 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 Submit homework via SFS

Programming Environment (2)‏ OK to use your own PC Windows: cygwin 注意:IPv6は動かないかも IPv6 important in this class, cygwin support still weak? Linux, BSD, Mac: native environment

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

Basics of Network Architecture Protocols Layered protocol model What’s a network application?

Protocol In order for two computers to talk, they have to share a language and follow a set of rules: a protocol is what they promise each other Without a protocol, they can’t talk to each other!  人間 20 20

Humans Use Protocols 電話の例 1) 受話器を上げる One speaking English, the other Japanese (probably) doesn’t work On phone, start with 「もし もし,xxです」 or “Hello” Same for computers UNIX-Windows間の通信 無線-有線間の通信 2) 電話番号を入力 5) 会話する 6) どちらかが受話器を置く 3) 着信を通知する 4) 受話器を上げる 7) 回線が切れる 21 21

OSI Layered Model Physical Layer Data Link Layer Network Layer Transport Layer Session Layer Presentation Layer Application Layer 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層 アプリケーション層 Signal Frame Packet Data ・各プロトコルの関係を階層構造でモデル化

1) Physical Layer Defines physical characteristics Media 規格 Signal strength/voltage, how to make numbers, etc. 電波強度、符号変調方式 Media Optical fiber, copper wire, electrical lines, satellite, radio... Usually standardized by some group( ITU-T,ISO,…)‏ 規格 X.25,IEEE,ATM,ISDN… 光)SONET,FDH…

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

3) Network Layer Independent of physical layer, how two hosts on Internet transfer data End-to-End Path control (routing)‏ IPv4,IPv6 Generally requires globally unique address

4) Transport Layer Layer that processes in a host usually use TCP,UDP Most protocols divide service by PORT

5) Session Layer One “session” – start to finish of communication between two apps Cooperatively managed between sender and receiver Generally handled by applications Most Internet apps one “session” is one transport-level connection

6) Presentation Layer セッションでやり取りされるデータの表現方法 や符号化、暗号化などを規定する層 Byte Order (“Endianness”) Least/Most Significant Bit (LSB/MSB)‏ Htonl(), Htons()‏ Usually handled by applications

7) Application Layer Agreed upon by two applications e.g., what Email contents look like (headers, etc.) Most applications handle layers 5 and up themselves

Internet Layered Model アプリケーション層 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 エンドノード 中継ノード エンドノード 送信元から中継ノード(ルータ)を通ってあて先に到達する 30 30

OSI Model & Internet Architecture アプリケーション層 Application Layer Web XML Webサービス Email NNTP ・・・ Messaging File transfer File sharing プレゼンテーション層 Presentation Layer セッション層 Session Layer トランスポート層 Transport Layer TCP UDP ネットワーク層 Network Layer IP データリンク層 Data Link Layer Ethernet xDSL Optical fiber 無線LAN (WLAN) 物理層 Physical Layer 31

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

ネットワークアプリケーションとは? 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言語に触れてみる

Practice Getting started “こんなのできるぜ”というたしなみのある人は 帰っていいよ login to CNS via SSH Create “Hello world” program with Makefile “こんなのできるぜ”というたしなみのある人は 帰っていいよ Once this is done, you can go home!

今日の環境 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

Compiling 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