Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Web技術の基本 2回目 / Introduction to Web technologies...
Search
muttan
December 22, 2017
Technology
0
260
Web技術の基本 2回目 / Introduction to Web technologies 2nd class
muttan
December 22, 2017
Tweet
Share
More Decks by muttan
See All by muttan
さわやか待ち時間LINE botを作った話 / Sawayaka LINE bot
bath_poo_
0
110
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
150
ISUCONってなんだ / What is ISUCON
bath_poo_
0
340
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
180
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
150
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
250
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
130
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
210
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
250
Other Decks in Technology
See All in Technology
Tokyo dbt Meetup #13 dbtと連携するBI製品&機能ざっくり紹介
sagara
0
240
ウォンテッドリーにおける Platform Engineering
bgpat
0
160
MCP Documentation Server @AI Coding Meetup #1
yyoshiki41
1
1.2k
AWSエンジニアがSAPのデータ抽出してみた
mayumi_hirano
0
110
データベースで見る『家族アルバム みてね』の変遷 / The Evolution of Family Album Through the Lens of Databases
kohbis
4
990
ペアーズにおけるData Catalog導入の取り組み
hisamouna
0
250
自分の軸足を見つけろ
tsuemura
1
140
滑らかなユーザー体験も目指す注文管理のマイクロサービス化〜注文情報CSVダウンロード機能の事例〜
demaecan
0
120
GitHub MCP Serverを使って Pull Requestを作る、レビューする
hiyokose
2
500
Amebaにおける Platform Engineeringの実践
kumorn5s
5
810
”知のインストール”戦略:テキスト資産をAIの文脈理解に活かす
kworkdev
PRO
8
2.5k
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.8k
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
118
51k
What's in a price? How to price your products and services
michaelherold
245
12k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
KATA
mclloyd
29
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Transcript
Webٕज़ͷجຊ 2ճ Keisuke KAMIYA
ࠓճͷςʔϚ
Chapter 2 WebͱΠϯλʔωοτٕज़
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • ΫϥΠΞϯταʔόϞσϧ • αʔό ωοτϫʔΫ্Ͱ, ใαʔϏεΛఏڙ͢ΔׂΛ ࣋ͭίϯϐϡʔλ(WebϖʔδΛϗετ͍ͯ͠Δଆ) • ΫϥΠΞϯτ
αʔό͔Βఏڙ͞ΕͨใαʔϏεΛར༻͢Δଆ ͷίϯϐϡʔλ(ҰൠϢʔβʔ)
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • Πϯλʔωοτ ੈքதͷLANʢࣗձࣾ, ֶߍͳͲͷൣғͷωοτϫʔ Ϋʣಉ࢜Λଓͨ͠, ੈքنͷେ͖ͳωοτϫʔΫͷ͜ ͱ. ͬͱ͍͏ͱ, IPΛ༻ͨ͠ੈքنͷωοτϫʔΫͷ
͜ͱΛΠϯλʔωοτͱݺͿ[1] ‣ ӡӦ͍ͯ͠Δͷ, ڧ͍ͯݴ͑ICANN(The Internet Corporation for Assinged Names and Numbers)ͱ IETF(Internet Engineering Task Force) [1] https://www.nic.ad.jp/ja/basics/beginners/internet.html
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • Internetʹଓ͢ΔʹΠϯλʔωοταʔϏεϓϩό Πμ(ISP)ͱܖ͢Δඞཁ͕͋Δ ‣ OCN, ϑϨοπ, ίϛϡϑΝ, ΒΒ, etc…
• ੈքதʹෳͷISP͕ଘࡏ͠, ͦΕΒ͕ଓ͠߹͏͜ͱͰ ̍ͭͷωοτϫʔΫ͕ܗ͞Ε͍ͯΔ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ ΠϯλʔωοτΛଓ͢ΔϓϩόΠμ(ISP), ֊ߏʹ ͳͬͯͭͳ͕͍ͬͯΔ. → IXʹͭͳ͕͍ͬͯΔ(ຢ, ͭͳ͕͍ͬͯΔ) • Internet Exchange(IX)
ϓϩόΠμʔಉ࢜Λଓ͢Δڌ. IX͕͋Δ͜ͱͰ, ϓϩ όΠμಉ͕࢜ଓ͢Δඞཁ͕ͳ͘ճઢͷΛݮΒ͢ ͜ͱ͕ग़དྷΔ → 20109݄ͷ࣌Ͱ͓Αͦ300ͷIX͕ଘࡏ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • 1࣍ϓϩόΠμ IXܦ༝Ͱଓ͍ͯ͠ΔΑ͏ͳେنͳϓϩόΠμ • ̎࣍ϓϩόΠμ 1࣍ͷԼʹҐஔ͢ΔதখنͳϓϩόΠμ զʑ͕ଓ͢Δࡍ, ࣍ ϓϩόΠμ
࣍ ϓϩόΠμ *9 ࣍ ϓϩόΠμ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ ࣍ *41 ࣍ *41 ࣍ *41 ࣍ *41 ࣍
*41 ࣍ *41 *9 *9 ࣍ *41 ࠃ *9 *41 *41 ւ֎ *9 *41 *41 ւ֎ LAN ࣍*41ಉ࢜Λ݁Ϳ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
ϓϩτίϧͱ
ίϯϐϡʔλಉ͕࢜௨৴Λߦ͏ͨΊʹ, ڞ௨ͷϧʔϧ(ϓ ϩτίϧ)͕ඞཁʹͳΔ → ϓϩτίϧ ωοτϫʔΫʹଓ͞Εͨػثಉ͕࢜௨৴Λ͢Δͨ Ίͷϧʔϧखॱͷ͜ͱ. ͜ΕΒΛϨΠϠʢ֊ߏ ʣʹͯ͠ཧ͢Δ •
ձΛྫʹߟ͑ͯΈΔ ϓϩτίϧͱ
ϓϩτίϧͱ υϥϚ໘ന͔ͬͨͶ લఏ:ࣄͷղऍ͕Ұக͍ͯ͠Δ લఏ: ຊޠΛ͍ͯ͠Δ લఏ:ిΛͬͯΛ͍ͯ͠Δ ϓϩτίϧΛձͰߟ͑Δ ಉ͡֊ʹ͓͚Δڞ௨ͷଋࣄˠϓϩτίϧ
ϓϩτίϧͱ ୈ/ ୈ/ ୈ/ ୈ/ ୈ/ ୈ/ ϓϩτίϧ
ϓϩτίϧ ϓϩτίϧ ૹ࿏ ΠϯλϑΣʔε ΠϯλϑΣʔε ΠϯλϑΣʔε ΠϯλϑΣʔε ίϯϐϡʔλA ίϯϐϡʔλB ಉ͡ಉ࢜ͷଋࣄ ػೳΛ ఏڙ
• ֤ͷϓϩτίϧಠཱ͍ͯ͠Δ → ͋ΔΛมߋͨ͠ͱͯ͠ଞʹӨڹΛ༩͑ͳ͍ → ಉ͡ಉ࢜ม͑ͯ௨৴ཱ͢Δ ‣ ֦ுੑॊೈੑʹΜͩγεςϜΛ࡞Մೳ ϓϩτίϧͱ :FTUFSEBZ`T57
ESBNB લఏ:ࣄͷղऍ͕Ұக͍ͯ͠Δ લఏ: ӳޠΛ͍ͯ͠Δ લఏ:ిΛͬͯΛ͍ͯ͠Δ ӳޠʹมΘͬͯ ͳ͍
• ֤ͷϓϩτίϧಠཱ͍ͯ͠Δ → ͋ΔΛมߋͨ͠ͱͯ͠ଞʹӨڹΛ༩͑ͳ͍ → ಉ͡ಉ࢜ม͑ͯ௨৴ཱ͢Δ ‣ ֦ுੑॊೈੑʹΜͩγεςϜΛ࡞Մೳ • ௨৴ʹඞཁͳػೳΛׂ͢Δ͜ͱͰ
→ ϓϩάϥϜ1ͭ1͕ͭίϯύΫτʹͳΔ → ͷڥքΛ໌֬Խ͢Δ͜ͱ͕ग़དྷΔ ‣ ϓϩάϥϜͷϞδϡʔϧԽͱಉ༷ͷߟ͑ ϓϩτίϧͱ
• ׂ͠, ֊ߏͰମܥԽͨ͠ͷͷ໊শ ‣ ωοτϫʔΫΞʔΩςΫνϟ ‣ ϓϩτίϧελοΫ ‣ ϓϩτίϧεΠʔτ ϓϩτίϧͱ
ϓϩτίϧඪ४Խͷྺ࢙
ϓϩτίϧඪ४Խͷྺ࢙ • ίϯϐϡʔλ௨৴ͷॳظ(1960) ϓϩτίϧͷ֊Խ, ඪ४Խҙࣝ͞Εͳ͔ͬͨ • 1974 IBM͕ωοτϫʔΫΞʔΩςΫνϟͱ͍͏ߟ͑ํΛҙࣝͨ͠ SNA(System Network
Architecture)Λ։ൃ • ͜ͷ͋ͱ֤͕ࣾ࣍ʑʹωοτϫʔΫΞʔΩςΫνϟΛൃද ‣ SNA(IBM) ‣ DECnet(DEC) ‣ FNA(Fujitsu) etc…
ϓϩτίϧඪ४Խͷྺ࢙ • Կ͕ʹͳΔ͔ʁ ֤ࣾͰ༷͕ҟͳΔͨΊ, ҟͳΔϝʔΧʔಉ࢜Ͱ௨৴͢ Δ͜ͱ͕Ͱ͖ͳ͍ ‣ ಉࣾ͡Ͱ, ϝʔΧʔ͕ҟͳΕ௨৴ෆՄೳ ‣
ϦϓϨʔεΛߦͳ͏ࡍ, Ҏલͱಉ͡ϝʔΧʔͷ ΛΘ͟ΔΛಘͳ͍ ίϯϐϡʔλωοτϫʔΫͷීٴʹো
ϓϩτίϧඪ४Խͷྺ࢙ • ඪ४Խͷػӡͷߴ·Γ ͜ͷ··ͰωοτϫʔΫͷීٴ͕ਐ·ͳ͍ͷͰ, ISO(ࠃࡍඪ४Խػߏ)͕ඪ४ԽΛߦͳ͏ → OSIϓϩτίϧ(Open System Interconnection Protocol)ͷੜ
‣ 1990ʹͳͬͯͬͱͨ͠
ϓϩτίϧඪ४Խͷྺ࢙ • TCP/IP(1980) UNIXಠࣗͷωοτϫʔΫΞʔΩςΫνϟΛ࠾༻ ‣ ࣌, UNIXֶज़ݚڀ༻Ͱ͞Ε͍ͯͨ ‣ ΧϦϑΥϧχΞେֶόʔΫϨʔߍͷBill Joy͕BSD
UNIXΛ࡞ ͠, ͦ͜ʹTCP/IP͕࣮͞Εͨ(1981RFCެ։, 1983࣮) → ιʔείʔυ͕ެ։͞Ε͍ͯͨͷͰ, ݚڀऀΛ࢝Ί༷ʑͳਓ ͕ӾཡՄೳͩͬͨ → TCP/IP͕ීٴ OSIϓϩτίϧੜͷཪͰ…
ϓϩτίϧඪ४Խͷྺ࢙ • OSI͕ීٴ͠ͳ͔ͬͨཧ༝ • ༷ͷࡦఆʹ͕͔͔࣌ؒΓ͗ͨͨ͢Ί, Λ࡞Δ͜ ͱ͕Ͱ͖ͳ͔ͬͨ • ωοτϫʔΫ, ίϯϐϡʔλͷਐาʹॊೈʹରԠ͢Δ
͜ͱ͕ग़དྷΔ৫༷͕ଘࡏ͠ͳ͔ͬͨ
ϓϩτίϧඪ४Խͷྺ࢙ • TCP/IP͕ීٴͨ͠ཧ༝ ‣ ͭͳ͕Δ͜ͱ࠷ॏࢹ - ࣮Λઌʹߦ༷ͬͯࡦఆ ‣ ༷ͯ͢ެ։͞ΕΔ -
RFC(Request for Comments)Ͱެ։
ϓϩτίϧඪ४Խͷྺ࢙ • OSIϓϩτίϧͲ͏ͳͬͨͷ͔ ݁ہීٴ͠ͳ͍··ऴΘͬͯ͠·͕ͬͨ, ͦͷաఔͰ࢈ ·ΕͨΨΠυϥΠϯOSIࢀরϞσϧʹ௨৴ʹඞཁͳػ ೳ͕ମܥతʹ͏·͘·ͱΊΒΕ͍ͯͨ → ωοτϫʔΫͷཧղ(ͱΓΘ͚TCP/IPͷཧղ)ʹ, OSI
ࢀরϞσϧ͕ޮՌత
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
TCP/IPͱ
TCP/IPͱ • TCP/IP Πϯλʔωοτʹଓ͢ΔͨΊͷ௨৴ϓϩτίϧҰࣜ ϓϩτίϧ ʢུশʣ ϓϩτίϧʢϑϧωʔϜʣ ༻్ )551 )ZQFS5FYU5SBOTGFS
1SPUPDPM 8FCϒϥβͱαʔόͷؒͰσʔλͷ ΓऔΓΛ͢Δ࣌ʹ༻ '51 'JMF5SBOTGFS1SPUPDPM ίϯϐϡʔλؒͰϑΝΠϧΛΓͱΓ͢Δ ͷʹ༻ 4.51 4JNQMF.BJM5SBOTGFS 1SPUPDPM ిࢠϝʔϧΛૹ৴͢Δ࣌ʹ༻ 101 1PTU0⒏DF1SPUPDPM ϝʔϧαʔό͔ΒࣗͷϝʔϧΛऔΓग़͢ ࣌ʹ༻͢Δ ϓϩτίϧͷྫ
TCP/IPͱ TCP/IP4ʹ͔Ε͍ͯΔ ϓϩτίϧελοΫ 04*ࢀরϞσϧ 5$1*1 ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ ϓϨθϯςʔγϣϯ ηογϣϯ τϥϯεϙʔτ
τϥϯεϙʔτ ωοτϫʔΫ Πϯλʔωοτ σʔλϦϯΫ ωοτϫʔΫΠϯλʔϑΣʔε ཧ
TCP/IPͱ ͦΕͧΕͷ, ࣍ͷΑ͏ͳׂΛ͍࣋ͬͯΔ ֤ͷׂ 5$1*1 ׂ ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ͝ͱͷΓऔΓΛ نఆ τϥϯεϙʔτ
σʔλͷׂํ๏ ࣭ͳͲΛنఆ Πϯλʔωοτ ωοτϫʔΫؒͷ௨৴Λنఆ ωοτϫʔΫΠϯλʔϑΣʔε ίωΫλܗঢ়पͳͲ ཧతͳ༷Λنఆ
TCP/IPͱ ϓϩτίϧͷྫ Ҿ༻ɿhttp://www.cellbiol.com/bioinformatics_web_development/chapter-1-internet-networks-and-tcp-ip/the-tcpip-family-of-internet-protocols/
֤ͷػೳ(E-mailΛͱʹ֤ͨ͠ͷׂ)
֤ͷػೳʢΞϓϦέʔγϣϯʣ • ΞϓϦέʔγϣϯಉ࢜ͷ௨৴ʹؔΘΔ෦Λنఆ • ϝʔϧιϑτͷػೳΛ2ͭʹ͚ͯߟ͑Δ ‣ ௨৴ʹؔΘΒͳ͍ػೳ ໊݅, ຊจ, ը૾,
etc… ‣ ௨৴ʹؔΘΔػೳ ೖྗ͞ΕͨσʔλΛૹ৴͢Δ → ΞϓϦέʔγϣϯͷׂ
֤ͷػೳʢΞϓϦέʔγϣϯʣ • ૹ৴ϘλϯΛԡ͢ͱ, ΞϓϦέʔγϣϯϓϩτίϧͷॲཧ͕։࢝ ‣ ࣍ͷΑ͏ͳใ͕ϔομͱͯ͠༩͞ΕΔ - ຊจͷใ - ѼઌͲ͔͜
• ड৴ଆ, ૹΒΕ͖ͯͨϔομͱσʔλΛղੳͯ͠, HDDʹอଘ͢ ΔͳͲඞཁͳॲཧΛߦ͏ ‣ ͏·͘ड৴Ͱ͖ͳ͍߹, ΤϥʔϝοηʔδΛฦ͢ʢΞϓϦ έʔγϣϯݻ༗ͷΤϥʔॲཧʣ ‣ ϝʔϧΛૹ৴ͯ͠, ड৴ଆ͕ిࢠϝʔϧΛ֨ೲ͢Δͱ͜Ζ·ͰΛ ΞϓϦέʔγϣϯ͕ߦ͍ͬͯΔ
֤ͷػೳʢϓϨθϯςʔγϣϯʣ • ίϯϐϡʔλͷγεςϜʹΑͬͯ, σʔλͷදݱܗࣜ(จ ࣈίʔυͳͲ)ҟͳΔ ‣ ૹ৴ଆ, ड৴ଆͰ͍ͬͯΔιϑτOS͕ҟͳΔͱ, ظͨ͠ͱ͓Γͷද͕ࣔ͞Εͳ͍ࣄ͕͋Δ •
ʮίϯϐϡʔλݻ༗ͷදݱํࣜʯ͔ΒʮωοτϫʔΫ શମͰڞ௨ͷදݱํࣜʯʹม͠, ड৴ݩͰʮίϯ ϐϡʔλݻ༗ͷදݱํࣜʯʹ͢ͷ͕ϓϨθϯςʔ γϣϯ
֤ͷػೳʢϓϨθϯςʔγϣϯʣ • σʔλͷѹॖํ๏จࣈίʔυ, ҉߸Խ๏ͳͲΛنఆ ‣ OSΞϓϦέʔγϣϯʹݻ༗ͳσʔλͷදݱܗࣜͱ, ωοτϫʔΫ্Ͱ౷Ұ͞ΕͨදݱܗࣜͱΛ૬ޓม ͢Δ ૹ৴ݩ:Windows ૹ৴ݩ:Unix
Encode:Shift-JIS ڞ௨ͷίʔυʹม Encode:ISO-2022-JP Encode:EUC-JP ௨৴࿏Ͱͷϧʔϧ
֤ͷػೳʢηογϣϯʣ • ηογϣϯ ؔ࿈ͷ͋Δ1࿈ͷॲཧͷ։͔࢝Βऴྃ·Ͱͷશظؒ ૹ৴ଆ ड৴ଆ ϝʔϧૹ৴։࢝ OK From :
xxxx ૹ৴ OK To : xxxx ૹ৴ OK ຊจ ૹ৴ OK ηογϣϯ ίωΫγϣϯ ड͚ख֬ೝ ૹΓख֬ೝ
֤ͷػೳʢηογϣϯʣ ηογϣϯͰ • ηογϣϯΛ͍ͭ։࢝͢Δ͔ ‣ ίωΫγϣϯཱ֬ͷλΠϛϯά • ηογϣϯΛ͍ͭऴྃ͢Δ͔ ‣ ίωΫγϣϯ։์ͷλΠϛϯά(λΠϛϯάΛࢦఆ
͢Δ͚ͩͰ, ࣮ࡍʹ։์͢ΔΘ͚Ͱͳ͍) • ͲͷΑ͏ʹίωΫγϣϯΛ͏͔ ‣ ௨৴ํࣜͷબ
֤ͷػೳʢτϥϯεϙʔτʣ • ηογϣϯͷࢦࣔʹैͬͯ, ࣮ࡍʹίωΫγϣϯΛཱ֬, ։์Λ ߦ͏ ‣ ϗετؒͷཧతͳ௨৴खஈΛ࡞Δ • ύέοτΛదͳΞϓϦέʔγϣϯʹৼΓ͚
• ΞϓϦέʔγϣϯʹదͨ͠σʔλͷ࣭อূ ‣ 1bitͷޡΓڐ͞Εͳ͍σʔλ(E-mail, FTP, etc…) - ίωΫγϣϯܕ௨৴ ‣ σʔλͷਖ਼֬ੑΑΓ, ࿈ଓੑ͕ॏཁͳσʔλ(ετϦʔϛϯά σʔλ) - ίωΫγϣϯϨεܕ௨৴
֤ͷػೳʢτϥϯεϙʔτʣ • ૹ৴ͨ͠σʔλ͕ԿΒ͔ͷཁҼͰಧ͔ͳ͔ͬͨ߹ ‣ ίωΫγϣϯܕ௨৴(TCP) - ࠶ૹཁٻΛߦ͏ ‣ ίωΫγϣϯϨεܕ௨৴(UDP) -
࠶ૹߦΘͳ͍ • σʔλసૹͷ৴པੑΛอূ͢Δ
֤ͷػೳʢτϥϯεϙʔτʣ • ૹ৴ͨ͠σʔλ͕ԿΒ͔ͷཁҼͰಧ͔ͳ͔ͬͨ߹ ‣ ίωΫγϣϯܕ௨৴(TCP) - ࠶ૹཁٻΛߦ͏ ‣ ίωΫγϣϯϨεܕ௨৴(UDP) -
࠶ૹߦΘͳ͍ • σʔλసૹͷ৴པੑΛอূ͢Δ
• ωοτϫʔΫͱωοτϫʔΫ͕ଓ͞ΕͨڥͰ, ૹ৴ ϗετ͔Βड৴ϗετ·ͰσʔλΛಧ͚Δ ֤ͷػೳʢωοτϫʔΫʣ Ethernet Ethernet ATM PPP (ઐ༻ઢ)
ATM σʔλϦϯΫ1۠ؒͷ௨৴Λ࣮ݱ ωοτϫʔΫ࠷ऴత·Ͱͷ௨৴(End to End)࣮ݱ σʔλϦϯΫ ωοτϫʔΫ
• ͜ΕΒͷػೳΛ࣮ݱ͢Δʹ, ҎԼͷ2͕ඞཁ ‣ Ѽઌ(ΞυϨε)ͷཧ - IPΞυϨεΛ༻͍ͯཧ ‣ ܦ࿏੍ޚ -
ϧʔλΛ༻͍ͯܦ࿏੍ޚ • IP(Internet Protocol)͕͜ΕΒΛఏڙ͍ͯ͠Δ ֤ͷػೳʢωοτϫʔΫʣ
• σʔλϦϯΫͱ ֤ͷػೳʢσʔλϦϯΫʣ Internet router router σʔλϦϯΫ
σʔλϦϯΫ • ཧతʹͭͳ͕͍ͬͯΔϊʔυؒͷ௨৴Λ࣮ݱ ྡؒϊʔυ ྡؒϊʔυͰແ͍ ྡؒϊʔυͰແ͍ ಉҰϦϯΫ্ʹ͋Δ router router
֤ͷػೳʢσʔλϦϯΫʣ • ྡؒϊʔυͰ௨৴Λߦ͏ͨΊʹ, ௨৴ͷ࠷খ୯ҐͰ͋ ΔύέοτʢϑϨʔϜʣΛ࡞Δ • ྡϊʔυಉ࢜Λࣝผ͢ΔͨΊͷΞυϨε͕ඞཁ ‣ MACΞυϨε(Media Access
Control Address) ‣ ػثͦΕͧΕʹׂΓͯΒΕ͓ͯΓ, جຊతʹมߋ ෆՄೳʢϕϯμʹΑ͕ͬͯҟͳΔʣ
֤ͷػೳʢཧʣ • ϑϨʔϜΛߏ͢ΔϏοτྻΛཧ৴߸ʹม • έʔϒϧͷछྨ, ܗঢ়ͷن֨ΛܾΊΔ ిؾ৴߸ʹม
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
IPΞυϨεͱϙʔτ൪߸ • IPΞυϨε ֤ϊʔυΛҰҙʹࣝผ͢ΔͨΊͷΞυϨε ‣ Πϯλʔωοτ্ͰҰҙͳΞυϨε - άϩʔόϧIPΞυϨε ‣ LANͰͷҰҙͳΞυϨε
- ϓϥΠϕʔτIPΞυϨε ‣ άϩʔόϧIPΞυϨε, ICANN͕ཧ͍ͯ͠Δ(ຊ ࠃͰJPNIC͕ཧ)
IPΞυϨεͱϙʔτ൪߸ *1ΞυϨεͷ ྨ ར༻༻్ ཧ৫ આ໌ άϩʔόϧ*1 ΠϯλʔωοτͰ ͷ௨৴ *$"//ͱ
ͦͷԼ෦৫ +1/*$ Πϯλʔωοτʹ ͓͍ͯҰҙͰͳ͚ ΕͳΒͳ͍ ϓϥΠϕʔτ*1 -"/Ͱͷ௨৴ -"/ͷ ཧऀ ɾಉҰ-"/ͰΞυ Ϩεʹॏෳ͕ͳ͍Α͏ ʹઃఆ ɾ֎෦ͱଓ͢Δͨ Ίʹ/"5͕ඞཁ ICANN : Internet Corporation for Assigned Names and Numbers JPNIC : Japan Network Information Center
IPΞυϨεͱϙʔτ൪߸ • IPv4ͷΞυϨεݸ 32bitͰදݱ͞ΕΔ → 2^32 → 43ԯݸ • IPv6ͷΞυϨεݸ
128bitͰදݱ͞ΕΔ → 2^128 → 340ݸ 340ͱ, 3.4×10^38ݸͷΞυϨε͕ଘࡏ͢Δ͜ͱʹͳ Δ. • ΞδΞଠฏ༸ҬͰ, IPv4ΞυϨε͢Ͱʹރׇ ʲࢀߟʳhttps://www.nic.ad.jp/ja/ip/ipv4pool/
• ϙʔτ൪߸ ΞϓϦέʔγϣϯΛࣝผ͢ΔͨΊͷΞυϨε ‣ IPΞυϨεͰ૬खͷίϯϐϡʔλΛಛఆ, σʔλϦϯΫͰͷ ૬खͷࣝผʹMACΞυϨεΛ༻ )551 DMJFOU 1035
5$1 IPΞυϨεͱϙʔτ൪߸ '51 αʔό 1035 5$1 44) αʔό 1035 5$1 4.51 αʔό 1035 5$1 )551 αʔό 1035 5$1 '51 DMJFOU 1035 5$1 %BUB *1 ϗετ 172.23.12.14 Ѽઌ ϙʔτͰࣝผ
• ϙʔτ൪߸ར༻Ͱ͖Δࣈͷൣғ͕ݶΒΕ͍ͯΔ(ܾ ΊΒΕ͍ͯΔ) IPΞυϨεͱϙʔτ൪߸ ϙʔτͷൣғ ϙʔτͷྨ આ໌ ʙ Σϧϊϯϙʔτ 8FMMLOPXO1PSU
͢ͰʹαʔϏεϓϩτίϧʹ ׂΓͯΒΕ͍ͯΔ ʙ Ϩδελʔυϙʔτ ιϑτΣΞϕϯμͷ ಠࣗΞϓϦέʔγϣϯͰ༻ ʙ μΠφϛοΫϙʔτ ࣗ༝ʹ༻Մೳ
IPΞυϨεͱϙʔτ൪߸ ϙʔτ൪߸ αʔϏε໊ ༰ GUQ pMFUSBOTGFS <$POUSPM> TTI
44)3FNPUF-PHJO 1SPUPDPM IUUQ 8PSME8JEF8FC )551 OUQ /FUXPSL5JNF 1SPUPDPM IUUQT IUUQQSPUPDPMPWFS 5-444- Σϧϊϯϙʔτͷྫ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
• URL Πϯλʔωοτ্ͷϦιʔεΛද͢จࣈྻͷ͜ͱ URLͱυϝΠϯ http://example.com/index.html httpΛ༻͢Δ example.comʹΞΫηε index.htmlΛཁٻ URLͷྫ
• URLͷߏจ URLͱυϝΠϯ http://example.com:80/index.html ᶃ ᶄ ᶅ ᶆ ໊শ ༰
ᶃ εΩʔϜ໊ ϓϩτίϧͷࢦఆ IUUQ GUQ pMF FUDʜ ᶄ ϗετ໊ ଓઌͷαʔόΛࢦఆ ᶅ ϙʔτ൪߸ ଓઌͷαʔόͷϙʔτ൪߸ ʢ௨ৗলུՄೳʣ ᶆ ύε໊ ଓઌͷࢿݯΛࢦఆ
• ϗετ ωοτϫʔΫͷίϯϐϡʔλʹ͚ΒΕ໊ͨલ • υϝΠϯ ωοτϫʔΫʹ͚ΒΕ໊ͨલ URLͱυϝΠϯ XXX EC QD
ϗετ໊ FYBNQMFDPN υϝΠϯ໊ XXXFYNBQMFDPN QDFYNBQMFDPN FQDN FQDN:Fully Qualified Domain Name ϗετ໊ͱυϝΠϯ໊ͱܨ͛ͨͷ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
DNS • DNS(Domain Name System) ϗετ໊ʢٴͼυϝΠϯ໊ʣͱIPΞυϨεͷରԠ͚Λޮ Α͘ཧ͢ΔͨΊͷγεςϜ ‣ υϝΠϯΛ֊ߏʹͯ͠อ͍࣋ͯ͠Δ ‣
͜ͷγεςϜ͕͋Δ͜ͱͰ, ར༻ऀIPΞυϨεΛ ଧͭʢهԱ͓ͯ͘͠ʣඞཁ͕ͳ͍ ‣ ѼઌIPΞυϨε͕มߋʹͳͬͯ, DNSϨίʔυΛมߋ ͢Εྑ͍ - ར༻ऀมΘΒͣFQDNͰΞΫηεՄೳ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail ͰғΜͩwwwผ
DNS • ໊લղܾ DNSαʔό͕ߦͳ͏໊લͷݕࡧ ‣ DNSαʔόωʔϜαʔόͱݺΕΔ ‣ DNSࢄσʔλϕʔεͳͷͰ, ֤υϝΠϯͰ໊લΛ ཧ͍ͯ͠Δ
www.google.co.jpͷΞυϨεʁ 172.217.31.131 DNSαʔό ΫϥΠΞϯτ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail hamako-thsυϝΠϯͷத, hamako-thsυϝΠϯͰཧ͢Δ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail jpυϝΠϯͷத,jpυϝΠϯͰཧ͢Δ
DNS • DNSࢄσʔλϕʔεͳͷͰ, ֤υϝΠϯͰ໊લΛ ཧ͍ͯ͠Δ ‣ ࣗͷॴଐ͍ͯ͠ΔυϝΠϯҎ֎ͷ໊લ, ͲͷΑ͏ ʹ໊ͯ͠લղܾΛߦͳ͏ͷ͔ʁ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ XXXHPPHMFDPKQͷ ΞυϨεʁ
XXXHPPHMFDPKQΘ͔Βͳ͍͚Ͳ ϧʔτͳΒͬͯΔʜ google.co.jp
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό google.co.jp XXXHPPHMFDPKQͷ ΞυϨεʁ
XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ KQͳΒͬͯΔ*1ΞυϨ ε YYYYYYYYY ͍ ߹ Θ ͤ ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ DPKQͳΒͬͯΔ*1Ξυ Ϩε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ HPPHMFDPKQͳΒͬͯΔ *1ΞυϨε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ *1ΞυϨε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ճ XXXHPPHMFDPKQͷΞυϨε
YYYYYYYYYYYͰ͢ google.co.jp
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ճ google.co.jp
͍ ߹ Θ ͤ ճ ͍߹Θͤ ճ ͍߹Θͤ ճ ͍ ߹ Θ ͤ ճ ͍߹Θͤ ࠶ؼత͍߹Θͤ ɹʜ࠷ऴతͳ͑Λཁٻ ෮త͍߹Θͤ ʜతͷ݁Ռ͕ಘΒΕΔ·Ͱ ͍߹ΘͤΛ܁Γฦ͢
DNS • Ϧκϧό DNSαʔόʹ͍߹ΘͤΛ͢ΔϓϩάϥϜ ‣ ελϒϦκϧό - ࠶ؼత͍߹ΘͤΛ͢ΔϦκϧό - DNSΛར༻͢ΔιϑτʢϒϥβʣʹΈࠐΈࡁ
‣ ϑϧαʔϏεϦκϧό - ໊લղܾ͕ྃ͢Δ·Ͱ, ෮త͍߹ΘͤΛߦͳ͏Ϧκ ϧό - ϧʔταʔόͷIPΞυϨεࣄલʹ͍ͬͯΔඞཁ͕͋Δ
DNS • Ωϟογϡαʔό ໊લղܾͨ݁͠ՌΛҰఆ࣌ؒΩϟογϡ͢Δ ‣ ௨ৗ, ϑϧαʔϏεϦκϧόΩϟογϡαʔόʹ ͳ͍ͬͯΔ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
HTTP • HTTP(Hyper Text Transfer Protocol) ϋΠύʔςΩετͷΓऔΓΛඪ४Խͨ͠ͷ ‣ ϋΠύʔςΩετͷཁٻ, ૹ৴खॱ
‣ Webϖʔδ͕ଘࡏ͠ͳ͍߹, సૹ͢Δ߹ εςʔλείʔυ ҙຯ ϦΫΤετޭ YY ϦμΠϨΫτ ېࢭ͞Ε͍ͯΔ ݟ͔ͭΒͳ͔ͬͨ खॱΛඪ४Խ͢Δ͜ͱͰ, ࡞ݩʹΑΔґଘΛݮΒ͢ ΩʔϫʔυɿHTTP
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 1. ΫϥΠΞϯτ͕URLΛࢦఆ 2. WebαʔόʹHTTPϦΫΤετΛૹΔ 3. Webαʔό͕ϦΫΤετΛղੳ 4. ΫϥΠΞϯτϨεϙϯεΛฦ͢ 5.
ϨεϙϯεΛWebϒϥβ͕ղੳ͠දࣔ͢Δ ᶃ ᶄHTTP Request ᶅ ᶆResponse ᶇ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 1. ΫϥΠΞϯτ͕URLΛࢦఆ URL(Uniform Resource Locator)Λࢦఆͯ͠ϦΫΤετ http://example.com/index.html httpΛ༻͢Δ example.comʹΞΫηε index.htmlΛཁٻ
URLͷҰൠతͳදݱܗࣜ ʢεΩʔϜ໊ʣɿʢεΩʔϜ͝ͱͷදݱܗࣜʣ ΩʔϫʔυɿURL
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 2. WebαʔόʹHTTPϦΫΤετΛૹΔ ։࢝ߦɾϔομɾϘσΟͰߏ͞Ε͍ͯΔ • ։࢝ߦ HTTPͷϝιου(GET, POST, PUTͳͲ)ͱϦΫΤετର, HTTPόʔδϣϯใ
• ϔομ User-AgentAccept-Type, Content-TypeͳͲ • ϘσΟ ૹ৴͍ͨ͠σʔλͦͷͷ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ • HTTPϔομͷྫ https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_RequestsΑΓҾ༻ ։࢝ߦ ϘσΟ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 3. Webαʔό͕ϦΫΤετΛղੳ 4. ΫϥΠΞϯτϨεϙϯεΛฦ͢ • εςʔλεߦ ϓϩτίϧͷόʔδϣϯ(௨ৗHTTP/1.1), εςʔλείʔυ, εςʔλεϝοηʔδ
• ϔομʔ EtagConent-TypeͳͲ༷ʑͳใ • ϘσΟ ϦΫΤετͨ͠σʔλͦͷͷ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ • Ϩεϙϯεϔομͷྫ https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_RequestsΑΓҾ༻ ։࢝ߦ ϘσΟ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 5. ϨεϙϯεΛWebϒϥβ͕ղੳ͠දࣔ͢Δ ࣍ͷΑ͏ͳσʔλ͕ฦͬͯ͘Δ <!DOCTYPE html> <html lang="en"> <head> <meta
charset="UTF-8"> <title>Document</title> </head> <body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html> ಘΒΕͨσʔλWebϒϥβ͕ղऍͯ͠දࣔ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head>
<body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html> 1ͭͷϦΫΤετͰಘΒΕΔσʔλ1ͭͷΈ → ը૾σʔλͳͲ, ͋ΒͨΊͯϦΫΤετΛߦͳ͏
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ HTMLϖʔδΛಘͨ͋ͱ… ha.pngΛ͍ͩ͘͞ Ͳ͏ͧ(200 OK) <!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html>
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • HTTP͋͘·ͰσʔλͷΓऔΓ͚ͩΛنఆ͓ͯ͠Γ, ௨৴ʹؔͯ͠, TCPIPͱ͍ͬͨԼҐʹ͍͛ͯΔ ‣ ԼҐʹ͞ΕΔࡍʹ, ϔομ͕Ճ͞ΕΔ - ΧϓηϧԽ
‣ ্Ґʹ͞ΕΔͱ͖, ࣗͷͷϔομΛऔΓআ ͍ͨͷ͕͞ΕΔ - ඇΧϓηϧԽ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ )551 σʔλ )551 σʔλ TCP ϔομ )551 σʔλ TCP
ϔομ IP ϔομ )551 σʔλ TCP ϔομ IP ϔομ Πʔαωοτ ϔομ )551 σʔλ )551 σʔλ TCP ϔομ )551 σʔλ TCP ϔομ IP ϔομ )551 σʔλ TCP ϔομ IP ϔομ Πʔαωοτ ϔομ ΞϓϦέʔγϣϯ τϥϯεϙʔτ Πϯλʔωοτ ωοτϫʔΫ ΠϯλϑΣʔε ԼҐʹ͞ΕΔࡍʹ ϔομ͕Ճ͞ΕΔ ʢΧϓηϧԽʣ ্Ґʹ͞ΕΔࡍʹ ༻ࡁΈϔομ͕औΓ আ͔ΕΔ ʢඇΧϓηϧԽʣ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ύέοτ ϔομ͖σʔλͷ૯শ ‣ ֤ʹΑͬͯύέοτʹݻ༗ͷ໊শ͕͋Δ ‣ PDU(Protocol Data Unit)ͱ͍͏
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ ͷ໊শ ໊শ ΞϓϦέʔγϣϯ ϝοηʔδ ϓϨθϯςʔγϣϯ ϝοηʔδ ηογϣϯ ϝοηʔδ τϥϯεϙʔτ
ʢίωΫγϣϯܕ௨৴ʣ ηάϝϯτ τϥϯεϙʔτ ʢίωΫγϣϯϨεܕ௨৴ʣ σʔλάϥϜ ωοτϫʔΫ σʔλάϥϜ σʔλϦϯΫ ϑϨʔϜ ωοτϫʔΫ ίωΫγϣϯϨεܕ௨৴
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ωοτϫʔΫͷPDUσʔλάϥϜ ‣ IPίωΫγϣϯϨεͳϓϩτίϧ • ίωΫγϣϯϨεͳͷͰ, ड͚औΓଛͶͯ࠶ૹΛ͢ΔՄ ೳੑ͋Δ ‣
ԿނίωΫγϣϯϨεܕͳͷ͔ʁ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ίωΫγϣϯϨεܕͰ͋Δཧ༝ → ػೳͷ؆ུԽͱߴԽͷͨΊ • ίωΫγϣϯཱ֬ͳͲ, ίωΫγϣϯܕΛ࠾༻͢Δͱ࣮ ͕ෳࡶʹͳΓ, ॲཧԼ͢Δ
‣ ৴པੑͷ͋Δ௨৴ʢίωΫγϣϯܕͷ௨৴ʣΛߦ͍ ͍ͨ߹, ্Ґ͕ఏڙ͢Εྑ͍ - TCP͕ؤுΔ
ࢀߟαΠτ
ࢀߟαΠτ • TCP/IPීٴҎલ, ͯ͢1ສͷ1ͩͬͨ http://www.atmarkit.co.jp/fnetwork/tanpatsu/24tcpip/ 01.html • TCP/IPͲͷΑ͏ʹීٴ͍ͯͬͨ͠ͷʁ http://ascii.jp/elem/000/000/428/428741/ •
TCP/IPͱΠʔαωοτ http://www.atmarkit.co.jp/ait/articles/0101/23/ news002.html
ࢀߟॻ • ϚελϦϯάTCP/IP ೖฤ ୈ5൛, ΦʔϜࣾ, 2012 • ͜ͷҰͰશ෦Θ͔Δ Webٕज़ͷجຊ,
ιϑτόϯΫΫ ϦΤΠςΟϒ, 2017