オペレーティングシステムとネットワークプログラミング 担当 : 吉藤英明 yoshfuji+camp2008 AT wide.ad.jp セキュリティ & プログラミングキャンプ /08 OS プロトコルスタック (C)2008 YOSHIFUJI Hideaki,

Similar documents
情報ネットワーク演習 2007 年 10 月 11 日 ( 木 )

Microsoft PowerPoint pptx

BSDソケットによるIPv6プログラミングを紐解く

PowerPoint Presentation

システムインテグレータのIPv6対応

情報通信の基礎

Microsoft PowerPoint - ie ppt

v6prog-05.ppt

スライド タイトルなし

Microsoft PowerPoint pptx

tp2ps output file

2.5 トランスポート層 147

ict2-.key

第1回 ネットワークとは

Mobile IPの概要

2. ネットワークアプリケーションと TCP/IP 2.1. クライアント / サーバモデル TCP/IP プロトコルに従うネットワークアプリケーションの典型的モデルは, クライアント / サーバモデルである. クライアント / サーバモデルでは, クライアントからの要求に対してサーバがサービスを提

スライド 1

chapter 3 chapter 単純な HTTP クライアント / サーバ 61 HTTP クライアントの実装 62 HTTP サーバの実装 Chapter2 のまとめ 67 UDP 3-1 UDP の特徴とプログラミング UDP のプログラミング 71

<4D F736F F F696E74202D DB A B C C815B E >

tcp/ip.key

AsteriskのIPv6対応について

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ

TFTP serverの実装

CD U.S. Government License Proprietary computer software. Valid license from HP required for possession, use or copying. Consiste

file:///C:/www/

NetLec17TCPIP1.ppt

Microsoft PowerPoint - ie ppt

PowerPoint プレゼンテーション

センサーデバイスへの仮想IP割り当て実験

Microsoft PowerPoint - about_stack_ ppt [互換モード]

