[[プログラミングスレまとめ in VIP]]

* プログラマ的ネットワーク適当講座 [#rd3008d3]

本スレ『[[もうプログラミングスレは立てないっていったじゃないっ!!!!!!:http://yutori.2ch.net/test/read.cgi/news4vip/1199281140/]]』より

初稿: ID:i4cb04tnO氏

さらっと流されたらもったいないので一部修正の上再掲させて頂きました。

** インターネットとは [#yf96905a]
インターネットとは世界中の何十億というコンピュータが接続されている巨大なネットワークのことです.

インターネットはアメリカの軍事ネットワークが起源です.来るべき核戦争時代に備えていくつかの通信設備が破壊されても通信が続けられるような強固なネットワークを目指して開発されました.インターネットはこの特徴を受け継いでいます.

**OSI参照モデル [#z39b25ca]
インターネットは実際にはかなり複雑な仕組みで運用されています.が,実際にインターネットを楽しんだり,簡単なプログラミングをするなら深いことを知らなくても使えるようになっています.OSI参照モデルの項目を見てください.通信をする際にはお世話になるプロトコルはかなりたくさんありますが,インターネットを利用するならTCP/IPというものだけを知っていれば何とかなります.あとは下位のプロトコルやライブラリが補ってくれるので楽できるというわけです.

[[OSI参照モデル - Wikipedia>http://ja.wikipedia.org/wiki/OSI%E5%8F%82%E7%85%A7%E3%83%A2%E3%83%87%E3%83%AB]]

** 1 TCP/IPとは [#g58e78c4]
TCP/IPってのはプロトコル(コンピュータ同士の通信の決まり)です~
つまり通信するときの約束事インターネットもこれ使ってるので家庭内LANなんかもだいたいこれ~
ネットワークがからむ通信するならこれの知識が必要ですね

** 2 IPアドレス [#qb29a4f2]
まずはネットワークに繋がったコンピュータと通信するには相手を特定する必要があります~
そのためのネットワーク上の住所がIPアドレスです~
IPアドレスは32bit長で255.255.255.255のような形式で表されます~
IPアドレスはユニークな番号です(つまり重複がない)~
自分のIPアドレスが何か知りたいなら確認君で検索してみましょう~

** 3 ドメインネーム [#ydb7bb10]
普通の人がネットにアクセスするときIPアドレスはだいたい毎回変わります~
なので前回の接続先IPアドレスを使い回したりしないように~

さてIPアドレスは数字で人間には覚えにくいです~
しかもころころIPアドレスが変わったりすると不便です~
そこで数字の代わりに文字でアクセスできるような仕組みを考えました それがドメインネームです~
2ch.netとかgoogle.comとかね~

** 4 ポート [#tcac0788]
IPアドレスでパソコンまで特定できました~
しかし今のコンピュータではネットワークを使うプログラムはたくさん動いてます~
あなたの知らないところでも~
コンピューターが一つの穴からいろんな情報を出し入れしてては~
どのプログラムがどの情報を出し入れしているか混乱してしまう~
そこで偉い人はポートというものを作って通信をわけようと考えました~
ポートは0から65535までの番号が使えます 若い番号は何に使うのか決まっていて~
80番はhttp(hypertext transfer protocol)つまりHTML(webコンテンツ)の送受信があてられています~
あとの番号は忘れたので興味がある人は調べてみてください~

自分で使うときは適当に15356とか指定するといいと思います~
IPアドレスとポート番号を一緒に書くと~
188.234.211.17:15356~
となります 

** 5 ローカルループバックアドレス [#ycdc9daf]
さてプログラミング中はしょっちゅうテストしたくなります~
ネットワーク系のプログラミングなら必然的にサーバを立てる事も多いでしょう~
でもバグだらけのプログラムを公開されている鯖に上げてテストするのは気がひけます~
できれば自分のPCで鯖もクライアントも実行できたらデバッグも楽でいいですね~

そこで自分のアドレスをいちいち調べてやるのもいいですが実は特別なアドレスが用意されています~
それが127.0.0.1でローカルループバックアドレスとか仰々しい名前が付いていますが~
要するに常に自分自身を表します~
これでいちいち自分のアドレスを調べなくてもいいのでちょっち楽できますね~
ちなみにlocalhostといれても同じになります

** 6 プライベートアドレスとグローバルアドレス [#i9737362]
IPアドレスを調べる方法は確認君の他にもう一つあります~
コマンドライン(Dos窓・コマンドプロンプト)でipconfig(windows)を実行してみてください~
たぶん確認君とipconfigではアドレスが違う人がいるはずです~
それはグローバルアドレスとプライベートアドレスの違いからくるものです

なぜこんな不思議な事になっているかというと~
IPアドレスは32bitでした つまり最大43億くらいしか表現できません~
人口60億時代にこれは少ないわけです~
しかもうちの大学は駅弁のクセにクラスBのアドレスもらってます(つまり6万個くらいとってる)~
案の定足りなくなりました なんだかY2K問題思い出しますね~
そこでおめえら節約しろバカってことでプライベートアドレスってのが誕生しました

192.168.*.*というのがプライベートアドレスです~
他にもあるけどあんまつかわんし省略~
家庭内・企業内からインターネットにつながる直前まで通用するアドレスです~
だから192.168.24.1というアドレスはこの世に沢山存在します

さて一家にたくさんPCがある今では沢山のアドレスを必要とします~
そこで家のPCにはプライベートアドレスを設定します~
インターネットに繋ぐにはグローバルIPが必要なのでプロバイダさんに一個だけもらってみんなで使い回します~
そうすると家に何台PCがあってもグローバルIPは一個で済みます~
1ヶ月1IP生活といったところですかね

ipconfigではプライベートアドレスが表示され~
確認君ではグローバルアドレスが表示されたため違うアドレスが表示されたんですね

詳しくは本でもって読んでもらった方がいいと思います


講座終わり

*** 参考リンク [#zb383463]
-[[ネットワークプログラミングの基礎知識:http://x68000.q-e-d.net/~68user/net/]]
-[[Studying HTTP:http://www.studyinghttp.net/]]
// -[[IPA ISEC セキュア・プログラミング講座 > WEBプログラマコース:http://www.ipa.go.jp/security/awareness/vendor/programming/a00_main.html]]

***参考の参考リンク [#xdf7c97c]
-[[IPA ISEC セキュア・プログラミング講座:Webアプリケーション編:http://www.ipa.go.jp/security/awareness/vendor/programmingv2/web.html]]
-[[「新しいセキュア・プログラミング講座」@水無月ばけらのえび日記:http://bakera.jp/ebi/topic/2931]]~
>フレーム使うなよ!
-[[はてなブックマーク - HiromitsuTakagiのブックマーク / 2006年11月19日:http://b.hatena.ne.jp/HiromitsuTakagi/20061119#bookmark-862419]]~
9-2. 入力値チェックの手法 ― IPAセキュアプログラミング講座~
> 日本版サニタイズ脳の元凶(旧講座宛て)
-[[はてなブックマーク - HiromitsuTakagiのブックマーク / 2006年11月19日:http://b.hatena.ne.jp/HiromitsuTakagi/20061119#bookmark-3276771]]~
1-5. hiddenは危険(セッション変数を利用しよう) ― IPAセキュアプログラミング講座~
> 冒頭の「重要な情報はhiddenフィールドに入れてはならない」は完全に誤り。(旧講座宛て)

// この参考の参考リンクは余計かな…とりあえずおいて置きます。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS