狠狠撸

狠狠撸Share a Scribd company logo
今回は C# によるプログラムを書きます
コンピュータをお持ちの方は、6-2 ソケット通信で実験するプログラムを、動作させること
ができます
● Windows, Mac の方ともに Visual Studio 2017 Community がおすすめです
https://www.visualstudio.com/
● Linux の方は MonoDevelop が良いかと思います
http://www.monodevelop.com/
なお環境がない場合でも、講義の理解には支障ありません
第6回
コンピュータ ネットワーク
1. 名前解決 (DNS)
2. ソケット通信
3. その他の話題
6-1名前解決 (DNS)
ドメイン名システム (DNS)
世界中の IP アドレスを覚えることは現実的に不可能なので、名前解決という仕組みが
作られた
クライアント
DNS サーバ
172.217.24.142
「検索したい、http://172.217.24.142/ に行こう!」
とはならない
Google Web サーバ
「google.com の
IP アドレス教えてく
ださい」
172.217.24.142
DNS のキャッシュ化
通常は、DNS コンテンツ サーバに対してドメインの問い合わせを行うが、
負荷対策を目的として、内容をコピーしたサーバを用意しておく
クライアント
DNS コンテンツ サーバ
ゾーン example.local
A @ 10.2.3.1.
A www 10.2.3.4.
CNAME test www.
DNS キャッシュ サーバ
ゾーン転送
test.example.local の IP は?
10.2.3.4
test.example.local
の IP は?
10.2.3.4
ルート DNS サーバ
DNS サーバに対して、不明なドメインに対
する問い合わせが来た場合は、ルート サーバ
へさらに問い合わせを行う
ルート サーバは、IP アドレスが固定されて
いる
a.root-servers.net
(198.41.0.4)
b.root-servers.net
(199.9.14.201)
クライアント DNS サーバ
?
c.root-servers.net
(192.33.4.12)
m.root-servers.net
(202.12.27.33)
DNS による負荷分散 (ラウンドロビン)
同一のドメイン名に対して複数の IP アドレスを返答するように設定することが可能。こ
の場合は、クライアントは最初の IP アドレスを接続に利用する
場合によっては、地理的な位置に合わ
せて、返答する IP アドレスを変更する
ことも可能
クライアント DNS サーバ
ゾーン example.local
A @ 10.0.0.1.
A @ 10.0.0.2.
A @ 10.1.0.1.
A @ 10.1.0.2.
example.local は?
10.1.0.1 です
6-2ソケット通信
ソケット通信の実装
前回の解説において、TCP / UDP でのネットワーク通信では IP アドレスおよびポート
番号をしていして通信を行うと説明した。プログラミングでは以下のような関数を用いる。
これらの API やその仕組みを総称してソケットと呼ぶ
● int socket(int domain, int type, int protocol);
● int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
● int listen(int sockfd, int backlog);
● int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
● int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
● ssize_t send(int sockfd, const void *buf, size_t len, int flags);
● ssize_t recv(int sockfd, void *buf, size_t len, int flags);
● int shutdown(int sockfd, int how);
● int close(int fd);
TCP でのソケット通信の流れ
クライアントとして通信する場合
1. ソケットを作成する
2. 接続先を指定して、接続する
3. 送受信を行う
4. シャットダウンする
5. ソケットを閉じる
サーバとして通信する場合
1. ソケットを作成する
2. 待ち受けポートを決定する
3. 待ち受けを開始する
4. 接続を受ける
5. 送受信を行う
6. シャットダウンする
7. ソケットを閉じる
[課題] チャットを作る
TCP で接続し、それぞれ対話するクライアントとサーバを作成せよ
● クライアントはサーバに接続し、サーバからテキスト メッセージを受信し、テキスト
メッセージを送信せよ
● サーバは、いずれかのクライアントからもらった最後のテキストを、次に受理したク
ライアントに送信し、クライアントからテキスト メッセージを受理せよ
受信に失敗した場合は、空の文字列を受け取ったものとみなすのが良い。こうして作成
されたチャット プログラムの動作を確認し、どのような改良をするのが良いか考察せよ
6-3その他の话题
オーバーレイ ネットワーク
あるコンピュータ ネットワークの上に、さらに別のネットワークを概念的に形成する技術
をオーバーレイ ネットワークと呼ぶ
● Software Defined Network (SDN) - OpenFlow 等
ソフトウェアが規定するネットワークのこと。既存の L2, L3 のようなネットワーク構造ではなく、アプリケー
ション用途に応じて柔軟な通信経路が設定できる
● Peer to Peer 通信 (P2P) - BitTorrent 等
各接続ノードが対等に接続するような通信方法のこと。中央のサーバが存在しないので、大規模かつ障
害に強いネットワークを構成できる
● 分散ハッシュテーブル (DHT) - Chord 等
ひとつのハッシュ テーブルを複数のノードに分散させた上で管理する技術。ノード間での効率的なデータ
交換のための情報管理に用いることができる
Peer to Peer 通信とは
一般的に、多くのノードが対等の関係で通信する状態
ノード
コーディネータ
ノードクライアント
サーバ
クライアント
サーバ クライアントモデルでは、サーバが
単一障害点であり、通信遅延が発生しやす
い、またクライアント数が増加するとサーバ
に負荷がかかる等のデメリットがある
ノード同士が直接会話をし、コーディネータ
は、その最初の紹介だけを行うにとどめれ
ば、ノード数が爆発的に増加しても問題に
ならない。P2P 通信
分散ハッシュ テーブル (DHT)
ハッシュ テーブルを複数の計算機上に分散させて管理する技術を分散ハッシュ テーブ
ル (Distributed Hash Table, DHT) と呼ぶ。以下のような実装が著名
● Chord
● Kademlia
台帳上の情報はハッシュ テーブル上で扱うことができる。DHT はこれを分散管理できる
ようにする技術であることから、ブロックチェーン データを効率よく多くの参加ノードに配
布する方法として検討されている
インターネットの管理
インターネットに関係する業務を行う国際管理組織として ICANN が存在する
● ドメイン名の管理
● IP アドレスの割り当て
● 自律組織 (AS) 番号の割り当て
● ルート DNS サーバの管理
そのうち IP 割当等の管理は
IANA に委託しており、世界の地域
ごとに 5 つの RIR が管轄している https://ja.wikipedia.org/wiki/地域インターネットレジストリ より引
用
インターネット バックボーン
インターネット バックボーン (コア ネットワーク) は、インターネット接続等を提供する事
業者 (インターネット サービス プロバイダ (ISP)) 等の管理するスイッチ等から構成さ
れ、世界中をカバーする
大規模事業者や大学等研究機関、公的機関等で、多くの下位ネットワークを持つ組織
では、自律システム (AS) を形成し、また、これらのバックボーンに直接接続することが
ある
AS 同士では、BGP 等のプロトコルによって経路情報を交換し、世界中のインターネット
の接続が常に保たれるように制御している
(AS の例) Google https://ipinfo.io/AS15169
BGP ハイジャック
ブロックチェーンのトランザクションの中継を意図的に遅延させたり、分断させたりする攻
撃によって、Bitcoin ネットワークを混乱させることができる
(参考) Hijacking Bitcoin: Routing Attacks on Cryptocurrencies
https://btc-hijack.ethz.ch/
Tor (The Onion Router)
真の通信路を秘匿することができる。匿名性を高める目的で用いられる。通信社はガー
ド リレーに接続し、そこから他の中継リレーに接続を依頼し、さらに出口リレーから真実
の通信先に接続する
クライアント
リレー A
接続先
リレー C
リレー B
第6回 まとめ
1. 名前解決
● IP は人間には扱いにくいので、名前でサーバを識別
● ゾーン単位で DNS サーバは管理。キャッシュにコピー
● ルート DNS サーバがトップ レベル ドメイン (TLD) を管理
2. ソケット通信
● クライアント: ソケット作成、接続、読み書き、シャットダウン、閉じる
● サーバ: 上記の接続に代わり、バインド、待ち受け、受理
3. その他の話題
● オーバーレイ ネットワーク (SDN, P2P 通信, DHT)
● BGP ハイジャック
● Tor