実験 6 通信基礎実験 1 目的 ネットワークを通じてデータ転送を行うことを体験的に学ぶために 本実験ではT CP/IPプロトコルを使い ワークステーション間で通信を行うクライアントサーバモデルのプログラムを作成する 2 解説 1 ネットワークとプロトコルネットワーク ( コンピュータネットワーク

IPv4aaSを実現する技術の紹介

IP 2.2 (IP ) IP 2.3 DNS IP IP DNS DNS 3 (PC) PC PC PC Linux(ubuntu) PC TA 2

IPv6における

システムインテグレータにおけるIPv4アドレス在庫枯渇に向けた取り組み

パケットモニター (Wireshark) の使い方 第 1 版 1.Wireshark とは ネットワーク上 (LAN ケーブルに流れている ) のパケットを取得して その中の情報を画面に表示するソフトウェア (LAN アナライザーまたはパケットモニター ) の 1 つに Wiresh

本資料について

Microsoft Word - SE第15回.doc

演算増幅器

Microsoft PowerPoint pptx

情報ネットワーク演習 2006年10月5日

15群(○○○)-8編

(Microsoft PowerPoint - janog23-server-ipv6-rel-public.ppt [\214\335\212\267\203\202\201[\203h])

Microsoft PowerPoint ISC203(印刷版).ppt

情報通信ネットワークの仕組み (2)

PowerPoint プレゼンテーション

IPv4

注意 2013 年くらいに調べた話なので 変化していることもあるかもしれません 2

AN424 Modbus/TCP クイックスタートガイド CIE-H14

講座内容 第 1 回オープンネットワークの概念と仕組み ( 講義 90 分 ) 基本的なネットワークの構成及び伝送技術について大規模化 マルチプロトコル化を中心に技術の発展と 企業インフラへの適用を理解する その基本となっている OSI 7 階層モデルについて理解する (1) ネットワークの構成と機

アドレス枯渇対応タスクフォース アドレス枯渇対応タスクフォースとは 来るべき アドレス 枯渇を より円滑に乗り越えるために 19の組織 団体 (2009 年 8 月時点 ) が力を合わせてアドレス枯渇の影響を ネットワークシステムやアプリケーション開発に係わる様々な立場から検証すると同時に それらの

計算機システム概論

Microsoft PowerPoint ppt [互換モード]

F コマンド

アマチュア無線のデジタル通信

スライド 1

IPv6 普及 高度化推進協議会 IPv6/IPv4 共存 WG アプリケーションの IPv6 対応検討 SWG 2011 年 9 月に発足 IPv6 移行ガイドライン策定 IPv6 Ready ロゴプログラム Web アプリケーションガイドライン策定基盤となる Socket プログラミングの IP

スライド 1

Managed Firewall NATユースケース

TCP/IPの概要

TCP UDP TCP UDP send()sendto()sendmsg() recv()recvfrom()recvmsg() OS Passive Active TCP UDP IP TCP UDP MTAMail Transf

インターネットで個人放送局を開くには (1)

Microsoft PowerPoint - 12_2008_0717.pptx

/*

集中講義 インターネットテクノロジー 第5回

1) // 2) I/O 3) Japan Advanced Institute of Science and Technology 2013/07/26 1

ソフトウェア開発実践セミナー ネットワークの基礎と UNIX ネットワークプログラミング 金子勇 土村展之 情報理工学系研究科数理情報学専攻 2002 年 11 月 6 日 ( 第 4

山添.pptx

(Microsoft PowerPoint - IPv6_summit_r2.ppt [\214\335\212\267\203\202\201[\203h])

IP L09( Tue) : Time-stamp: Tue 14:52 JST hig TCP/IP. IP,,,. ( ) L09 IP (2017) 1 / 28

Exam : 日本語版 Title : Introducing Cisco Data Center Networking Vendor : Cisco Version : DEMO 1 / 4 Get Latest & Valid J Exam's Question a

1.indd

IP IPv4-IPv6

1013  動的解析によるBOTコマンドの自動抽出

インターネット,LAN,ネットワークに関する知識

スライド 1

平成18年度電気関係学会東海支部連合大会

Microsoft PowerPoint - 廣海.pptx

付録 2 システムログ一覧 () 攻撃経路 1. ファイアウォール (FW) ネットワーク型 IPS/IDS Web サーバ AP サーバ DB サーバ プロキシサーバ エラーログ SSL ログ AP ログ ホストログ 非 日時 ファイアウォールホスト名 ファイアウォールルール名及び番号 インバウン

3 3.1 LAN ISDN (IP) 2 TCP/UDP IP IP IP IP (Ethernet) Ethernet LAN TCP/UDP LAN Ethernet LAN 2: Ethernet ATM, FDDI, LAN IP IP IP 3 IP 2 IP IP IP IP IP 3

ゴール インターネットの動作原理を理解する インターネットは様々な技術が連携して動作する 家族に聞かれて説明できるように主要技術を理解する

030403.インターネット問題

Packet Tracer: 拡張 ACL の設定 : シナリオ 1 トポロジ アドレステーブル R1 デバイスインターフェイス IP アドレスサブネットマスクデフォルトゲートウェイ G0/ N/A G0/

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

4-5. ファイアウォール (IPv6)

4-4. ファイアウォール (IPv4)

Oracle DatabaseとIPv6 Statement of Direction

Oracle DatabaseとIPv6 Statement of Direction

通信プログラムの試作ーーー UDP を用いたじゃんけんゲームシステム ーーーー裘彬濱 南山大学情報理工学部 ソフトウェア工学科青山研究室

おらんかにクライアント操作マニュアル

InfoPrint 5577/5579 ネットワーク設定ガイド(はじめに、目次)

III 1 R el A III 4 TCP/IP プロトコルと 関連する各種上位プロトコルの基礎を学ぶ 具体的には 各プロトコルを実装したコマンド ( アプリケーションプログラム ) を実行し 各プロトコルの機能等を確認する また 同じプロトコルを実装したコンピュータ間では OS

TCP/IP Internet Week 2002 [2002/12/17] Japan Registry Service Co., Ltd. No.3 Internet Week 2002 [2002/12/17] Japan Registry Service Co., Ltd. No.4 2

PowerPoint Presentation

SOC Report

スライド 1

Microsoft PowerPoint - 14_2010_0203.pptx

untitled

Microsoft Word - Outlook Web Access _IE7_ Scenario.doc

1 Linux UNIX-PC LAN. UNIX. LAN. UNIX. 1.1 UNIX LAN. 1.2 Linux PC Linux. 1.3 studenta odd kumabari studentb even kumabari studentc odd kumabari student

Transcription:

オペレーティングシステムとネットワークプログラミング 担当 : 吉藤英明 E-Mail: yoshfuji+camp2008 AT wide.ad.jp 1

アウトライン 自己紹介 組織化と抽象化 人 プログラム 行為 通信と標準化 オープンシステム TCP/IP ソケット API( 実習 ) 2

自己紹介 1974 年東京生まれ 博士 ( 情報理工学 ) ( 東京大学 ) 慶應義塾大学大学院政策 メディア研究科 USAGI プロジェクト設立 / コアメンバー Linux における IPv6 スタックの研究開発 Linux カーネルネットワーキング分野 [IPv4/IPv6] 共同保守担当 (Co-Maintainer) 3

組織化 大きくなるとわかりづらくなる みんなばらばら 近いものや一定の役割で固まる 組織 全体として わかりやすくする 組織化 優先で本末転倒にならないように注意 4

組織化 ( というか分解 )[ 演習 ] 人 を分解してみよう いろいろな方法がある 5

プログラムの組織化 プログラムでも同様 見通しがよくなる 不具合を直しやすくなる 期待している結果か検証しやすくなる 複数人で手分けをして開発しやすくなる 十分に 汎用 であれば別のプログラムに流用できる 機能を増やしやすくする そうでないと... みんなばらばら 全体としてうまく動かなくなる 6

プログラムの分類 BIOS (Basic Input/Output System) 最も低レベルの入出力のための基本的なプログラム カーネル (Kernel; 核 ) 特権操作 ハードウェア抽象化 資源管理と効率的な配分 ユーザランド (Userland) シェル (Shell) 各種 アプリケーション など 7

ユーザランド アプリケーション (Application) Firefox, OpenOffice.Org, Emacs,... 全てのアプリケーションが最初から全て書かれているわけではない ライブラリ (Library) よく使うものをまとめたもの Linux: *.so, *.a /lib をみてみよう Windows: *.DLL, *.LIB 8

オペレーティングシステムとミドルウェア オペレーティングシステム (Operating System) 目的とする機能を実現するために種々のソフトウェアをまとめたもの 一般にカーネルからユーザスペースまでを含む ミドルウェア (Middleware) アプリケーションとカーネルとの仲立ち 比較的大規模なライブラリとその管理用アプリケーション群 例 : データベース クラスタ制御... 9

行為 の分解 [ 演習 ] ( ルーズリーフでない ) ノートに整理してメモを取る ( 遠くの ) 友達に連絡をとる 10

行為 の分類 ノートに書く と 電話で話す は同じか? 行為者から見ると同じ側面も多い 出す (write()) 入れ (read()) コンピュータ上の ファイル と 通信 プログラムから見るとデータの入出力 ファイル 名前 に紐付けられた記憶域との情報の出し入れ 通信 特定の 相手との情報のやりとり 11

通信 情報の送受信 ( 放送を含む ( 広義 )) ユニキャスト, マルチキャスト, ブロードキャスト ソケット 通信の端点 ( 受話器 ) 通信相手の決定はユーザランドの責任 一般にライブラリの助けを借りる 12

通信と標準化 多種多様なシステムへの接続 / 利用要求 手順 ( プロトコル ) の標準化 API の標準化 オープンシステム 通信プロトコルの代表 : TCP/IP IETF (Internet Engineering Task Force) API(Application Programming Interface(BSD ソケット API) POSIX (Portable Operating System Interface) ほか 13

インターネット D S パケット ( 小包 ) の バケツリレー 方式による転送 14

TCP/IP ( インターネットプロトコルスイート ) アプリケーション (Application) 層 : HTTP, SMTP,... トランスポート (Transport) 層 : TCP, UDP,... インターネット (Internet) 層 : IPv4, IPv6 データリンク (Data Link) 層 : イーサネット (Ethernet),... 物理 (Physical) 層 : イーサネット物理層 15

TCP/IP HTTP SMTP DNS... IGMP ICMP TCP UDP NDP MLD ICMPv6 ARP IPv4 IPv6 Ethernet PPP... 16

TCP/IP ( インターネットプロトコルスイート ) アプリケーション アプリケーション TCP バケツリレー方式による転送 TCP IP IP IP IP Link Link Link Link Link Link 17

アプリケーション (Application) 層 アプリケーション TCP IP Link ソケット HTTP(Web ページ ), SMTP( メール ), XMPP( メッセンジャー ),... 実際に TCP/IP 通信を行おうとする層 ソケットは下層との API 18

トランスポート (Transport) 層 アプリケーション TCP IP Link TCP, UDP など 適切なアプリケーションプロセスへデータを配送 ポート番号 仮想回線 ( コネクション ) 誤り訂正 再送 フロー制御 19

インターネット (Internet) 層 アプリケーション TCP IP IP(IPv4, IPv6) ネットワークを介したホスト間 ( エンド ツー エンド ) の通信を実現 IP アドレス Link 20

データリンク (Data Link) 層 アプリケーション TCP IP Ethernet など 近隣ノード間の通信を担当 MAC(Media Access Control) アドレス Ethernet: EUI-48 Link 21

BSD ソケット API 通信の端点 プロトコル アドレス ポート番号 (5 tuples) 接続手順 (TCP) 受信 : ソケット生成 (socket) ポート番号指定 (bind) 聴取開始 (listen) 受信 (accept) 通信 終了 (close) 送信 : ソケット生成 (socket) ( ポート番号指定 (bind) ) あて先指定 (connect) 通信 終了 (close) その他 ソケットオプション (setsockopt, getsockopt) 22

BSD ソケット API: コア関数群 int socket(int domain, int type, int protocol); int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); int listen(int sockfd, int backlog); int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 23

BSD ソケット API(2) 名前解決 ( ホスト名 / 文字列表現 IP アドレス ) getaddrinfo() / getnameinfo() inet_pton() / inet_ntop() 旧式 gethostbyname() / gethostbyaddr() inet_addr() / inet_aton() 24

BSD ソケット API(2): 名前変換関数群 (1) int getaddrinfo(const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res); struct addrinfo { int ai_flags; /* フラグ */ int ai_family; /* プロトコルファミリ AF_xxx */ int ai_socktype; /* ソケットタイプ SOCK_xxx */ int ai_protocol; /* プロトコルタイプ IPPROTO_xxx */ socklen_t ai_addrlen; /* ソケットアドレス構造体の長さ */ char *ai_canonname; /* ノードの正式名 */ struct sockaddr *ai_addr; /* ソケットアドレス構造体 */ struct addrinfo *ai_next; /* 次のアドレス情報 */ }; プロトコルに依存しない名前変換関数 socket() や bind() にそのまま利用できる形で情報を得られる 25

BSD ソケット API(2): 名前変換関数群 (2) int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags); プロトコルに依存しないアドレス - 名前変換関数 accept() や getpeerinfo() など カーネルから得られる構造をそのまま使うことができる 26