More Related Content

What's hot (20)

Bitcoin testnet
Bitcoin testnetBitcoin testnet
Bitcoin testnet
Yuichiro Shibata
?
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
Naoya Inada
?
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
Kiyoshi Sawada
?
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
Kiyoshi Sawada
?
Nodejs
NodejsNodejs
Nodejs
和樹 川端
?
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
yumi_chappy
?
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
?
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
Koki Natsume
?
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Kentaro NOMURA
?
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
Keigo Ando
?
サーバレスモード搁罢惭贵笔
サーバレスモード搁罢惭贵笔サーバレスモード搁罢惭贵笔
サーバレスモード搁罢惭贵笔
itoz itoz
?
闯厂开発环境を晒す。
闯厂开発环境を晒す。闯厂开発环境を晒す。
闯厂开発环境を晒す。
Eiji Kuroda
?
パケット キャプチャで学ぶ SMB (CIFS) の基本
パケット キャプチャで学ぶSMB (CIFS) の基本パケット キャプチャで学ぶSMB (CIFS) の基本
パケット キャプチャで学ぶ SMB (CIFS) の基本
彰 村地
?
Web packaging IETF 側
Web packaging IETF 側Web packaging IETF 側
Web packaging IETF 側
yuki-f
?
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
?
0511 lt
0511 lt0511 lt
0511 lt
kataware
?
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
?
Minecraft modding 09
Minecraft modding 09Minecraft modding 09
Minecraft modding 09
Takunology
?
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
Naoya Inada
?
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
Kiyoshi Sawada
?
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ?サイクルの解剖
Kiyoshi Sawada
?
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
奥颈苍诲辞飞蝉10で飞辞谤诲2惫别肠を使ってみた
yumi_chappy
?
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
?
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
骋辞で学ぶ顿础辫辫(补颈锄耻.驳辞#2)
Koki Natsume
?
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Kentaro NOMURA
?
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
【第5回】渋谷Unity技術勉強会 - WebPlayer面白いよ!
Keigo Ando
?
サーバレスモード搁罢惭贵笔
サーバレスモード搁罢惭贵笔サーバレスモード搁罢惭贵笔
サーバレスモード搁罢惭贵笔
itoz itoz
?
闯厂开発环境を晒す。
闯厂开発环境を晒す。闯厂开発环境を晒す。
闯厂开発环境を晒す。
Eiji Kuroda
?
パケット キャプチャで学ぶ SMB (CIFS) の基本
パケット キャプチャで学ぶSMB (CIFS) の基本パケット キャプチャで学ぶSMB (CIFS) の基本
パケット キャプチャで学ぶ SMB (CIFS) の基本
彰 村地
?
Web packaging IETF 側
Web packaging IETF 側Web packaging IETF 側
Web packaging IETF 側
yuki-f
?
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
?
Minecraft modding 09
Minecraft modding 09Minecraft modding 09
Minecraft modding 09
Takunology
?

Similar to [Basic 6] DNS / ソケット通信 / その他 (20)

NATS on VCAP
NATS on VCAPNATS on VCAP
NATS on VCAP
Katsunori Kawaguchi
?
Interact2017:Windows Container "Overlay" Networking
Interact2017:Windows Container "Overlay" NetworkingInteract2017:Windows Container "Overlay" Networking
Interact2017:Windows Container "Overlay" Networking
wind06106
?
AWSとmod_pagespeedで 楽々サクサク高速化!!
AWSとmod_pagespeedで楽々サクサク高速化!!AWSとmod_pagespeedで楽々サクサク高速化!!
AWSとmod_pagespeedで 楽々サクサク高速化!!
aasakawa
?
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
Yu Nobuoka
?
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
Ryo Nakamaru
?
CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度
Koichi Shimozono
?
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
mganeko
?
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
?
サーバーの初歩的な话セミナー@大阪20120901
サーバーの初歩的な话セミナー@大阪20120901サーバーの初歩的な话セミナー@大阪20120901
サーバーの初歩的な话セミナー@大阪20120901
Masayuki Abe
?
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
Tomoyuki Obi
?
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
v6app
?
TCP connectionの保存と復元
TCP connectionの保存と復元TCP connectionの保存と復元
TCP connectionの保存と復元
mittyorz
?
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
mganeko
?
Alt#0x008 2017/5/20
Alt#0x008 2017/5/20Alt#0x008 2017/5/20
Alt#0x008 2017/5/20
Koki Natsume
?
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
NTT DATA OSS Professional Services
?
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそう
mganeko
?
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
?
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
?
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
?
Interact2017:Windows Container "Overlay" Networking
Interact2017:Windows Container "Overlay" NetworkingInteract2017:Windows Container "Overlay" Networking
Interact2017:Windows Container "Overlay" Networking
wind06106
?
AWSとmod_pagespeedで 楽々サクサク高速化!!
AWSとmod_pagespeedで楽々サクサク高速化!!AWSとmod_pagespeedで楽々サクサク高速化!!
AWSとmod_pagespeedで 楽々サクサク高速化!!
aasakawa
?
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
Yu Nobuoka
?
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
顿辞肠办别谤を使ったローカルでの开発から本番环境へのデプロイまで
Ryo Nakamaru
?
CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度
Koichi Shimozono
?
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
mganeko
?
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
?
サーバーの初歩的な话セミナー@大阪20120901
サーバーの初歩的な话セミナー@大阪20120901サーバーの初歩的な话セミナー@大阪20120901
サーバーの初歩的な话セミナー@大阪20120901
Masayuki Abe
?
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
これからのアフ?リ開発はIPv6対応て?行こう!(2014/09/20 OSC Hiroshima版)
v6app
?
TCP connectionの保存と復元
TCP connectionの保存と復元TCP connectionの保存と復元
TCP connectionの保存と復元
mittyorz
?
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
mganeko
?
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそう
mganeko
?
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
?
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
?
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
?

More from Yuto Takei (20)

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
?
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
?
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
?
开発チームにおける多様性のススメ
开発チームにおける多様性のススメ开発チームにおける多様性のススメ
开発チームにおける多様性のススメ
Yuto Takei
?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
?
ブロックチェーン技术者が梦见る未来
ブロックチェーン技术者が梦见る未来ブロックチェーン技术者が梦见る未来
ブロックチェーン技术者が梦见る未来
Yuto Takei
?
ブロックチェーン技术の课题と社会応用
ブロックチェーン技术の课题と社会応用ブロックチェーン技术の课题と社会応用
ブロックチェーン技术の课题と社会応用
Yuto Takei
?
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
?
ブロックチェーンの不动产登记への応用に関する検讨
ブロックチェーンの不动产登记への応用に関する検讨ブロックチェーンの不动产登记への応用に関する検讨
ブロックチェーンの不动产登记への応用に関する検讨
Yuto Takei
?
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
?
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
?
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
?
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
?
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
?
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
Yuto Takei
?
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
?
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
Yuto Takei
?
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
?
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
Yuto Takei
?
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
?
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
?
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
?
开発チームにおける多様性のススメ
开発チームにおける多様性のススメ开発チームにおける多様性のススメ
开発チームにおける多様性のススメ
Yuto Takei
?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
?
ブロックチェーン技术者が梦见る未来
ブロックチェーン技术者が梦见る未来ブロックチェーン技术者が梦见る未来
ブロックチェーン技术者が梦见る未来
Yuto Takei
?
ブロックチェーン技术の课题と社会応用
ブロックチェーン技术の课题と社会応用ブロックチェーン技术の课题と社会応用
ブロックチェーン技术の课题と社会応用
Yuto Takei
?
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
?
ブロックチェーンの不动产登记への応用に関する検讨
ブロックチェーンの不动产登记への応用に関する検讨ブロックチェーンの不动产登记への応用に関する検讨
ブロックチェーンの不动产登记への応用に関する検讨
Yuto Takei
?
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
?
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
?
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
?
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
?
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
?
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
Yuto Takei
?
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
?
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
Yuto Takei
?
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
?
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
[Basic 8] フ?ロセスとスレット? / 入出力 / シェル
Yuto Takei
?
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?

Recently uploaded (6)

TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptxTAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
SheanOrvinBalao
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
KeisukeHattori1
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
OpenRTM1
?
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptxTAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
SheanOrvinBalao
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
KeisukeHattori1
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
OpenRTM1
?

[Basic 6] DNS / ソケット通信 / その他

  • 1. 今回は C# によるプログラムを書きます コンピュータをお持ちの方は、6-2 ソケット通信で実験するプログラムを、動作させること ができます ● Windows, Mac の方ともに Visual Studio 2017 Community がおすすめです https://www.visualstudio.com/ ● Linux の方は MonoDevelop が良いかと思います http://www.monodevelop.com/ なお環境がない場合でも、講義の理解には支障ありません
  • 2. 第6回 コンピュータ ネットワーク 1. 名前解決 (DNS) 2. ソケット通信 3. その他の話題
  • 4. ドメイン名システム (DNS) 世界中の IP アドレスを覚えることは現実的に不可能なので、名前解決という仕組みが 作られた クライアント DNS サーバ 172.217.24.142 「検索したい、http://172.217.24.142/ に行こう!」 とはならない Google Web サーバ 「google.com の IP アドレス教えてく ださい」 172.217.24.142
  • 5. DNS のキャッシュ化 通常は、DNS コンテンツ サーバに対してドメインの問い合わせを行うが、 負荷対策を目的として、内容をコピーしたサーバを用意しておく クライアント DNS コンテンツ サーバ ゾーン example.local A @ 10.2.3.1. A www 10.2.3.4. CNAME test www. DNS キャッシュ サーバ ゾーン転送 test.example.local の IP は? 10.2.3.4 test.example.local の IP は? 10.2.3.4
  • 6. ルート DNS サーバ DNS サーバに対して、不明なドメインに対 する問い合わせが来た場合は、ルート サーバ へさらに問い合わせを行う ルート サーバは、IP アドレスが固定されて いる a.root-servers.net (198.41.0.4) b.root-servers.net (199.9.14.201) クライアント DNS サーバ ? c.root-servers.net (192.33.4.12) m.root-servers.net (202.12.27.33)
  • 7. DNS による負荷分散 (ラウンドロビン) 同一のドメイン名に対して複数の IP アドレスを返答するように設定することが可能。こ の場合は、クライアントは最初の IP アドレスを接続に利用する 場合によっては、地理的な位置に合わ せて、返答する IP アドレスを変更する ことも可能 クライアント DNS サーバ ゾーン example.local A @ 10.0.0.1. A @ 10.0.0.2. A @ 10.1.0.1. A @ 10.1.0.2. example.local は? 10.1.0.1 です
  • 9. ソケット通信の実装 前回の解説において、TCP / UDP でのネットワーク通信では IP アドレスおよびポート 番号をしていして通信を行うと説明した。プログラミングでは以下のような関数を用いる。 これらの API やその仕組みを総称してソケットと呼ぶ ● int socket(int domain, int type, int protocol); ● int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); ● int listen(int sockfd, int backlog); ● int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); ● int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); ● ssize_t send(int sockfd, const void *buf, size_t len, int flags); ● ssize_t recv(int sockfd, void *buf, size_t len, int flags); ● int shutdown(int sockfd, int how); ● int close(int fd);
  • 10. TCP でのソケット通信の流れ クライアントとして通信する場合 1. ソケットを作成する 2. 接続先を指定して、接続する 3. 送受信を行う 4. シャットダウンする 5. ソケットを閉じる サーバとして通信する場合 1. ソケットを作成する 2. 待ち受けポートを決定する 3. 待ち受けを開始する 4. 接続を受ける 5. 送受信を行う 6. シャットダウンする 7. ソケットを閉じる
  • 11. [課題] チャットを作る TCP で接続し、それぞれ対話するクライアントとサーバを作成せよ ● クライアントはサーバに接続し、サーバからテキスト メッセージを受信し、テキスト メッセージを送信せよ ● サーバは、いずれかのクライアントからもらった最後のテキストを、次に受理したク ライアントに送信し、クライアントからテキスト メッセージを受理せよ 受信に失敗した場合は、空の文字列を受け取ったものとみなすのが良い。こうして作成 されたチャット プログラムの動作を確認し、どのような改良をするのが良いか考察せよ
  • 13. オーバーレイ ネットワーク あるコンピュータ ネットワークの上に、さらに別のネットワークを概念的に形成する技術 をオーバーレイ ネットワークと呼ぶ ● Software Defined Network (SDN) - OpenFlow 等 ソフトウェアが規定するネットワークのこと。既存の L2, L3 のようなネットワーク構造ではなく、アプリケー ション用途に応じて柔軟な通信経路が設定できる ● Peer to Peer 通信 (P2P) - BitTorrent 等 各接続ノードが対等に接続するような通信方法のこと。中央のサーバが存在しないので、大規模かつ障 害に強いネットワークを構成できる ● 分散ハッシュテーブル (DHT) - Chord 等 ひとつのハッシュ テーブルを複数のノードに分散させた上で管理する技術。ノード間での効率的なデータ 交換のための情報管理に用いることができる
  • 14. Peer to Peer 通信とは 一般的に、多くのノードが対等の関係で通信する状態 ノード コーディネータ ノードクライアント サーバ クライアント サーバ クライアントモデルでは、サーバが 単一障害点であり、通信遅延が発生しやす い、またクライアント数が増加するとサーバ に負荷がかかる等のデメリットがある ノード同士が直接会話をし、コーディネータ は、その最初の紹介だけを行うにとどめれ ば、ノード数が爆発的に増加しても問題に ならない。P2P 通信
  • 15. 分散ハッシュ テーブル (DHT) ハッシュ テーブルを複数の計算機上に分散させて管理する技術を分散ハッシュ テーブ ル (Distributed Hash Table, DHT) と呼ぶ。以下のような実装が著名 ● Chord ● Kademlia 台帳上の情報はハッシュ テーブル上で扱うことができる。DHT はこれを分散管理できる ようにする技術であることから、ブロックチェーン データを効率よく多くの参加ノードに配 布する方法として検討されている
  • 16. インターネットの管理 インターネットに関係する業務を行う国際管理組織として ICANN が存在する ● ドメイン名の管理 ● IP アドレスの割り当て ● 自律組織 (AS) 番号の割り当て ● ルート DNS サーバの管理 そのうち IP 割当等の管理は IANA に委託しており、世界の地域 ごとに 5 つの RIR が管轄している https://ja.wikipedia.org/wiki/地域インターネットレジストリ より引 用
  • 17. インターネット バックボーン インターネット バックボーン (コア ネットワーク) は、インターネット接続等を提供する事 業者 (インターネット サービス プロバイダ (ISP)) 等の管理するスイッチ等から構成さ れ、世界中をカバーする 大規模事業者や大学等研究機関、公的機関等で、多くの下位ネットワークを持つ組織 では、自律システム (AS) を形成し、また、これらのバックボーンに直接接続することが ある AS 同士では、BGP 等のプロトコルによって経路情報を交換し、世界中のインターネット の接続が常に保たれるように制御している (AS の例) Google https://ipinfo.io/AS15169
  • 19. Tor (The Onion Router) 真の通信路を秘匿することができる。匿名性を高める目的で用いられる。通信社はガー ド リレーに接続し、そこから他の中継リレーに接続を依頼し、さらに出口リレーから真実 の通信先に接続する クライアント リレー A 接続先 リレー C リレー B
  • 20. 第6回 まとめ 1. 名前解決 ● IP は人間には扱いにくいので、名前でサーバを識別 ● ゾーン単位で DNS サーバは管理。キャッシュにコピー ● ルート DNS サーバがトップ レベル ドメイン (TLD) を管理 2. ソケット通信 ● クライアント: ソケット作成、接続、読み書き、シャットダウン、閉じる ● サーバ: 上記の接続に代わり、バインド、待ち受け、受理 3. その他の話題 ● オーバーレイ ネットワーク (SDN, P2P 通信, DHT) ● BGP ハイジャック ● Tor