簡単な通信プログラムを作ってみよう TCP 利用 エコークライアント 相手のサービスに接続 標準入力に入力した文字列を相手に送信 fgets, NUL 文字終端 相手から返ってきた文字列を表示 エコーサーバ 特定のポートを開いて接続を待ち受ける 接続されたら 接続元を画面に表示 相手から入力された入力を相手に送り返す 27

チャットサーバ 通信プログラムの発展 : チャットサーバ 複数人が同時にひとつのサーバに接続できるようする select() 接続されてきたらほかの参加者に知らせる 入力は全ての参加者に送る さらなる発展 文字コード変換 : iconv() 発言時刻の表示を加える ないしょ 機能... 28

通信プログラムの発展 (2): Web サーバへのアクセス (1) Web サーバへのアクセス URL: http://www.example.com/path/to/file.html http:// スキーム ( プロトコル ) www.example.com ホスト名 /path/to/file.html パス 29

通信プログラムの発展 (2): Web サーバへのアクセス (2) HTTP プロトコル サーバの 80 番ポートに接続 GET /path/to/file.html HTTP/1.0[CR][LF] Host: www.example.com[cr][lf] [CR][LF] 30

商標その他 この資料は セキュリティ & プログラミングキャンプ 2008 のためにまとめられたものです Linux, UNIX, Windows その他社名 製品名 サービス名などは 各社の商標または登録商標です 31

付録 32

IP アドレスの枯渇 IPv4 アドレス 2 32 =3.4 10 9 (43 億 ) 2012 年前後には枯渇すると予測 33

IPv4 アドレスプールの減少 Source: http://www.potaroo.net/tools/ipv4/ IANA アドレスプール枯渇予測 : 2011/2/8 RIR アドレスプール枯渇予測 : 2011/12/21 (2008 年 8 月 5 日現在予測 ) 34

IP バージョン 6 特徴 アドレス空間の拡張 2 128 =3.4 10 38 (340 澗 ( かん )) セキュリティやモビリティ ( 移動透過性 ) のサポート 現行のほとんどのオペレーティングシステムやルータは対応 Vista, Linux, *BSD,... 35

IPv6 ヘッダ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version Traffic Class Flow Label +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Payload Length Next Header Hop Limit +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Source Address + + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Destination Address + + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 36